Changeset 2096
- Timestamp:
- 10/07/07 08:01:39 (1 year ago)
- Files:
-
- trunk/doc/README.txt (modified) (24 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/doc/README.txt
r2092 r2096 85 85 86 86 You can compile other programs from sources directly on the CD. All locations 87 on the CD can be written to (including '/usr').87 on the CD can be written to (including /usr). 88 88 89 89 VMWARE ISSUE … … 93 93 VMware Workstation 5.x or earlier or VMware Server 1.0.x or earlier. This is 94 94 a known VMware bug. The solution is to upgrade to VMware Workstation 6.x, or 95 to choose 'BusLogic'as the virtual SCSI controller type instead of the96 default 'LSI Logic'.95 to choose "BusLogic" as the virtual SCSI controller type instead of the 96 default "LSI Logic". 97 97 98 98 The same issue will be present on an LFS system built from this CD. … … 105 105 background. If it is not correct to acquire the network settings via DHCP 106 106 in your location, or if you want to use dialup or GPRS connection, run the 107 'net-setup'command.107 "net-setup" command. 108 108 109 109 If you don't want the CD to start dhcpcd on the detected network cards, 110 type 'linux nodhcp'at the boot loader prompt. This may be required for110 type "linux nodhcp" at the boot loader prompt. This may be required for 111 111 wireless connections that utilize WEP or WPA encryption. 112 112 113 113 Users of wireless cards based on the Atheros chipset have to install the 114 proprietary 'madwifi'driver. The driver is provided in the precompiled form115 in the '/drivers'directory (if you loaded the CD contents to RAM, you have to116 mount the CD and look into '/media/cdrom/drivers'instead). To install it,114 proprietary "madwifi" driver. The driver is provided in the precompiled form 115 in the /drivers directory (if you loaded the CD contents to RAM, you have to 116 mount the CD and look into /media/cdrom/drivers instead). To install it, 117 117 run the following commands: 118 118 119 cd /drivers120 tar -C / -xf madwifi-x86-6.3-r2052-kernel-[kernel_version].tgz121 tar -C / -xf madwifi-x86-6.3-r2052-tools.tgz122 depmod -ae123 modprobe ath_pci119 cd /drivers 120 tar -C / -xf madwifi-x86-6.3-r2052-kernel-[kernel_version].tgz 121 tar -C / -xf madwifi-x86-6.3-r2052-tools.tgz 122 depmod -ae 123 modprobe ath_pci 124 124 125 125 CONFIGURING X … … 130 130 does not support 24-bit color depth, or if your monitor is not Plug-n-Play 131 131 compatible (in other words, does not tell its characteristics to Xorg via DDC). 132 In such cases, you have to edit the '/etc/X11/xorg.conf'file manually, using132 In such cases, you have to edit the /etc/X11/xorg.conf file manually, using 133 133 vim, joe or nano, as described below. 134 134 135 In 'Section "Device"', specify the driver for your video card, e.g.:136 137 Section "Device"138 Identifier "Generic Video Card"139 Driver "vesa"140 EndSection141 142 In 'Section "Monitor"', specify the allowed frequency ranges for your135 In Section "Device", specify the driver for your video card, e.g.: 136 137 Section "Device" 138 Identifier "Generic Video Card" 139 Driver "vesa" 140 EndSection 141 142 In Section "Monitor", specify the allowed frequency ranges for your 143 143 monitor. If unsure, consult the manual that came with your monitor. If 144 144 such information is not there, but you know a working resolution and refresh 145 rate, run the 'gtf'command. E.g., if your monitor can handle 1280x1024@85Hz:146 147 $ gtf 1280 1024 85145 rate, run the "gtf" command. E.g., if your monitor can handle 1280x1024@85Hz: 146 147 $ gtf 1280 1024 85 148 148 149 149 NOTE: You must specify the refresh rate of 60 Hz for VGA-connected LCD monitors. … … 151 151 Then look at the output: 152 152 153 # 1280x1024 @ 85.00 Hz (GTF) hsync: 91.38 kHz; pclk: 159.36 MHz154 Modeline "1280x1024_85.00" 159.36 1280 1376 1512 1744 1024 1025 1028 1075 -HSync +Vsync153 # 1280x1024 @ 85.00 Hz (GTF) hsync: 91.38 kHz; pclk: 159.36 MHz 154 Modeline "1280x1024_85.00" 159.36 1280 1376 1512 1744 1024 1025 1028 1075 -HSync +Vsync 155 155 156 156 Put the synchronization ranges that contain the printed values. For the above … … 158 158 "Monitor" section: 159 159 160 Section "Monitor"161 Identifier "Generic Monitor"162 Option "DPMS"163 # Option "NoDDC" # for broken monitors that164 # report max dot clock = 0 MHz165 HorizSync 30-92 # because gtf said "hsync: 91.38 kHz"166 VertRefresh 56-86 # because an 85 Hz mode has been requested167 # the Modeline may also be pasted here168 Option "PreferredMode" "1280x1024_85.00" # only for the "intel" driver169 EndSection170 171 In the 'Section "Screen"', change the 'DefaultDepth' and add the '"Modes"'172 line to 'SubSection "Display"'with the proper color depth. If you added custom173 Modelines, you have to specify them exactly as defined, i.e. '"1280x1024_85.00"'174 in the example above. The built-in Modelines have names similar to '"1024x768"',160 Section "Monitor" 161 Identifier "Generic Monitor" 162 Option "DPMS" 163 # Option "NoDDC" # for broken monitors that 164 # report max dot clock = 0 MHz 165 HorizSync 30-92 # because gtf said "hsync: 91.38 kHz" 166 VertRefresh 56-86 # because an 85 Hz mode has been requested 167 # the Modeline may also be pasted here 168 Option "PreferredMode" "1280x1024_85.00" # only for the "intel" driver 169 EndSection 170 171 In the Section "Screen", change the DefaultDepth and add the "Modes" 172 line to SubSection "Display" with the proper color depth. If you added custom 173 Modelines, you have to specify them exactly as defined, i.e. "1280x1024_85.00" 174 in the example above. The built-in Modelines have names similar to "1024x768", 175 175 without explicit specification of the refresh rate. 176 176 177 When you are finished editing '/etc/X11/xorg.conf', run 'startx'.177 When you are finished editing /etc/X11/xorg.conf, run "startx". 178 178 179 179 PROPRIETARY VIDEO DRIVERS 180 180 ------------------------- 181 181 182 The CD contains pre-built proprietary video drivers in the '/drivers'directory182 The CD contains pre-built proprietary video drivers in the /drivers directory 183 183 (if you loaded the CD contents to RAM, you have to mount the CD and look into 184 '/media/cdrom/drivers'instead). They are never selected by default by the184 /media/cdrom/drivers instead). They are never selected by default by the 185 185 autoconfiguration process. Here is how to enable them. 186 186 187 NVIDIA 188 ~~~~~~ 189 190 cd /drivers 191 tar -C / -xf NVIDIA-Linux-[userspace_arch]-x86-6.3-r2052-glx.tgz 192 tar -C / -xf NVIDIA-Linux-[kernel_arch]-x86-6.3-r2052-kernel-[kernel_version].tgz 193 depmod -ae 194 ldconfig 195 vim /etc/X11/xorg.conf # use the "nvidia" driver instead of "vesa" or "nv" 196 197 FGLRX 198 ~~~~~ 199 200 cd /drivers 201 tar -C / -xf fglrx-x710-x86-6.3-r2052-[userspace_arch]-1.tgz 202 tar -C / -xf fglrx-module-x86-6.3-r2052-[kernel_arch]-1_kernel_[kernel_version].tgz 203 depmod -ae 204 ldconfig 205 vim /etc/X11/xorg.conf # use the "fglrx" driver instead of "vesa" or "ati" 187 ### NVIDIA ### 188 189 cd /drivers 190 tar -C / -xf NVIDIA-Linux-[userspace_arch]-x86-6.3-r2052-glx.tgz 191 tar -C / -xf NVIDIA-Linux-[kernel_arch]-x86-6.3-r2052-kernel-[kernel_version].tgz 192 depmod -ae 193 ldconfig 194 vim /etc/X11/xorg.conf # use the "nvidia" driver instead of "vesa" or "nv" 195 196 ### FGLRX ### 197 198 cd /drivers 199 tar -C / -xf fglrx-x710-x86-6.3-r2052-[userspace_arch]-1.tgz 200 tar -C / -xf fglrx-module-x86-6.3-r2052-[kernel_arch]-1_kernel_[kernel_version].tgz 201 depmod -ae 202 ldconfig 203 vim /etc/X11/xorg.conf # use the "fglrx" driver instead of "vesa" or "ati" 206 204 207 205 CUSTOMIZING THE CD CONTENTS … … 210 208 It is possible to burn a customized version of the official Linux From 211 209 Scratch LiveCD, with your own files added. To do that, follow the 212 instructions in the '/root/lfscd-remastering-howto.txt'file.210 instructions in the /root/lfscd-remastering-howto.txt file. 213 211 214 212 AUTOSSHD … … 218 216 you have to customize the CD. Create the following files: 219 217 220 '/.autosshd'::218 /.autosshd: 221 219 This is the file that indicates that the sshd daemon should be 222 220 started automatically. It should be empty. 223 221 224 '/root/.ssh/authorized_keys'::222 /root/.ssh/authorized_keys: 225 223 Add your public key to that file in order to be able to log in. 226 Alternatively, modify '/etc/shadow'.227 228 '/etc/shadow'::224 Alternatively, modify /etc/shadow. 225 226 /etc/shadow: 229 227 Edit this file if you want to allow root to login using a password via 230 228 ssh. It is more secure to use public key based authentication instead. 231 229 232 '/etc/ssh/ssh_host_dsa_key', '/etc/ssh/ssh_host_rsa_key'::233 Create those files as described in the 'ssh-keygen(1)'manual page. If you230 /etc/ssh/ssh_host_dsa_key, /etc/ssh/ssh_host_rsa_key: 231 Create those files as described in the *ssh-keygen(1)* manual page. If you 234 232 do not do that, random host keys will be generated for you automatically 235 233 during the boot process. This is less secure, because you cannot verify 236 234 them. 237 235 238 '/etc/sysconfig/network-devices/ifconfig.eth0'::236 /etc/sysconfig/network-devices/ifconfig.eth0: 239 237 Configure a known static IP address there, as described in the LFS book, 240 section '7.12. Configuring the network Script'.238 section "7.12. Configuring the network Script". 241 239 242 240 INTERNATIONALIZATION … … 245 243 It is possible to specify the locale using the bootloader prompt, like this: 246 244 247 linux LANG=es_ES@euro245 linux LANG=es_ES@euro 248 246 249 247 The CD tries to guess the proper screen font and keymap based on this … … 251 249 following parameters: 252 250 253 KEYMAP: :251 KEYMAP: 254 252 specifies the console keymap(s) to load (actually the arguments to 255 the 'loadkeys' program separated by the "+" sign), e.g: 'KEYMAP=es+euro1' 256 257 LEGACY_CHARSET:: 253 the "loadkeys" program separated by the "+" sign) 254 255 Example: "KEYMAP=es+euro1" 256 257 LEGACY_CHARSET: 258 258 sometimes a ready-made UTF-8 keymap is not available and 259 259 must be obtained by converting an existing keymap from this charset to UTF-8. 260 E.g.: 'LEGACY_CHARSET=iso-8859-15'.261 260 This parameter is not used in non-UTF-8 locales. 262 261 263 FONT:: 262 Example: "LEGACY_CHARSET=iso-8859-15". 263 264 FONT: 264 265 specifies the screen font to set (actually, the arguments to the 265 'setfont' program separated by the "+" sign), e.g: 266 'FONT=LatArCyrHeb-16+-m+8859-15' 267 268 XKEYMAP:: 269 the keymap to use with X window system, e.g.: 'XKEYMAP=us' 266 "setfont" program separated by the "+" sign). 267 268 Example: "FONT=LatArCyrHeb-16+-m+8859-15" 269 270 XKEYMAP: 271 the keymap to use with X window system 272 273 Example: "XKEYMAP=us" 270 274 271 275 Alternatively, these items can be configured interactively using dialog-based 272 276 interface if the locale is not specified on the boot prompt. 273 277 274 For some locales (e.g. 'lv_LV.ISO-8859-13') there is no valid console keymap,278 For some locales (e.g. lv_LV.ISO-8859-13) there is no valid console keymap, 275 279 but there is a keymap for X. In this case, the only solution is to use X. 276 280 277 While this CD configures the 'LANG'environment variable, console font and281 While this CD configures the "LANG" environment variable, console font and 278 282 keymap for you, it is your responsibility to configure other locale-dependent 279 parameters manually. You have to explicitly specify the 'iocharset'and280 'codepage'options when mounting filesystems with Windows origin281 (e.g., 'vfat' and 'isofs').283 parameters manually. You have to explicitly specify the "iocharset" and 284 "codepage" options when mounting filesystems with Windows origin 285 (e.g., vfat and isofs). 282 286 283 287 The CD contains TrueType fonts that cover the orthography of most of European … … 290 294 minimum resolution: 291 295 292 .-------.--------- 293 Size Resolution 294 ------------------ 295 15" 1024x768 296 17" 1024x768 297 19" 1280x1024 298 20" 1280x1024 299 ------------------ 296 15" => 1024x768 297 17" => 1024x768 298 19" => 1280x1024 299 20" => 1280x1024 300 300 301 301 If your monitor cannot handle such resolution, edit the 302 '/etc/X11/xinit/xserverrc' file with vim, nano or joe, and add the '-dpi 94' 302 /etc/X11/xinit/xserverrc file with vim, nano or joe, and add the "-dpi 94" 303 303 parameter to the X server command line there. 304 304 … … 306 306 ----------------------- 307 307 308 The LiveCD includes the 'brltty'program that allows a blind person to read308 The LiveCD includes the "brltty" program that allows a blind person to read 309 309 the contents of the Linux text console on a Braille display. In order to 310 310 activate it, insert the CD into the drive, reboot the computer. Some BIOSes … … 314 314 upon startup), type: 315 315 316 linux brltty=eu,ttyS0316 linux brltty=eu,ttyS0 317 317 318 318 [NOTE] 319 319 This example assumes that the EuroBraille device is connected to the 320 first serial port. For other device types, the 'brltty'parameter will320 first serial port. For other device types, the "brltty" parameter will 321 321 be different. 322 322 323 323 [NOTE] 324 In some locales, 'brltty'displays incorrect Braille patterns. This is324 In some locales, "brltty" displays incorrect Braille patterns. This is 325 325 related to the fact that Braille tables in brltty are indexed with 326 326 encoding-dependent bytes representing the character. Such representation 327 327 becomes invalid when another encoding for the same language is used. 328 E.g., that is why the 'ru' table (designed for the KOI8-R encoding) produces 329 wrong result in the 'ru_RU.CP1251' locale. 330 331 Known non-working cases 332 ~~~~~~~~~~~~~~~~~~~~~~~ 333 334 * All CP1251-based locales (no CP1251 Braille table in 'brltty') 328 E.g., that is why the "ru" table (designed for the KOI8-R encoding) produces 329 wrong result in the ru_RU.CP1251 locale. 330 331 ### Known non-working cases ### 332 333 * All CP1251-based locales (no CP1251 Braille table in "brltty") 335 334 336 335 * All UTF-8 locales (kernel deficiency) 337 336 338 337 * zh_TW (configuration instructions available in Chinese only). If you use 339 this locale, please send mail to 340 mailto:livecd@linuxfromscratch.org[the LiveCD development list] 338 this locale, please send mail to <livecd@linuxfromscratch.org> 341 339 and help us add support for it. 342 340 … … 346 344 the en_US locale, thus avoiding the use of non-ASCII characters. If you know how 347 345 to fix this problem for your locale, mail this information to 348 mailto:livecd@linuxfromscratch.org[the LiveCD development list].346 <livecd@linuxfromscratch.org>. 349 347 350 348 RESUMING THE BUILD 351 349 ------------------ 352 350 353 There is a hint: 354 355 http://www.linuxfromscratch.org/hints/downloads/files/stages-stop-and-resume.txt[How to resume your work after a break at different LFS stages] 351 There is a hint "How to resume your work after a break at different 352 -LFS stages" available at: 353 354 <http://www.linuxfromscratch.org/hints/downloads/files/stages-stop-and-resume.txt> 356 355 357 356 Instructions from there should work on this CD, however, there is a simpler 358 method ( 'hibernation') described below.357 method ("hibernation") described below. 359 358 360 359 Make sure you have (or are planning to create) a swap partition not used 361 360 by other Linux systems installed on your hard drive. The text below assumes 362 that '/dev/hda2'is your (existing or planned) swap partition.363 364 Pass 'resume=/dev/hda2'as one of the kernel arguments when booting this CD.361 that /dev/hda2 is your (existing or planned) swap partition. 362 363 Pass "resume=/dev/hda2" as one of the kernel arguments when booting this CD. 365 364 I.e., the complete boot line may look as: 366 365 367 linux LANG=ru_RU.UTF-8 TZ=Asia/Yekaterinburg resume=/dev/hda2366 linux LANG=ru_RU.UTF-8 TZ=Asia/Yekaterinburg resume=/dev/hda2 368 367 369 368 Alternatively, once the system is running, you can activate hibernation by … … 371 370 such: 372 371 373 # ls -l /dev/hda2374 brw-rw---- 1 root disk 3, 2 2006-07-10 17:51 /dev/hda2375 # echo 3:2 >/sys/power/resume372 # ls -l /dev/hda2 373 brw-rw---- 1 root disk 3, 2 2006-07-10 17:51 /dev/hda2 374 # echo 3:2 >/sys/power/resume 376 375 377 376 At this point, the system is up and running. If you do not already have a … … 381 380 If you use the X window system, take the following into account: 382 381 383 * Users of old S3 video cards should uncomment the 'EnableVbetool'line384 in the '/etc/hibernate/common.conf'file.385 386 * Hibernation is incompatible with the proprietary 'nvidia'driver.382 * Users of old S3 video cards should uncomment the "EnableVbetool" line 383 in the /etc/hibernate/common.conf file. 384 385 * Hibernation is incompatible with the proprietary "nvidia" driver. 387 386 388 387 Follow the book as your time permits. 389 388 390 When your time runs out, execute the 'hibernate'command as root. It is not389 When your time runs out, execute the "hibernate" command as root. It is not 391 390 necessary to stop the compilation, but running this command during a 392 391 testsuite may lead to failures that would not occur otherwise. … … 399 398 400 399 On some systems, hibernation refuses to work due to a broken ACPI 401 implementation, with the following message in 'dmesg | tail'output:402 403 acpi_pm_prepare does not support 4400 implementation, with the following message in "dmesg | tail" output: 401 402 acpi_pm_prepare does not support 4 404 403 405 404 Possible solutions: 406 405 407 a. run the following command before hibernating the computer:408 409 echo shutdown >/sys/power/disk410 411 b. disable ACPI completely by adding 'acpi=off'to the kernel arguments.406 1. run the following command before hibernating the computer: 407 408 echo shutdown >/sys/power/disk 409 410 2. disable ACPI completely by adding "acpi=off" to the kernel arguments. 412 411 413 412 The computer will save its state to your swap partition and power down. … … 415 414 416 415 When you are ready to resume the build, boot this CD again and pass exactly 417 the same 'vga=...' and 'resume=...'arguments that you used earlier.416 the same "vga=..." and "resume=..." arguments that you used earlier. 418 417 419 418 The computer will load its state from the swap partition and behave as if … … 424 423 or on software RAID. In this case, instead of passing the 'resume=...' argument, 425 424 you should boot the CD as usual and make actions needed for the kernel to see 426 the swap device (for LVM, that is 'vgchange -ay'). After doing that, note425 the swap device (for LVM, that is "vgchange -ay"). After doing that, note 427 426 the major and minor device number for that device (assigning persistent numbers 428 is highly recommended), and echo them to '/sys/power/resume'. E.g., for LVM:429 430 # ls -lL /dev/myvg/swap431 brw------- 1 root root 254, 3 2006-07-10 17:51 /dev/myvg/swap432 # echo 254:3 >/sys/power/resume427 is highly recommended), and echo them to /sys/power/resume. E.g., for LVM: 428 429 # ls -lL /dev/myvg/swap 430 brw------- 1 root root 254, 3 2006-07-10 17:51 /dev/myvg/swap 431 # echo 254:3 >/sys/power/resume 433 432 434 433 In the case of the first boot, this will store the device numbers to be used 435 for hibernation. On the second boot (i.e., after hibernating), this 'echo'434 for hibernation. On the second boot (i.e., after hibernating), this "echo" 436 435 command will restore the computer state from the swap device. 437 436 … … 439 438 -------------------- 440 439 441 This CD comes with the 'jhalfs'tool that allows extracting commands from the440 This CD comes with the "jhalfs" tool that allows extracting commands from the 442 441 XML version of the LFS or CLFS book into Makefiles and shell scripts. You can 443 find the jhalfs installation in the home directory of the 'jhalfs'user, and the444 XML LFS book is in '/usr/share/LFS-BOOK-6.3-XML'. In order to use 'jhalfs',442 find the jhalfs installation in the home directory of the "jhalfs" user, and the 443 XML LFS book is in /usr/share/LFS-BOOK-6.3-XML. In order to use jhalfs, 445 444 you have to: 446 445 447 446 * create a directory for your future LFS system and mount a partition there 448 447 449 * change the ownership of that directory to the 'jhalfs' user 450 451 * run 'su - jhalfs' in order to become that user 452 453 * as user 'jhalfs', follow the instructions in the 454 '/home/jhalfs/jhalfs-<version>/README' file 455 456 Note that this user already has the required root access (via 'sudo') to 448 * change the ownership of that directory to the "jhalfs" user 449 450 * run "su - jhalfs" in order to become that user 451 452 * as user "jhalfs", follow the instructions in the jhalfs README file 453 454 Note that this user already has the required root access (via "sudo") to 457 455 complete the build. 458 456 … … 464 462 purposes (e.g., for watching a DVD while compiling LFS). 465 463 466 To load the CD contents to RAM, type 'linux toram'at the boot prompt.464 To load the CD contents to RAM, type "linux toram" at the boot prompt. 467 465 468 466 The minimum required amount of RAM is 512 MB. If you have less than 768 MB of … … 471 469 NOTE: in order to save RAM, sources and proprietary drivers are not loaded 472 470 there. In order to access them, please mount this CD and look into 473 '/media/cdrom/sources' and '/media/cdrom/drivers'.471 /media/cdrom/sources and /media/cdrom/drivers. 474 472 475 473 BOOTING FROM ISO IMAGE … … 480 478 Store the ISO image of this CD as a file on a partition formatted with 481 479 one of the following filesystems: 482 'vfat', 'ntfs', 'ext2', 'ext3', 'ext4', 'jfs', 'reiserfs', 'reiser4', 'xfs' 483 484 Copy the 'boot/isolinux/{linux,initramfs_data.cpio.gz}'files from the CD480 vfat, ntfs, ext2, ext3, ext4, jfs, reiserfs, reiser4, xfs 481 482 Copy the boot/isolinux/{linux,initramfs_data.cpio.gz} files from the CD 485 483 to your hard disk 486 484 487 Configure the boot loader to load 'linux'as a kernel image and488 'initramfs_data.cpio.gz'as an initrd. The following parameters have to485 Configure the boot loader to load "linux" as a kernel image and 486 "initramfs_data.cpio.gz" as an initrd. The following parameters have to 489 487 be passed to the kernel: 490 488 491 rw root=iso:/dev/XXX:/path/to/lfslivecd.iso rootfstype=fs_type492 493 where '/dev/XXX'is a partition where you stored the LiveCD image, and494 'fs_type'is the type of the filesystem on that partition. You may495 also want to add 'rootflags=...'option if mounting this partition requires489 rw root=iso:/dev/XXX:/path/to/lfslivecd.iso rootfstype=fs_type 490 491 where /dev/XXX is a partition where you stored the LiveCD image, and 492 fs_type is the type of the filesystem on that partition. You may 493 also want to add "rootflags=..." option if mounting this partition requires 496 494 special flags. 497 495 498 496 If there is only Windows on the target computer, please use grub4dos as a boot 499 loader. It is available from 500 http://sourceforge.net/projects/grub4dos[grub4dos project page]. 497 loader. It is available from <http://sourceforge.net/projects/grub4dos>. 501 498 502 499 MAKING A BOOTABLE USB DRIVE … … 508 505 computer: 509 506 510 * Use the persistent symlink such as '/dev/disk/by-uuid/890C-F46A'to identify507 * Use the persistent symlink such as "/dev/disk/by-uuid/890C-F46A" to identify 511 508 the target partition. 512 509 513 * Add 'rootdelay=20'to the kernel arguments.510 * Add "rootdelay=20" to the kernel arguments. 514 511 515 512 THANKS
