source: postlfs/config/bootdisk.xml@ cfc2a54

10.0 10.1 11.0 11.1 11.2 11.3 12.0 12.1 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 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 v5_0 v5_0-pre1 v5_1 v5_1-pre1 xry111/intltool xry111/llvm18 xry111/soup3 xry111/test-20220226 xry111/xf86-video-removal
Last change on this file since cfc2a54 was cfc2a54, checked in by Larry Lawrence <larry@…>, 21 years ago

Added Bill's patch to postlfs

git-svn-id: svn://svn.linuxfromscratch.org/BLFS/trunk/BOOK@984 af4574ff-66df-0310-9fd7-8a98e5e911e0

  • Property mode set to 100644
File size: 5.7 KB
Line 
1<sect1 id="postlfs-config-bootdisk">
2<?dbhtml filename="bootdisk.html" dir="postlfs"?>
3<title>Creating a custom bootdisk</title>
4
5<para>How to create a decent bootdisk</para>
6<para>The intent here is to create a "rescue bootdisk" that will load
7enough 'linux' to enable you to do rescue operations. What is presented here
8is enough to do file manipulation, mounting and unmounting, and other tasks.
9This, however, is not the limit. The minimal disk is described here, and you can
10add anything you can fit on the floppy.</para>
11<para>
12Boot Disk/Rescue Disk
13</para>
14<para>
15First we will create a loopback file on which we build the root file
16system for our rescue disk image. This is commonly known as the initial
17ramdisk, or initrd for short, and it is automatically loaded by the boot
18process if all setup is done correctly.</para>
19<para>
20Next we'll make a file system on the loopback file and use 'mount' to mount
21the loopback file as a regular disk, allowing us to read and write files there.
22The following commands will build us a 4 MB image.
23</para>
24<screen><userinput>dd if=/dev/zero of=/tmp/rfloppy bs=1k count=4096 &amp;&amp;
25mke2fs -m 0 -N 2000 /tmp/rfloppy &amp;&amp;
26mount -o loop /tmp/rfloppy /mnt/loop1 &amp;&amp;
27rmdir /mnt/loop1/lost+found/</userinput></screen>
28
29
30<para>
31Now that we have a file mounted and usable, let's prepare it to be
32filled with useful material. Since this is only a rescue floppy we'll
33only need to set up the minimum directories.</para>
34<para><screen><userinput>mkdir /mnt/loop1/{dev,proc,etc,sbin,bin,lib,mnt,usr,var}</userinput></screen></para>
35<para>Next, we will set up the device files. I use devfs on my system, so
36the following command works well, as I only have the devices I use
37anyway. If you used MAKEDEV to create your devices, you'll want to
38trim the <filename>/mnt/loop1/dev</filename> directory to reclaim the inode space wasted
39by the devices you don't use in the <filename>dev</filename> directory.</para>
40<para><screen><userinput>cp -dpR /dev/* /mnt/loop1/dev</userinput></screen></para>
41<para>Now to tend to the <filename>/etc</filename> directory. To start, all we will do is use
42the passwd and group file that worked for our static chroot environment
43when we built LFS. We'll also copy the startup scripts over and a few other files
44that serve well as starting points.</para>
45<para><screen><userinput>cp -ax /etc/rc* /mnt/loop1/etc
46cp -ax /etc/fstab /mnt/loop1/etc
47echo "root:x:0:0:root:/root:/bin/bash" &gt; /mnt/loop1/etc/passwd
48cat &gt; /mnt/loop1/etc/group &lt;&lt; "EOF"
49root:x:0:
50bin:x:1:
51sys:x:2:
52kmem:x:3:
53tty:x:4:
54tape:x:5:
55daemon:x:6:
56floppy:x:7:
57disk:x:8:
58lp:x:9:
59dialout:x:10:
60audio:x:11:
61EOF</userinput></screen>
62</para>
63<para>
64
65To prevent automatic mounting of hard drive partitions,
66make sure to add the noauto option in their fstab entry. Also, add the
67following entries to the <filename>/mnt/loop1/etc/fstab</filename> to assist with mounting our
68floppy and the ram image</para>
69<para><screen>/dev/ram0 / ext2 defaults
70/dev/fd0 / ext2 defaults</screen></para>
71
72<para>Next, we will install <ulink
73url="http://www.busybox.net/downloads/busybox-0.60.4.tar.bz2">busybox</ulink>
74onto the image. Busybox incorporates many of the unix functions into a single small executable file.</para>
75<screen><userinput>make &amp;&amp;
76make PREFIX=/mnt/loop1 install &amp;&amp;
77cp -ax /var/utmp /mnt/loop1/var &amp;&amp;
78mkdir /mnt/loop1/var/log</userinput></screen>
79<para>
80Also, keeping in mind your space limitations, copy any other binaries and libraries you
81need to the image. Use the <userinput>ldd</userinput> command to
82see which libraries you will need to copy over for any executables.
83</para>
84<para>
85Now, since I use devfs to create devices on the fly and free up precious
86inodes on the floppy, we'll also install devfsd to facilitate the
87devices that busybox expects to find.</para>
88
89<screen><userinput>mv GNUmakefile Makefile &amp;&amp;
90make &amp;&amp;
91make PREFIX=/mnt/loop1 install &amp;&amp;
92cp /lib/libc.so.6 /lib/ld-linux.so.2 /lib/libdl.so.2 /tmp &amp;&amp;
93strip --strip-deb /tmp/ld-linux.so.2 /tmp/libc.so.6 /tmp/libdl.so.2 &amp;&amp;
94mv /tmp/ld-linux.so.2 /tmp/libc.so.6 /tmp/libdl.so.2 /mnt/loop1/lib/</userinput></screen>
95<para>
96We will also need to set up an rc script to handle the devfsd startup.
97Put this in <filename>/mnt/loop1/etc/init.d/rcS</filename>.</para>
98<screen>#!/bin/sh
99mount -t devfs devfs /dev
100/sbin/devfsd /dev</screen>
101
102<para>
103Next create your compressed root filesystem. We use -9 with gzip to
104make the smallest possible compressed image.</para>
105<screen><userinput>umount /mnt/loop1 &amp;&amp; dd if=/tmp/rfloppy bs=1k | gzip -v9 > rootfs.gz</userinput></screen>
106<screen><userinput>ls -l rootfs.gz</userinput> to make sure it will fit on the diskette.</screen>
107<para>
108Make a custom kernel that is optimized for size. Include only those features
109you will need to rescue your system. no sense in building in support for things
110like xfree86 dri, etc, as most rescues are performed from the command prompt.
111</para>
112<screen><userinput>dd if=rescueimg of=/dev/floppy/0 bs=1k</userinput>
113 429+1 records in
114 429+1 records out
115<userinput>rdev /dev/floppy/0 /dev/floppy/0</userinput>
116<userinput>rdev -R /dev/floppy/0 0</userinput>
117</screen>
118
119<para>In this example the rescueimage(KERNEL) was 429+1 blocks in size.
120We will remember this for the next command. We now write the root file
121system right after the kernel on the floppy by doing 16384+429+1=
12216814.</para>
123<screen><userinput>rdev -r /dev/floppy/0 16814</userinput></screen>
124
125
126<screen><userinput>dd if=rootfs.gz of=/dev/floppy/0 bs=1k seek=430</userinput></screen>
127<para>In this command we use seek to find the end of the kernel (429+1) and write the root file system to the floppy.
128</para>
129</sect1>
Note: See TracBrowser for help on using the repository browser.