Changeset 46b900a
- Timestamp:
- 02/12/2005 06:05:09 AM (20 years ago)
- Branches:
- 10.0, 10.1, 11.0, 11.1, 11.2, 11.3, 12.0, 12.1, 12.2, 6.0, 6.1, 6.2, 6.2.0, 6.2.0-rc1, 6.2.0-rc2, 6.3, 6.3-rc1, 6.3-rc2, 6.3-rc3, 7.10, 7.4, 7.5, 7.6, 7.6-blfs, 7.6-systemd, 7.7, 7.8, 7.9, 8.0, 8.1, 8.2, 8.3, 8.4, 9.0, 9.1, basic, bdubbs/svn, elogind, gimp3, gnome, kde5-13430, kde5-14269, kde5-14686, kea, ken/TL2024, ken/inkscape-core-mods, ken/tuningfonts, krejzi/svn, lazarus, lxqt, nosym, perl-modules, plabs/newcss, plabs/python-mods, python3.11, qt5new, rahul/power-profiles-daemon, renodr/vulkan-addition, systemd-11177, systemd-13485, trunk, upgradedb, xry111/for-12.3, xry111/intltool, xry111/llvm18, xry111/soup3, xry111/spidermonkey128, xry111/test-20220226, xry111/xf86-video-removal
- Children:
- 3616dc5
- Parents:
- 310960e4
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
general/prog/prog.xml
r310960e4 r46b900a 28 28 <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="dejagnu.xml"/> 29 29 <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="gcc.xml"/> 30 < xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="gcc2.xml"/>30 <!-- <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="gcc2.xml"/> --> 31 31 <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="gcc3.xml"/> 32 32 <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="nasm.xml"/> -
introduction/welcome/changelog.xml
r310960e4 r46b900a 22 22 23 23 <itemizedlist> 24 25 <listitem><para>February 11th, 2005 [bdubbs]: Rewrote bootdisk page.</para> 26 </listitem> 24 27 25 28 <listitem><para>February 11th, 2005 [randy]: Added md5sums to Chapter 18, -
postlfs/config/bootdisk.xml
r310960e4 r46b900a 6 6 ]> 7 7 8 <sect1 id="postlfs-config-bootdisk" xreflabel="Creating a Custom Boo k Disk">8 <sect1 id="postlfs-config-bootdisk" xreflabel="Creating a Custom Boot Device"> 9 9 <sect1info> 10 10 <othername>$LastChangedBy$</othername> … … 12 12 </sect1info> 13 13 <?dbhtml filename="bootdisk.html"?> 14 <title>Creating a Custom Boot D isk</title>14 <title>Creating a Custom Boot Device</title> 15 15 16 16 <sect2> 17 <title>Decent Rescue Boot D iskNeeds</title>17 <title>Decent Rescue Boot Device Needs</title> 18 18 <para>This section is really about creating a <emphasis>rescue</emphasis> 19 d iskette. As the name <emphasis>rescue</emphasis> implies, the host19 device. As the name <emphasis>rescue</emphasis> implies, the host 20 20 system has a problem, often lost partition information or corrupted file 21 systems, that prevent sit from booting and/or operating normally. For21 systems, that prevent it from booting and/or operating normally. For 22 22 this reason, you <emphasis>must not</emphasis> depend on resources from 23 23 the host being "rescued". To presume that any given partition or hard 24 24 drive <emphasis>will</emphasis> be available is a risky presumption.</para> 25 25 26 <para>Heeding the warning, the rescue disk created here has no 27 dependency on the host system's resources, other than basic bootability 28 and hardware soundness. At a minimum, the most common sorts of failures 29 requiring a rescue boot disk should be addressed by the contents of the 30 boot disk. This would include the common loss of partitioning (master 31 boot record is lost or corrupted), file system corruption, and the need 32 to allow creation and editing of files that may have been lost or 33 corrupted, possibly as an effect of the other two problems.</para> 26 <para>In a modern system, there are many devices that can be 27 used as a rescue device: floppy, cdrom, usb drive, or even a network card. 28 Which one you use depends on your hardware and your BIOS. In the past, 29 we usually thought of rescue device as a floppy disk. Today, many 30 systems do not even have a floppy drive.</para> 34 31 35 <para>Additional utilities should be available to search for text or 36 files, copy, move and remove files, and many other normal operations 37 that might be expected to be needed when reconstructing.</para> 32 <para>Building a complete rescue device is a challenging task. In many 33 ways, it is equivalent to building an entire <acronym>LFS</acronym> system. 34 In addition, it would be a repitition of information already available. 35 For these reasons, the procedures for a rescue device image are not 36 presented here.</para> 38 37 </sect2> 39 38 40 39 <sect2> 41 <title> This Minimal Decent Rescue Disk</title>40 <title>Creating a Rescue Floppy</title> 42 41 43 <para>The intent here is to create a "rescue boot disk" that will support 44 the common operations listed above. These functions are provided by 45 including selected executables from <application><ulink 46 url="http://www.busybox.net/downloads/busybox-0.60.4.tar.bz2">busybox 47 </ulink></application> and <application><ulink 48 url="http://freshmeat.net/projects/e2fsprogs/">e2fsprogs</ulink></application>. 49 A basic editor and rudimentary disk partitioning utility may also be 50 optionally included.</para> 42 <para>The software of today's systems has grown large. Linux 2.6 no longer 43 supports booting directly from a floppy. In spite of this, there are solutions 44 available using older version of Linux. One of the best is Tom's Root/Boot 45 Disk available at <ulink url='http://www.toms.net/rb/'/>. This will provide a 46 minimal Linux system on a single floppy disk and provides the ability to 47 customize the contents of your disk if necessary.</para> 51 48 52 <para>This, however, is not the limit. A minimal disk is described53 here, but you can add anything you can fit on the floppy. Furthermore,54 if one floppy is not enough to meet your needs, you can make a55 multi-diskette rescue set that means, essentially, the sky is the limit.56 This is discussed below. The number of other possible variations are57 just too numerous to mention here.</para>58 49 </sect2> 59 50 60 51 <sect2> 61 <title>Build the Rescue Boot Disk</title> 62 <sect3> 63 <title>Prerequisites</title> 52 <title>Creating a Bootable CD-ROM</title> 64 53 65 <para>You should have known-good floppy diskettes available. Some 66 people prefer to use the <command>fdformat</command> command to prepare 67 these because it also does a verification. See the man page for more 68 details. Another good idea is to always prepare duplicates of the 69 rescue diskette. Media does deteriorate.</para> 54 <para>There are several sources that can be used for a rescue CD-ROM. 55 Just about any commercial distribution's installation CD-ROMs or 56 DVDs will work. These include RedHat, Mandrake, and SuSE. One 57 very popular option is Knoppix.</para> 70 58 71 <para>These instructions presume a base <acronym>LFS</acronym> install 72 using ext2/ext3 file systems.</para> 59 <para>In addition, the LFS Community has developed its own Boot 60 CD-ROM available at <ulink url='ftp://ftp.linuxfromscratch.org/lfs-boot-cd'/>. 61 A copy of this CD-ROM is available with the printed version of the Linux 62 From Scratch book. If you download the ISO image, use <xref linkend='cdrecord'/> to 63 copy the image to a CD-ROM.</para> 73 64 74 <para>You need to have loopback device support enabled in your host's 75 kernel to use this procedure.</para> 76 77 <para>You should make a custom kernel that includes only those features 78 needed to rescue your system, so it will have the least size. No 79 sense in building in support for things like <application>XFree86</application>, 80 <application>DRI</application>, etc, as most rescues are performed from the 81 command prompt. Along the same lines, if you have <xref linkend="gcc2"/>, it 82 is known to produce smaller kernels. So you might want to use that 83 compiler for this kernel. If you do so, don't overlook any loadable 84 modules (which are not addressed here) you might need - they need to be 85 compiled with the same compiler used to make the kernel.</para> 86 87 <para>The rescue image must include support for the file system of your 88 choice (we presume ext2/3 here), ramdisk and initial ramdisk (initrd). 89 Disable everything that you can in the kernel configuration. You should 90 keep support for the proc file system and tempfs file system enabled 91 because of their general utility. The proc file system is needed for 92 the <command>mount</command> to report properly.</para> 93 94 <para>If you install <emphasis>only</emphasis> the minimal set of 95 components shown in this document, you will need a kernel that is 643 or 96 fewer blocks in size. If you want the optional programs - a very basic 97 editor, like <command>ed</command>, and rudimentary disk partitioning, like 98 <command>sfdisk</command> - the kernel will need to be 595 or fewer blocks in 99 size. This should not be a major problem unless your needs are fairly 100 esoteric. On the system used to develop this version of the procedures, using 101 only ext2 file systems and not using networking or <acronym>CD</acronym>s for 102 recovery, the kernel image is only 481 blocks. And there may be more to gain - it has not been closely examined for additional gains.</para> 103 104 <para>This kernel image will be called "rescueimage" hereinafter. You 105 can actually name your image anything you like and just use its name 106 instead in any commands that include "rescueimage".</para> 107 108 <para>If you can not get your rescueimage down to the size needed to allow 109 all you need on the ramdisk image, don't fret. You can always build a 110 two diskette set, one boot and one root diskette. The kernel will prompt 111 you to insert the root file system diskette. This will allow room for a 112 compressed ramdisk image of 1440 blocks and a rescueimage of the same 113 size.</para> 114 115 <para>The rescueimage size limits given above are likely to vary as 116 local system-specific configurations change. Use them only as a 117 guideline and not as gospel. The size of rescueimage as shown by 118 <command>ls -sk</command> is only an approximation because of some 119 "overhead". On the system used to develop this version of these 120 procedures, that command shows 488 blocks but the actual number of 121 blocks written is only 480 and a fraction, which means that 481 blocks 122 are actually used.</para> 123 </sect3> 124 125 <sect3> 126 <title>Rescue Disk Build Process</title> 127 128 <para>The basic process will be:</para> 129 <itemizedlist> 130 <listitem><para>make a mount point for a file system</para></listitem> 131 <listitem><para>make an empty file to hold the file system</para></listitem> 132 <listitem><para>bind the empty file to a loopback device</para></listitem> 133 <listitem><para>make a 4MB file system</para></listitem> 134 <listitem><para>mount the file system</para></listitem> 135 <listitem><para>add components to the file system</para></listitem> 136 <listitem><para>make the compressed initrd</para></listitem> 137 <listitem><para>join rescueimage and initrd onto a diskette</para></listitem> 138 </itemizedlist> 139 140 <para>The initial ramdisk will be automatically loaded at boot time if 141 setup is done correctly.</para> 142 143 <para><emphasis>Make a mount point and an empty file to hold a file 144 system</emphasis></para> 145 146 <screen><userinput><command>mkdir -p /mnt/loop1 147 dd if=/dev/zero of=/tmp/rfloppy bs=1k count=4096</command></userinput></screen> 148 149 <para><emphasis>Command explanations</emphasis></para> 150 151 <para><command>dd</command>: This is a generalized input-to-output copy 152 utility that also has many transformation capabilities.</para> 153 154 <para><parameter>if=/dev/zero</parameter>: This parameter assigns 155 <command>dd</command>'s input file to a device that returns an infinite 156 stream of zeroes.</para> 157 158 <para><parameter>of=/tmp/rfloppy</parameter>: This parameter directs 159 <command>dd</command>'s output to <filename>/tmp/rfloppy</filename>.</para> 160 161 <para><parameter>bs=1k count=4096</parameter>: These parameters tell 162 <command>dd</command> to read and write in "chunks" of 1024 bytes and 163 process 4096 "chunks".</para> 164 165 <para><emphasis>Bind the file to a loopback device, make a file system and mount it.</emphasis></para> 166 167 <para>The reason these commands are used is that they work regardless of 168 the version of <command>mount</command> (older ones don't have the 169 <userinput>-o loop</userinput> option) or if <filename>/etc/mtab</filename> 170 is symlinked to <filename class="directory">/proc</filename> (which causes mount to be 171 unable to properly "unbind" a loop device, due to "lost" information). 172 An alternate set of commands is provided, after these three commands, 173 that you can use if you don't have either of these situations.</para> 174 175 <screen><userinput><command>losetup /dev/loop1 /tmp/rfloppy 176 mke2fs -m 0 -N 504 /dev/loop1 177 mount -t ext2 /dev/loop1 /mnt/loop1</command></userinput></screen> 178 179 <para><emphasis>Command explanations</emphasis></para> 180 181 <para><command>losetup /dev/loop1 /tmp/rfloppy</command>: This 182 command "binds" a loopback device to the empty file.</para> 183 184 <para><command>mke2fs -m 0 -N 504 /dev/loop1</command>: This 185 command makes an ext2 file system on the loopback device (which really 186 means it is created in the file to which the loopback device is bound) 187 and reserves no blocks. The <userinput>-N 504</userinput> parameter causes 188 only 504 inodes to be allocated, leaving more space for other things needed 189 in the file system.</para> 190 191 <para><command>mount -t ext2 /dev/loop1 /mnt/loop1</command>: This 192 mounts the file system just created, just as if it were a real device, 193 like a hard drive or diskette. This allows all the normal system I/O 194 commands to operate as if a real device were present.</para> 195 196 <para>If your <command>mount</command> supports the 197 <option>-o loop</option> option <emphasis>and</emphasis> your 198 <filename>/etc/mtab</filename> is a real file, rather than a symlink to 199 <filename class="directory">/proc</filename>, the three above commands can be replaced 200 by these next two commands.</para> 201 202 <screen><userinput><command>mke2fs -F -m 0 -N 504 /tmp/rfloppy 203 mount -o loop /tmp/rfloppy /mnt/loop1</command></userinput></screen> 204 205 <para><emphasis>Command explanations</emphasis></para> 206 207 <para><command>mke2fs -F -m 0 -N 504 /tmp/rfloppy</command>: As before, 208 a file system is made, with only 504 inodes and no reserved blocks, that 209 will be bound to a loopback device. The <userinput>-F</userinput> parameter 210 just suppresses an irritating question issued when 211 <command>mke2fs</command> realizes that you are not accessing a 212 device.</para> 213 214 <para><command>mount -o loop /tmp/rfloppy /mnt/loop1</command>: This 215 command tells <command>mount</command> to bind the named file to a 216 loopback device it automatically selects (the first available) and mount 217 the device on <filename class="directory">/mnt/loop1</filename>.</para> 218 219 <para><emphasis>Add components to the file system</emphasis></para> 220 221 <para><emphasis>A cautionary note:</emphasis> if you are not running in a 222 <command>chroot</command> environment, be sure that you do not accidentally 223 omit the <filename class="directory">/mnt/loop1</filename> reference in the commands. If 224 you do so, you might replace the equivalent components on your host with 225 the components that are installed by these procedures. Even if you are 226 in a chroot environment, you may need to be careful if the environment 227 is your freshly built <acronym>LFS</acronym> system which you intend to 228 use as a host in the future.</para> 229 230 <para>First, to have as much free space as possible, remove the 231 <filename>lost+found</filename> directory, which is not needed because 232 it is only used by <command>fsck</command>. Since <command>fsck</command> 233 will never be run on this file system, it is unneeded.</para> 234 235 <screen><userinput><command>rmdir /mnt/loop1/lost+found/</command></userinput></screen> 236 237 <para>Now make a minimal set of directories.</para> 238 239 <screen><userinput><command>mkdir /mnt/loop1/{dev,proc,etc,sbin,bin,lib,mnt,usr,var}</command></userinput></screen> 240 241 <para>Add needed device files to the initrd image. If you use devfs, 242 the following command works well, as you only have the devices you use 243 anyway.</para> 244 245 <screen><userinput><command>cp -dpR /dev/* /mnt/loop1/dev</command></userinput></screen> 246 247 <para>If you used <command>MAKEDEV</command> to create your devices on 248 your host, you'll want to use something similar to this longer command, 249 to minimize wasting space with unneeded inodes.</para> 250 251 <para><emphasis>You must modify this to suit your rescueimage configuration and 252 other needs.</emphasis> For example, you may need 253 <acronym>SCSI</acronym> devices and may not need 254 frame buffer devices or the pseudo-terminal directory. Also, the number 255 of hard drives and partitions that you include should be the minimal 256 that you need. Extensive analysis has not been done on the list below, 257 so there are more inodes and space to be gained by "fine tuning" this 258 set.</para> 259 260 <screen><userinput><command>mkdir /mnt/loop1/dev/pts 261 cp -a \ 262 /dev/null /dev/console \ 263 /dev/fb[0-7] /dev/fd /dev/fd0 /dev/fd0h1440 /dev/full \ 264 /dev/hda* /dev/hdb* /dev/hdc* /dev/hdd* /dev/initctl /dev/kmem \ 265 /dev/loop[0-3] /dev/lp0 /dev/mem /dev/port \ 266 /dev/psaux /dev/ram \ 267 /dev/ram0 /dev/ram1 /dev/ram2 /dev/ram3 /dev/random /dev/rtc \ 268 /dev/shm /dev/stderr /dev/stdin /dev/stdout /dev/tty \ 269 /dev/tty[0-9] /dev/ttyS0 /dev/ttyS1 /dev/urandom /dev/zero \ 270 /mnt/loop1/dev</command></userinput></screen> 271 272 <para><emphasis>What is needed in the <filename class="directory">/etc</filename> 273 directory</emphasis></para> 274 275 <para>If you choose, you can copy all or selected parts of your 276 <filename>/etc/passwd</filename> and <filename>/etc/group</filename> 277 files. But even if each is less than 1024 bytes, you will lose two 278 inodes and two blocks of space on the initial ramdisk. This only really 279 matters because of trying to squeeze everything onto a 1.44MB 280 diskette. Every little bit helps. The strategy taken here is to create 281 these two files as part of the rescue boot and initialization process. 282 The commands that make the two files will be embedded inside the 283 <filename>rcS</filename> script that <filename>linuxrc</filename> 284 (really <application><ulink 285 url="http://www.busybox.net/downloads/busybox-0.60.4.tar.bz2">busybox 286 </ulink></application>) invokes after the initrd is 287 loaded. This way no more inodes or blocks are used on the 288 diskette to carry these files.</para> 289 290 <para>Some might like to copy their <filename class="directory">/etc/rc*</filename> 291 directory into the ramdisk image, but this may have no value, other 292 than archival use, in a worst-case recovery scenario. If you want 293 automatic initialization of the system after repair, they may have some 294 value. But few people need or want this to happen. If the file system 295 on the hard drives are corrupted, what good will mount scripts do? Some 296 scripts may be useful, like access to a network to copy over backup data 297 when the hard drive's file systems are usable again. The point is that 298 you should copy only the parts that you can use because space is at a 299 premium on the diskette.</para> 300 301 <para>Here, only the <filename>fstab</filename> will be included. This 302 is handy because it eases mounting of partitions that may be useful and 303 also can be examined and used as a guide as to what is available and 304 what may need reconstruction. Because it may be larger than needed, you 305 should edit it to remove any useless entries and minimize commentary. 306 No other editing is needed because the boot scripts are not included and 307 no automatic mounting will be done using the <filename>fstab</filename>. 308 If you decide to include some boot scripts that might try to mount 309 things, change the <filename>fstab</filename>'s entries to 310 <command>noauto</command> in the options field so they don't cause an 311 attempt to mount a potentially corrupt partition. Copy it to 312 <filename class="directory">/tmp</filename>, edit it as desired and then:</para> 313 314 <screen><userinput><command>cp -a /tmp/fstab /mnt/loop1/etc</command></userinput></screen> 315 316 <para>Now the initialization script will be added. As mentioned above, 317 <command>linuxrc</command> is symlinked to <application><ulink 318 url="http://www.busybox.net/downloads/busybox-0.60.4.tar.bz2">busybox 319 </ulink></application>. 320 After the kernel and initial ramdisk have been loaded, the kernel gives 321 control to <command>linuxrc</command> (<application><ulink 322 url="http://www.busybox.net/downloads/busybox-0.60.4.tar.bz2">busybox 323 </ulink></application>). It wants to run an <filename class="directory">/etc/init.d/rcS</filename> 324 script to do any initial setup.</para> 325 326 <para>If you use devfsd, you will need to set up the 327 <filename>rcS</filename> script to handle the devfsd startup. Put the 328 following commands in <filename class="directory">/mnt/loop1/etc/init.d/rcS</filename>. 329 You may also want to add some of the processes shown in the non-devfs 330 version that follows.</para> 331 332 <screen><userinput>#!/bin/sh 333 mount -t devfs devfs /dev 334 /sbin/devfsd /dev</userinput></screen> 335 336 <para>If you don't use devfsd, but created a static <filename 337 class="directory">/dev</filename> 338 directory using <command>MAKEDEV</command>, or any similar process, the 339 <filename>rcS</filename> script will do slightly different things. 340 Also, don't forget that it is creating the 341 <filename>/etc/passwd</filename> and <filename>/etc/group</filename> 342 files, thus saving space on the diskette.</para> 343 344 <para>The script made next will mount <filename class="directory">/proc</filename>, turn 345 on swap (no harm is done if it fails), make the 346 <filename>/etc/passwd</filename> and <filename>/etc/group</filename> 347 files, create a log directory and turn on swapping. Create the script 348 with:</para> 349 350 <screen><userinput><command>mkdir -p /mnt/loop1/etc/init.d 351 cat >/mnt/loop1/etc/init.d/rcS << EOD</command> 352 #!/bin/sh 353 mount -t proc proc /proc 354 swapon -a 355 356 echo "root:x:0:0:root:/root:/bin/bash" > /etc/passwd 357 358 <command>cat > /etc/group <<EOF</command> 359 root:x:0: 360 bin:x:1: 361 sys:x:2: 362 kmem:x:3: 363 tty:x:4: 364 tape:x:5: 365 daemon:x:6: 366 floppy:x:7: 367 disk:x:8: 368 lp:x:9: 369 dialout:x:10: 370 audio:x:11: 371 <command>EOF 372 chmod 644 /etc/passwd /etc/group</command> 373 374 mkdir /var/log 375 376 <command>EOD 377 chmod u+x /mnt/loop1/etc/init.d/rcS</command></userinput></screen> 378 379 <para>Unless you add a lot to this script, which <emphasis>is</emphasis> 380 encouraged, the above should be reasonably close to what you need.</para> 381 382 <para><emphasis>Install packages</emphasis></para> 383 384 <para>There are two packages that must be installed. The <application><ulink 385 url="http://www.busybox.net/downloads/busybox-0.60.4.tar.bz2">busybox</ulink></application> 386 package incorporates the core functions that provide a shell and many 387 basic utilities. A file system package, like <application><ulink 388 url="http://freshmeat.net/projects/e2fsprogs/">e2fsprogs</ulink></application>, or 389 a package for the file system you are using, will provide a minimal 390 set of utilities for file system checking and reconstruction. The whole 391 package will not be installed, but only certain needed components.</para> 392 393 <para>If you use devfsd, you will also need to install that software.</para> 394 395 <para>Install <application><ulink 396 url="http://www.busybox.net/downloads/busybox-0.60.4.tar.bz2">busybox</ulink></application> 397 into the initial ramdisk image. Busybox incorporates many Unix utility 398 program functions into a single small executable file.</para> 399 400 <screen><userinput><command>make && 401 make PREFIX=/mnt/loop1 install && 402 > /mnt/loop1/var/utmp</command></userinput></screen> 403 404 <para>A <filename>var/utmp</filename> is made because <application><ulink 405 url="http://www.busybox.net/downloads/busybox-0.60.4.tar.bz2">busybox</ulink></application> 406 needs it for the reboot command to work properly. If this file doesn't 407 exist when <application><ulink 408 url="http://www.busybox.net/downloads/busybox-0.60.4.tar.bz2">busybox</ulink></application> 409 is started, the reboot command will not work. This would be a bad thing 410 for people that have no reset button available to them.</para> 411 412 <para>If you use devfs to create devices on the fly and free up precious 413 inodes on the floppy, you'll also install devfsd to facilitate the 414 devices that <application><ulink 415 url="http://www.busybox.net/downloads/busybox-0.60.4.tar.bz2">busybox</ulink></application> 416 expects to find. Use the following commands to do the install.</para> 417 418 <screen><userinput><command>mv GNUmakefile Makefile && 419 make && 420 make PREFIX=/mnt/loop1 install</command></userinput></screen> 421 422 <para><emphasis>Install part of <application>e2fsprogs</application></emphasis></para> 423 424 <para>If you use the ext2 or ext3 (journaling) file system, you can use 425 the commands below to install the minimal functionality that should 426 allow you to get your hard drives usable again. If you use ext3, keep in 427 mind that it is a part of the <application>e2fsprogs</application> 428 package and you can get the components, which are mostly hard links, 429 from the same places shown below. If you use some other file system, 430 such as reiserfs, you should apply the <emphasis>principals</emphasis> 431 you see here to install parts of that package instead.</para> 432 433 <screen><userinput><command>LDFLAGS='-s' 434 mkdir build && 435 cd build && 436 ../configure --prefix=/mnt/loop1/usr --with-root-prefix="" \ 437 --disable-swapfs --disable-debugfs \ 438 --enable-dynamic-e2fsck --disable-nls --disable-evms \ 439 --disable-rpath && 440 make LDFLAGS="$LDFLAGS" && 441 strip -p --strip-unneeded --remove-section=.comment \ 442 -o /mnt/loop1/sbin/mke2fs misc/mke2fs && 443 strip -p --strip-unneeded --remove-section=.comment \ 444 -o /mnt/loop1/sbin/e2fsck e2fsck/e2fsck && 445 chmod 555 /mnt/loop1/sbin/{mke2fs,e2fsck} 446 </command></userinput></screen> 447 448 <para><emphasis>Two useful utilities</emphasis></para> 449 450 <para>There are two very useful utilities that any rescue disk should 451 have, to help in faster and more accurate recovery. The first is a 452 partitioning utility. The <command>sfdisk</command> program is 453 used here because of its small size and great power. Be warned though - 454 it is not what is considered to be "user friendly". But the 455 <command>fdisk</command> and <command>cfdisk</command> programs are 456 substantially larger or require more shared objects, like <application>ncurses 457 </application>.</para> 458 459 <para>The second utility is an editor. Most graphical editors are 460 inherently too large and also require additional shared objects. For 461 this reason, <command>ed</command> is used here. It is small, requires 462 no additional shared objects and is a regex-based editor that is the 463 ancestor to almost all subsequent editors that support regex-based 464 editing, whether graphical or not. It is a "context editor" and offers 465 powerful, but non-graphical, editing features. There are many other 466 editors that may be suitable - feel free to use one of them instead.</para> 467 468 <para>Read the <application>busybox</application> 469 <filename>INSTALL</filename> and <filename>README</filename> files to 470 see how to include a <command>vi</command> editor. It has not been 471 investigated here yet, so it may or may not easily fit onto a single 472 diskette image such as is made here.</para> 473 474 <para>You can install these or not, but it is important for you to have 475 some capability such as these offer. Exactly how you would install the 476 utilities you choose will have to be determined by you.</para> 477 478 <para><command>Sfdisk</command> and <command>ed</command> are installed 479 by, essentially, copying them from your host. Strip is used, just to 480 assure that they carry no "excess baggage", even though the base 481 <acronym>LFS</acronym> install should have stripped them already. Use 482 the following commands:</para> 483 484 <screen><userinput><command>strip -p --strip-unneeded --remove-section=.comment \ 485 -o /mnt/loop1/sbin/sfdisk /sbin/sfdisk 486 strip -p --strip-unneeded --remove-section=.comment \ 487 -o /mnt/loop1/bin/ed /bin/ed 488 chmod 555 /mnt/loop1/sbin/sfdisk /mnt/loop1/bin/ed</command></userinput></screen> 489 490 <para>Also, keeping in mind your space limitations, copy any other 491 binaries and libraries you need to the image. Use the 492 <command>ldd</command> command to see which libraries you will need to 493 copy over for any executables. Don't forget to also strip them 494 <emphasis>before</emphasis> copying them to the ramdisk image or use the 495 <command>strip</command>, as above, to "copy" them.</para> 496 497 <para><emphasis>Set up the lib directory</emphasis></para> 498 499 <para>Once you have installed all the utilities from above and any 500 additional ones you want, use the <command>ldd</command> command, as 501 mentioned above, on those that were not listed in this document. If 502 any additional libraries are needed, add them into the setup commands 503 shown next.</para> 504 505 <para>If you installed only those things shown above, the shared objects 506 needed will be minimal. You can add them to the ramdisk image with:</para> 507 508 <screen><userinput><command>strip -p --strip-unneeded --remove-section=.comment \ 509 -o /mnt/loop1/lib/libc.so.6 /lib/libc-2.3.3.so && 510 strip -p --strip-unneeded --remove-section=.comment \ 511 -o /mnt/loop1/lib/ld-linux.so.2 /lib/ld-2.3.3.so && 512 strip -p --strip-unneeded --remove-section=.comment \ 513 -o /mnt/loop1/lib/libdl.so.2 /lib/libdl-2.3.3.so && 514 chmod 555 /mnt/loop1/lib/{libc.so.6,ld-linux.so.2,libdl.so.2}</command></userinput></screen> 515 516 <para>Note that the above commands change the names of the libraries, 517 eliminating the need for the usual symlinks. If you add any additional 518 shared objects, be alert for similar opportunities and also the pitfalls 519 that may be present.</para> 520 521 <para><emphasis>Make the compressed initrd</emphasis></para> 522 523 <para>Unmount the loopback file. If you used <command>mount</command>'s 524 <option>-o loop</option> option, the "bond" between the loop device 525 and the file will be removed when the unmount is done. Just omit the 526 <command>losetup -d /dev/loop1</command> from the following 527 sequence. The <userinput>-9</userinput> parameter is used with 528 <command>gzip</command> to make the smallest possible compressed image. To 529 make sure it will fit on the diskette, list the file's size.</para> 530 531 <screen><userinput><command>umount /mnt/loop1 && 532 losetup -d /dev/loop1 && # Omit if mount's -o loop was used 533 gzip -9 < /tmp/rfloppy > /tmp/rootfs.gz 534 ls -l /tmp/rootfs.gz</command></userinput></screen> 535 536 <para><emphasis>Join rescueimage and initrd onto a diskette</emphasis></para> 537 538 <para>Now the rescueimage and initial ramdisk image will be written to 539 the boot diskette. Before doing this, calculate the number of blocks 540 needed for rescueimage and for <filename>/tmp/rootfs.gz</filename> 541 (the initial ramdisk), individually, by dividing each 542 size by 1024 and adding one if there is any remainder. Add these two 543 results together. They must total 1,440 or fewer blocks. If they total 544 more than this, don't worry too much. Changes to make a two-diskette 545 set are presented later. Of course, you could reexamine your choices and 546 try to shrink either the rescueimage or the initial ramdisk image.</para> 547 548 <para>To make a single-floppy rescue, using devfs, use the following 549 commands. If you use the static <filename class="directory">/dev</filename> setup, use 550 <filename>/dev/fd0</filename> instead of the /dev/floppy/0.</para> 551 552 <screen><userinput><command>dd if=rescueimage of=/dev/floppy/0 bs=1k 553 rdev /dev/floppy/0 0,0 554 rdev -R /dev/floppy/0 0</command></userinput></screen> 555 556 <para><emphasis>Command explanations</emphasis></para> 557 558 <para><command>rdev /dev/floppy/0 0,0</command>: sets the root file system 559 the kernel will use when it boots. Because it loads an initrd, it will 560 automatically set that as the root device, initially. So, the 561 <option>0,0</option> gives it "no value", telling the kernel to not 562 mount any other device. Some folks give <filename>/dev/fd0</filename> or 563 something similar. But this has effect <emphasis>only</emphasis> when 564 <command>linuxrc</command> (really <application><ulink 565 url="http://www.busybox.net/downloads/busybox-0.60.4.tar.bz2">busybox 566 </ulink></application>) exits and the normal <command>init</command> 567 processes get invoked. Since this is not being done here, and the floppy 568 is <emphasis>not</emphasis> a valid file system, it would be useless 569 here. A hard drive would be a better choice if you are looking to 570 automatically bring the system up after repair. Since <application><ulink 571 url="http://www.busybox.net/downloads/busybox-0.60.4.tar.bz2">busybox 572 </ulink></application> provides the <command>reboot</command> command, 573 automatic initialization is not needed.</para> 574 575 <para>The <command>rdev -R /dev/floppy/0 0</command> will set the 576 "root flags" to zero. They have no use in this application.</para> 577 578 <para>The <command>dd</command> from above showed some results, like</para> 579 580 <screen> 480+1 records in 581 480+1 records out</screen> 582 583 <para>In this example the rescueimage (kernel) was 480+1 blocks in size. 584 Make sure that this number, which may be different for you, matches your 585 calculations from above. You need to calculate a "magic number" now 586 that will be inserted into rescueimage. The value consists of three 587 significant parts. Two are discussed here. The third is touched upon 588 later.</para> 589 590 <para>Bits 0 - 10 will contain the size of rescueimage, in blocks, 591 that you calculated above, and which should match the results from the 592 dd above. Bit 14 (the 15th bit, which is 2 to the 14th power, or 16,384) 593 is a flag that, when set to 1, tells the kernel an initial ramdisk is to 594 be loaded. So for the single-floppy rescue diskette, the two numbers 595 16,384 and 481 (or whatever number is right for your rescueimage size) are 596 added together to produce a decimal value, like 16865. This value is 597 inserted into the proper place in rescueimage by the 598 <command>rdev</command> command done next.</para> 599 600 <para>Insert the "magic number" into rescueimage and then write the 601 root file system right after rescueimage on the floppy by executing the 602 following commands, with the proper numbers inserted. Notice that the 603 <command>seek</command> parameter's number must be the size, in blocks, 604 of your rescueimage. If you use the static <filename class="directory">/dev</filename> 605 setup, use <filename>/dev/fd0</filename> in the commands below, instead 606 of <filename>/dev/floppy/0</filename>.</para> 607 608 <screen><userinput><command>rdev -r /dev/floppy/0 <replaceable>16865</replaceable> 609 dd if=/tmp/rootfs.gz of=/dev/floppy/0 bs=1k seek=<replaceable>481</replaceable></command></userinput></screen> 610 611 <para>In this command, <command>seek</command> was used to position to 612 the block following the end of the rescueimage (480+1) and begin writing the 613 root file system to the floppy.</para> 614 </sect3> 65 <para>In the future, the build instructions for this CD-ROM will be presented, 66 but they are not available at this writing.</para> 615 67 </sect2> 616 68 617 69 <sect2> 618 <title> A Two-diskette Rescue Setup</title>70 <title>Creating a Bootable USB Drive</title> 619 71 620 <para>If you just can't live with a single-diskette rescue system, here 621 is what to do to make a simple two-diskette system. Note that the 622 endless possibilities presented by the availability of 623 <command>linuxrc</command> and other components are not addressed 624 here. Here you will just use the kernel's ability to prompt for a second 625 diskette that contains the initrd image and load it.</para> 626 627 <para>Modify the above instructions as follows. First a different magic 628 number is needed. The 15th bit (bit 14) still needs to be set, but the 629 size of the rescueimage, in blocks, is replaced with a zero. The third 630 component, which was not discussed above, is now used. This is the 16th 631 bit (bit 15) of the "magic number". When set, it tells the kernel to ask 632 the user to insert the "root" floppy. It then loads the initrd image 633 from that diskette. Because the size of the rescueimage was replaced 634 by zero, the kernel starts loading from the "zero'th" block (the first 635 one) on the second diskette.</para> 636 637 <para>The 16th bit (bit 15) represents 2 raised to the 15th power, or 638 32,768. So the new magic number is 32,768 + 16384, which is 49,152. This 639 value tells the kernel to prompt for, and then load, an initial ramdisk 640 image from the first block on the inserted floppy. So your first 641 modification is to the command to write the "magic number" to the rescueimage 642 image on the diskette.</para> 643 644 <screen><userinput><command>rdev -r /dev/floppy/0 <replaceable>49152</replaceable></command></userinput></screen> 645 646 <para>Note that the initrd image is <emphasis>not</emphasis> copied to 647 the diskette yet. Remove the boot diskette and insert another diskette 648 that will hold your root file system. Run this modified command (don't 649 forget to use <filename>/dev/fd0</filename> if you don't use devfs). 650 Note that no <command>seek</command> parameter is used.</para> 651 652 <screen><userinput><command>dd if=/tmp/rootfs.gz of=/dev/floppy/0 bs=1k</command></userinput></screen> 653 654 <para>That's all there is to it. The possibilities from here are limited only 655 by your imagination and tenacity in pursuing enhancements. And your 656 willingness to research available documentation. A good starting point 657 is the "Documentation" directory in your kernel source tree. More help 658 may be gained at 659 <ulink url="http://linuxfromscratch.org/hints/news.html"><acronym>LFS </acronym> Hints</ulink> 660 (please use a mirror site that is suitable) and 661 <ulink url="http://www.tldp.org">TLDP</ulink>.</para> 72 <para>A USB Pen drive, sometimes called a Thumb drive, is recognized by Linux as 73 a SCSI device. Using one of these devices as a rescue device has the advantage 74 that it is usually large enough to hold more than a minimal boot image. You 75 can save critical data to the drive as well as use it to diagnose and recover 76 a damaged system. Booting such a drive requires BIOS support, but building the 77 system consists of formatting the drive, adding <application>grub</application> 78 as well as the kernel and supporting files.</para> 662 79 663 80 </sect2> -
x/installing/x-setup.xml
r310960e4 r46b900a 97 97 98 98 <indexterm zone="x-setup fonts"> 99 <primary sortas="e-etc-X11-xorg .conf">/etc/X11/xorg.conf</primary>99 <primary sortas="e-etc-X11-xorg-conf">/etc/X11/xorg.conf</primary> 100 100 </indexterm> 101 101
Note:
See TracChangeset
for help on using the changeset viewer.