1911 lines
61 KiB
Plaintext
1911 lines
61 KiB
Plaintext
The Linux Bootdisk HOWTO
|
|
Graham Chapman, grahamc@zeta.org.au
|
|
v1.01, 6 February 1995
|
|
|
|
This document describes how to create Linux boot, boot/root and util-
|
|
ity maintenance disks. These disks could be used as rescue disks or to
|
|
test new kernels.
|
|
|
|
1. Introduction
|
|
|
|
|
|
1.1. Why Build Boot Disks?
|
|
|
|
Linux boot disks are useful in a number of situations, such as:
|
|
|
|
o Testing a new kernel.
|
|
|
|
o Recovering from disk or system failure. Such a failure could be
|
|
anything from a lost boot sector to a disk head crash.
|
|
|
|
There are several ways of producing boot disks:
|
|
|
|
o Use one from a distribution such as Slackware. This will at least
|
|
allow you to boot.
|
|
|
|
o Use a rescue package to set up disks designed to be used as rescue
|
|
disks.
|
|
|
|
o Learn what is required for each of the various types of disk to
|
|
operate, then build your own.
|
|
|
|
I choose the last option - learn how it works so that you can do it
|
|
yourself. That way, if something breaks, you can work out what to do
|
|
to fix it. Plus you learn a lot about how Linux works along the way.
|
|
|
|
Experienced Linux users may find little of use in this document.
|
|
However users new to Linux system administration who wish to protect
|
|
against root disk loss and other mishaps may find it useful.
|
|
|
|
A note on versions - this document has been updated to support the
|
|
following packages and versions:
|
|
|
|
o Linux 1.1.73
|
|
|
|
o LILO 0.15
|
|
|
|
Copyright (c) Graham Chapman 1995.
|
|
|
|
Permission is granted for this material to be freely used and
|
|
distributed, provided the source is acknowledged. No warranty of any
|
|
kind is provided. You use this material at your own risk.
|
|
|
|
|
|
1.2. Feedback and Credits
|
|
|
|
I welcome any feedback, good or bad, on the content of this document.
|
|
Please let me know if you find any errors or omissions.
|
|
|
|
I thank the following people for correcting errors and providing
|
|
useful suggestions for improvement:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Randolph Bentson
|
|
Bjxrn-Helge Mevik
|
|
Johannes Stille
|
|
|
|
|
|
|
|
|
|
|
|
1.3. Change History
|
|
|
|
v1.01, 6 February 1995
|
|
|
|
o Fix: DO NOT cp <kernel file> /dev/fd0 - this will overwrite any
|
|
file system on the diskette.
|
|
|
|
o Fix: Put LILO boot.b and map files on target disk.
|
|
|
|
o Add: -dp flags to cp commands to avoid problems.
|
|
|
|
o Chg: restructure to try to improve readability.
|
|
|
|
o Add: can now use ext2 filesystem on root diskettes.
|
|
|
|
o Chg: can now separate boot and root diskettes.
|
|
|
|
o Add: credits section in Introduction.
|
|
|
|
o Add: FAQ.
|
|
|
|
v1.0, 2 January 1995
|
|
|
|
o Converted to conform to HOWTO documentation standards.
|
|
|
|
o Added new section - Change History.
|
|
|
|
o Various minor corrections.
|
|
|
|
v0.10, 1 November 1994 Original version, labelled "draft".
|
|
|
|
|
|
2. Disks
|
|
|
|
|
|
2.1. Summary of Disk Types
|
|
|
|
I classify boot-related disks into 4 types. The discussion here and
|
|
throughout this document uses the term "disk" to refer to diskettes
|
|
unless otherwise specified. Most of the discussion could be equally
|
|
well applied to hard disks.
|
|
|
|
A summary of disk types and uses is:
|
|
|
|
boot
|
|
A disk containing a kernel which can be booted. The disk can
|
|
contain a filesystem and use a boot loader to boot, or it can
|
|
simply contain the kernel only at the start of the disk. The
|
|
disk can be used to boot the kernel using a root file system on
|
|
another disk. This could be useful if you lost your boot loader
|
|
due to, for example, an incorrect installation attempt.
|
|
|
|
|
|
root
|
|
A disk with a file system containing everything required to run
|
|
a Linux system. It does not necessarily contain either a kernel
|
|
or a boot loader.
|
|
|
|
This disk can be used to run the system independently of any
|
|
other disks, once the kernel has been booted. A special kernel
|
|
feature allows a separate root disk to be mounted after booting,
|
|
with the root disk being automatically copied to a ramdisk.
|
|
|
|
You could use this type of disk to check another disk for
|
|
corruption without mounting it, or to restore another disk
|
|
following disk failure or loss of files.
|
|
|
|
|
|
boot/root
|
|
A disk which is the same as a root disk, but contains a kernel
|
|
and a boot loader. It can be used to boot from, and to run the
|
|
system. The advantage of this type of disk is that is it compact
|
|
- everything required is on a single disk. However the
|
|
gradually increasing size of everything means that it won't
|
|
necessarily always be possbile to fit everything on a single
|
|
diskette.
|
|
|
|
|
|
utility
|
|
A disk which contains a file system, but is not intended to be
|
|
mounted as a root file system. It is an additional data disk.
|
|
You would use this type of disk to carry additional utilities
|
|
where you have too much to fit on your root disk.
|
|
|
|
The term "utility" only really applies to diskettes, where you
|
|
would use a utility disk to store additional recovery utility
|
|
software.
|
|
|
|
|
|
2.2. Boot
|
|
|
|
|
|
2.2.1. Overview
|
|
|
|
All PC systems start the boot process by executing code in ROM to load
|
|
the sector from sector 0, cylinder 0 of the boot drive and try and
|
|
execute it. On most bootable disks, sector 0, cylinder 0 contains
|
|
either:
|
|
|
|
o code from a boot loader such as LILO, which locates the kernel,
|
|
loads it and executes it to start the boot proper.
|
|
|
|
o the start of an operating system kernel, such as Linux.
|
|
|
|
If a Linux kernel has been written to a diskette as a raw device, then
|
|
the first sector will be the first sector of the Linux kernel itself,
|
|
and this sector will continue the boot process by loading the rest of
|
|
the kernel and running Linux. For a more detailed description of the
|
|
boot sector contents, see the documentation in lilo-01.5 or higher.
|
|
|
|
An alternative method of storing a kernel on a boot disk is to create
|
|
a filesystem, not as a root filesystem, but simply as a means of
|
|
installing LILO and thus allowing boot-time command line options to be
|
|
specified. For example, the same kernel could then be used to boot
|
|
using a hard disk root filesystem, or a diskette root filesystem. This
|
|
could be useful if you were trying to rebuild the hard disk
|
|
filesystem, and wanted to repeatedly test results.
|
|
|
|
|
|
2.2.2. Setting Pointer to Root
|
|
|
|
The kernel must somehow obtain a pointer to the drive and partititon
|
|
to be mounted as the root drive. This can be provided in several ways:
|
|
|
|
o By setting ROOT_DEV = <device> in the Linux kernel makefile and
|
|
rebuilding the kernel (for advice on how to rebuild the kernel,
|
|
read the Linux FAQ and look in /usr/src/linux). Comments in the
|
|
Linux makefile describe the valid values for <device>.
|
|
|
|
o By running the rdev utility:
|
|
|
|
|
|
rdev <filename> <device>
|
|
|
|
|
|
|
|
|
|
|
|
This will set the root device of the kernel contained in <filename> to
|
|
be <device>. For example:
|
|
|
|
|
|
rdev Image /dev/sda1
|
|
|
|
|
|
|
|
|
|
|
|
This sets the root device in the kernel in Image to the first parti-
|
|
tion on the first SCSI drive.
|
|
|
|
There are some alternative ways of issuing the rdev command. Try:
|
|
|
|
|
|
rdev -?
|
|
|
|
|
|
|
|
|
|
and it will display command usage.
|
|
|
|
There is usually no need to configure the root device for boot
|
|
diskette use, because the kernel currently used to boot from probably
|
|
already points to the root drive device. The need can arise, howoever,
|
|
if you obtain a kernel from another machine, for example, from a
|
|
distribution, or if you want to use the kernel to boot a root
|
|
diskette. It never hurts to check, though. To use rdev to check the
|
|
current root device in a kernel file, enter the command:
|
|
|
|
|
|
rdev -r <filename>
|
|
|
|
|
|
|
|
|
|
It is possible to change the root device set in a kernel by means
|
|
other than using rdev. For details, see the FAQ at the end of this
|
|
document.
|
|
|
|
|
|
2.2.3. Copying Kernel to Boot Diskette
|
|
|
|
Once the kernel has been configured then it must be copied to the boot
|
|
diskette.
|
|
|
|
If the disk is not intended to contain a file system, then the kernel
|
|
must be copied using the dd command, as follows:
|
|
|
|
|
|
|
|
dd if=<filename> of=<device>
|
|
|
|
where <filename> is the name of the kernel
|
|
and <device> is the diskette raw device,
|
|
usually /dev/fd0
|
|
|
|
|
|
|
|
|
|
The seek parameter to the dd command should NOT be used. The file must
|
|
be copied to start at the boot sector (sector 0, cylinder 0), and
|
|
omitting the seek parameter will do this.
|
|
|
|
The output device name varies. Many systems have /dev/fd0 as an alias
|
|
of one sort or another for the "real" device name for the default
|
|
diskette drive. For example, where the default drive (i.e. "drive A:"
|
|
in DOS) is a high density 3 1/2 inch diskette drive, the device name
|
|
will be /dev/fd0H1440, but usually /dev/fd0 points to the same device.
|
|
|
|
Where the kernel is to be copied to a boot disk containing a
|
|
filesystem, then the disk is mounted at a suitable point in a
|
|
currently-mounted filesystem, then the cp command is used. For
|
|
example:
|
|
|
|
|
|
mount -t ext2 /dev/fd0 /mnt
|
|
cp Image /mnt
|
|
umount /mnt
|
|
|
|
|
|
|
|
|
|
|
|
2.3. Root
|
|
|
|
|
|
2.3.1. Overview
|
|
|
|
A root disk contains a complete working Linux system, but without
|
|
necessarily including a kernel. In other words, the disk may not be
|
|
bootable, but once the kernel is running, the root disk contains
|
|
everything needed to support a full Linux system. To be able to do
|
|
this, the disk must include the minimum requirements for a Linux
|
|
system:
|
|
|
|
o File system.
|
|
|
|
o Minimum set of directories - dev, proc, bin, etc, lib, usr, tmp.
|
|
|
|
o Basic set of utilities - bash (to run a shell), ls, cp etc.
|
|
|
|
o Minimum set of config files - rc, inittab, fstab etc.
|
|
|
|
o Runtime library to provide basic functions used by utilities.
|
|
|
|
Of course, any system only becomes useful when you can run something
|
|
on it, and a root diskette usually only becomes useful when you can do
|
|
something like:
|
|
|
|
o Check a file system on another drive, for example to check your
|
|
root file system on your hard drive, you need to be able to boot
|
|
Linux from another drive, as you can with a root diskette system.
|
|
Then you can run fsck on your original root drive while it is not
|
|
mounted.
|
|
|
|
|
|
o Restore all or part of your original root drive from backup using
|
|
archive/compression utilities including cpio, tar, gzip and ftape.
|
|
|
|
|
|
2.4. Boot/Root
|
|
|
|
This is essentially the same as the root disk, with the addition of a
|
|
kernel and a boot loader such as LILO.
|
|
|
|
With this configuration, a kernel file is copied to the root file
|
|
system, and LILO is then run to install a configuration which points
|
|
to the kernel file on the target disk. At boot time, LILO will boot
|
|
the kernel from the target disk.
|
|
|
|
Several files must be copied to the diskette for this method to work.
|
|
Details of these files and the required LILO configuration, including
|
|
a working sample, are given below in the section titled "LILO".
|
|
|
|
|
|
2.4.1. RAM Drives and Root Filesystems on Diskette
|
|
|
|
For a diskette root filesystem to be efficient, you need to be able to
|
|
run it from a ramdrive, i.e. an emulated disk drive in main memory.
|
|
This avoids having the system run at a snail's pace, which a diskette
|
|
would impose.
|
|
|
|
There is an added benefit from using a ramdrive - the Linux kernel
|
|
includes an automatic ramdisk root feature, whereby it will, under
|
|
certain circumstances, automatically copy the contents of a root
|
|
diskette to a RAM disk, and then switch the root drive to be the RAM
|
|
disk instead of the diskette. This has two major benefits:
|
|
|
|
o The system runs a lot faster.
|
|
|
|
o The diskette drive is freed up to allow other diskettes to be used
|
|
on a single-diskette drive system.
|
|
|
|
The requirements for this feature to be invoked are:
|
|
|
|
o The file system on the diskette drive must be either a minix or an
|
|
ext2 file system. The ext2 file system is generally the preferred
|
|
file system to use. Note that if you have a Linux kernel earlier
|
|
than 1.1.73, then you should see the comments in the section below
|
|
titled "File Systems" to see whether your kernel will support ext2.
|
|
If your kernel is old then you may have to use minix. This will not
|
|
cause any significant problems.
|
|
|
|
o A RAM disk must be configured into the kernel, and it must be at
|
|
least as big as the diskette drive.
|
|
|
|
A RAM disk can be configured into the kernel in several ways:
|
|
|
|
o By uncommenting the RAMDISK macro in the Linux kernel makefile, so
|
|
that it reads:
|
|
|
|
|
|
RAMDISK = -DRAMDISK=1440
|
|
|
|
|
|
|
|
|
|
to define a ramdisk of 1440 1K blocks, the size of a high-density
|
|
diskette.
|
|
|
|
o By running the rdev utility, available on most Linux systems. This
|
|
utility displays or sets values for several things in the kernel,
|
|
including the desired size for a ramdisk. To configure a ramdisk of
|
|
1440 blocks into a kernel in a file named Image, enter:
|
|
|
|
|
|
rdev -r Image 1440
|
|
|
|
|
|
|
|
|
|
this might change in the future, of course. To see what your version
|
|
of rdev does, enter the command:
|
|
|
|
|
|
rdev -?
|
|
|
|
|
|
|
|
|
|
and it should display its options.
|
|
|
|
o By using the boot loader package LILO to configure it into your
|
|
kernel at boot time. This can be done using the LILO configuration
|
|
parameter:
|
|
|
|
|
|
ramdisk = 1440
|
|
|
|
|
|
|
|
|
|
to request a RAM drive of 1440 1K blocks at boot time.
|
|
|
|
o By interrupting a LILO automatic boot and adding ramdisk=1440 to
|
|
the command line. For example, such a command line might be:
|
|
|
|
|
|
vmlinux ramdisk=1440
|
|
|
|
|
|
|
|
|
|
See the section on LILO for more details.
|
|
|
|
o By editing the kernel file and altering the values near the start
|
|
of the file which record the ramdisk size. This is definitely a
|
|
last resort, but can be done. See the FAQ near the end of this
|
|
document for more details.
|
|
|
|
The easiest of these methods is LILO configuration, because you need
|
|
to set up a LILO configuration file anyway, so why not add the ramdisk
|
|
size here?
|
|
|
|
LILO configuration is briefly described in a section titled "LILO"
|
|
below, but it is advisable to obtain the latest stable version of LILO
|
|
from your nearest Linux mirror site, and read the documentation that
|
|
comes with it.
|
|
|
|
|
|
2.5. Utility
|
|
|
|
Often one disk is not sufficient to hold all the software you need to
|
|
be able to perform rescue functions of analysing, repairing and
|
|
restoring corrupted disk drives. By the time you include tar, gzip
|
|
e2fsck, fdisk, Ftape and so on, there is enough for a whole new
|
|
diskette, maybe even more if you want lots of tools.
|
|
|
|
This means that a rescue set often requires a utility diskette, with a
|
|
file system containing any extra files required. This file system can
|
|
then be mounted at a convenient point, such as /usr, on the boot/root
|
|
system.
|
|
|
|
Creating a file system is fairly easy, and is described above in the
|
|
section titled "File Systems" above.
|
|
|
|
|
|
3. Components
|
|
|
|
|
|
3.1. File Systems
|
|
|
|
The Linux kernel now supports two file system types for root disks to
|
|
be automatically copied to ramdisk. These are minix and ext2, of which
|
|
ext2 is the preferred file system. The ext2 support was added
|
|
sometime between 1.1.17 and 1.1.57, I'm not sure exactly which. If you
|
|
have a kernel within this range then edit
|
|
/usr/src/linux/drivers/block/ramdisk.c and look for the word "ext2".
|
|
If it is not found, then you will have to use a minix file system, and
|
|
therefore the "mkfs" command to create it.
|
|
|
|
To create an ext2 file system on a diskette on my system, I issue the
|
|
following command:
|
|
|
|
|
|
mke2fs /dev/fd0
|
|
|
|
|
|
|
|
|
|
The mke2fs command will automatically detect the space available and
|
|
configure itself accordingly. It does not therefore require any
|
|
parameters.
|
|
|
|
An easy way to test the result is to create a system using the above
|
|
command or similar, and then attempt to mount the diskette. If it is
|
|
an ext2 system, then the command:
|
|
|
|
|
|
mount -t ext2 /dev/fd0 /<mount point>
|
|
|
|
|
|
|
|
|
|
should work.
|
|
|
|
|
|
3.2. Kernel
|
|
|
|
|
|
3.2.1. Building a Custom Kernel
|
|
|
|
In most cases it would be possible to copy your current kernel and
|
|
boot the diskette from that. However there may be cases where you wish
|
|
to build a separate one.
|
|
|
|
One reason is size. The kernel is one of the largest files in a
|
|
minimum system, so if you want to build a boot/root diskette, then you
|
|
will have to reduce the size of the kernel as much as possible. The
|
|
kernel now supports changing the diskette after booting and before
|
|
mounting root, so it is not necessary any more to squeeze the kernel
|
|
into the same disk as everything else, therefore these comments apply
|
|
only if you choose to build a boot/root diskette.
|
|
|
|
There are two ways of reducing kernel size:
|
|
|
|
o Building it with the minumum set of facilities necessary to support
|
|
the desired system. This means leaving out everything you don't
|
|
need. Networking is a good thing to leave out, as well as support
|
|
for any disk drives and other devices which you don't need when
|
|
running your boot/root system.
|
|
|
|
o Compressing it, using the standard compressed-kernel option
|
|
included in the makefile:
|
|
|
|
|
|
make zImage
|
|
|
|
|
|
|
|
|
|
Refer to the documentation included with the kernel source for up-to-
|
|
date information on building compressed kernels. Note that the kernel
|
|
source is usually in /usr/src/linux.
|
|
|
|
Having worked out a minimum set of facilities to include in a kernel,
|
|
you then need to work out what to add back in. Probably the most
|
|
common uses for a boot/root diskette system would be to examine and
|
|
restore a corrupted root file system, and to do this you may need
|
|
kernel support.
|
|
|
|
For example, if your backups are all held on tape using Ftape to
|
|
access your tape drive, then, if you lose your current root drive and
|
|
drives containing Ftape, then you will not be able to restore from
|
|
your backup tapes. You will have to reinstall Linux, download and
|
|
reinstall Ftape, and then try and read your backups.
|
|
|
|
It is probably desirable to maintain a copy of the same version of
|
|
backup utilities used to write the backups, so that you don't waste
|
|
time trying to install versions that cannot read your backup tapes.
|
|
|
|
The point here is that, whatever I/O support you have added to your
|
|
kernel to support backups should also be added into your boot/root
|
|
kernel. Note, though, that the Ftape module (or at least the one I
|
|
have) is quite large and will not fit on your boot/root diskette. You
|
|
will need to put it on a utility diskette - this is described below in
|
|
the section titled "ADDING UTILITY DISKETTES".
|
|
|
|
The procedure for actually building the kernel is described in the
|
|
documentation that comes with the kernel. It is quite easy to follow,
|
|
so start by looking in /usr/src/linux. Note that if you have trouble
|
|
building a kernel, then you should probably not attempt to build
|
|
boot/root systems anyway.
|
|
|
|
|
|
3.3. Devices
|
|
|
|
A /dev directory containing a special file for all devices to be used
|
|
by the system is mandatory for any Linux system. The directory itself
|
|
is a normal directory, and can be created with the mkdir command in
|
|
the normal way. The device special files, however, must be created in
|
|
a special way, using the mknod command.
|
|
|
|
There is a shortcut, though - copy your existing /dev directory
|
|
contents, and delete the ones you don't want. The only requirement is
|
|
that you copy the device special files using the -R option. This will
|
|
copy the directory without attempting to copy the contents of the
|
|
files. Note that if you use lower caser, as in "-r", there will be a
|
|
vast difference, because you will probably end up copying the entire
|
|
contents of all of your hard disks - or at least as much of them as
|
|
will fit on a diskette! Therefore, take care, and use the command:
|
|
|
|
|
|
cp -dpR /dev /mnt
|
|
|
|
|
|
|
|
|
|
assuming that the diskette is mounted at /mnt. The dp switches ensure
|
|
that symbolic links are copied as links (rather than the target file
|
|
being copied) and that the original file attributes are preserved,
|
|
thus preserving ownership information.
|
|
|
|
If you want to do it the hard way, use ls -l to display the major and
|
|
minor device numbers for the devices you want, and create them on the
|
|
diskette using mknod.
|
|
|
|
Many distributions include a shell script called MAKEDEV in the /dev
|
|
directory. This shell script could be used to create the devices, but
|
|
it is probably easier to just copy your existing ones, especially for
|
|
rescue disk purposes.
|
|
|
|
|
|
3.4. Directories
|
|
|
|
It might be possible to get away with just /dev, /proc and /etc to run
|
|
a Linux system. I don't know - I've never tested it. However a
|
|
reasonable minimum set of directories consists of the following:
|
|
|
|
/dev
|
|
Required to perform I/O with devices
|
|
|
|
/proc
|
|
Required by the ps command
|
|
|
|
/etc
|
|
System configuration files
|
|
|
|
/bin
|
|
Utility executables considered part of the system
|
|
|
|
/lib
|
|
Shared libraries to provide run-time support
|
|
|
|
/mnt
|
|
A mount point for maintenance on other disks
|
|
|
|
/usr
|
|
Additional utilities and applications
|
|
|
|
Note that the directory tree presented here is for root diskette use
|
|
only. Refer to the Linux File System Standard for much better
|
|
information on how file systems should be structured in "standard"
|
|
Linux systems.
|
|
|
|
Four of these directories can be created very easily:
|
|
|
|
o /dev is described above in the section titled DEVICES.
|
|
|
|
o /proc only needs to exist. Once the directory is created using
|
|
mkdir, nothing more is required.
|
|
|
|
o Of the others, /mnt and /usr are included in this list only as
|
|
mount points for use after the boot/root system is running. Hence
|
|
again, these directories only need to be created.
|
|
|
|
The remaining 3 directories are described in the following sections.
|
|
|
|
|
|
3.4.1. /etc
|
|
|
|
This directory must contain a number of configuration files. On most
|
|
systems, these can be divided into 3 groups:
|
|
|
|
o Required at all times, e.g. rc, fstab, passwd.
|
|
|
|
o May be required, but no-one is too sure.
|
|
|
|
o Junk that crept in.
|
|
|
|
Files which are not essential can be identified with the command:
|
|
|
|
|
|
ls -ltru
|
|
|
|
|
|
|
|
|
|
This lists files in reverse order of date last accessed, so if any
|
|
files are not being accessed, then they can be omitted from a root
|
|
diskette.
|
|
|
|
On my root diskettes, I have the number of config files down to 15.
|
|
This reduces my work to dealing with three sets of files:
|
|
|
|
o The ones I must configure for a boot/root system:
|
|
|
|
|
|
rc system startup script
|
|
fstab list of file systems to be mounted
|
|
inittab parameters for the init process - the
|
|
first process started at boot time.
|
|
|
|
|
|
|
|
|
|
|
|
o the ones I should tidy up for a boot/root system:
|
|
|
|
|
|
passwd list of logins
|
|
shadow contains passwords
|
|
|
|
|
|
|
|
|
|
These should be pruned on secure systems to avoid copying user's pass-
|
|
words off the system, and so that when you boot from diskette,
|
|
unwanted logins are rejected.
|
|
|
|
o The rest. They work at the moment, so I leave them alone.
|
|
|
|
Out of this, I only really have to configure two files, and what they
|
|
should contain is suprisingly small.
|
|
|
|
o rc should contain:
|
|
|
|
|
|
#!/bin/sh
|
|
/etc/mount -av
|
|
/bin/hostname boot_root
|
|
|
|
and I don't really need to run hostname - it just looks nicer if I do.
|
|
Even mount is actually only needed to mount /proc to support the ps
|
|
command - Linux will run without it.
|
|
|
|
o fstab should contain:
|
|
|
|
|
|
/dev/fd0 / ext2 defaults
|
|
/proc /proc proc defaults
|
|
|
|
|
|
|
|
|
|
I don't think that the first entry is really needed, but I find that
|
|
if I leave it out, mount won't mount /proc.
|
|
|
|
Inittab should be ok as is, unless you want to ensure that users on
|
|
serial ports cannot login. To prevent this, comment out all the
|
|
entries for /etc/getty which include a ttys or ttyS device at the end
|
|
of the line. Leave in the tty ports so that you can login at the
|
|
console.
|
|
|
|
For the rest, just copy all the text files in your /etc directory,
|
|
plus all the executables in your /etc directory that you cannot be
|
|
sure you do not need. As a guide, consult the sample ls listing in
|
|
"Sample Boot/Root ls-lR Directory Listing" - this is what I have, so
|
|
probably it will be sufficient for you if you copy only those files.
|
|
|
|
|
|
3.4.2. /bin
|
|
|
|
Here is a convenient point to place the extra utilities you need to
|
|
perform basic operations, utilities such as ls, mv, cat, dd etc.
|
|
|
|
See the section titled "Sample Boot/Root ls-lR Directory Listing" for
|
|
the list of files that I place in my boot/root /bin directory. You may
|
|
notice that it does not include any of the utilities required to
|
|
restore from backup, such as cpio, tar, gzip etc. That is because I
|
|
place these on a separate utility diskette, to save space on the
|
|
boot/root diskette. Once I have booted my boot/root diskette, it then
|
|
copies itself to the ramdisk leaving the diskette drive free to mount
|
|
another diskette, the utility diskette. I usually mount this as /usr.
|
|
|
|
Creation of a utility diskette is described below in the section
|
|
titled "Adding Utility Diskettes".
|
|
|
|
|
|
3.4.3. /lib
|
|
|
|
Two libraries are required to run many facilities under Linux:
|
|
|
|
o ld.so
|
|
|
|
o libc.so.4
|
|
|
|
If they are not found in your /lib directory then the system will be
|
|
unable to boot. If you're lucky you may see an error message telling
|
|
you why.
|
|
|
|
These should be present in you existing /lib directory. Note that
|
|
libc.so.4 may be a symlink to a libc library with version number in
|
|
the filename. If you issue the command:
|
|
|
|
|
|
ls -l /lib
|
|
|
|
you will see something like:
|
|
|
|
|
|
libc.so.4 -> libc.so.4.5.21
|
|
|
|
|
|
|
|
|
|
In this case, the libc library you want is libc.so.4.5.21.
|
|
|
|
|
|
3.5. LILO
|
|
|
|
|
|
3.5.1. Overview
|
|
|
|
For the boot/root to be any use, it must be bootable. To achieve this,
|
|
the easiest way (possibly the only way?) is to install a boot loader,
|
|
which is a piece of executable code stored at sector 0, cylinder 0 of
|
|
the diskette. See the section above titled "BOOT DISKETTE" for an
|
|
overview of the boot process.
|
|
|
|
LILO is a tried and trusted boot loader available from any Linux
|
|
mirror site. It allows you to configure the boot loader, including:
|
|
|
|
o Which device is to be mounted as the root drive.
|
|
|
|
o Whether to use a ramdisk.
|
|
|
|
|
|
3.5.2. Sample LILO Configuration
|
|
|
|
This provides a very convenient place to specify to the kernel how it
|
|
should boot. My root/boot LILO configuration file, used with LILO
|
|
0.15, is:
|
|
|
|
|
|
______________________________________________________________________
|
|
boot = /dev/fd0
|
|
install = ./mnt/boot.b
|
|
map = ./mnt/lilo.map
|
|
delay = 50
|
|
message = ./mnt/lilo.msg
|
|
timeout = 150
|
|
compact
|
|
image = ./mnt/vmlinux
|
|
ramdisk = 1440
|
|
root = /dev/fd0
|
|
______________________________________________________________________
|
|
|
|
|
|
|
|
|
|
Note that boot.b, lilo.msg and the kernel must first have been copied
|
|
to the diskette using a command similar to:
|
|
|
|
|
|
______________________________________________________________________
|
|
cp /boot/boot.b ./mnt
|
|
______________________________________________________________________
|
|
|
|
|
|
|
|
|
|
If this is not done, then LILO will not run correctly at boot time if
|
|
the hard disk is not available, and there is little point setting up a
|
|
rescue disk which requires a hard disk in order to boot.
|
|
|
|
I run lilo using the command:
|
|
|
|
|
|
/sbin/lilo -C <configfile>
|
|
|
|
|
|
|
|
|
|
I run it from the directory containing the mnt directory where I have
|
|
mounted the diskette. This means that I am telling LILO to install a
|
|
boot loader on the boot device (/dev/fd0 in this case), to boot a
|
|
kernel in the root directory of the diskette.
|
|
|
|
I have also specified that I want the root device to be the diskette,
|
|
and I want a RAM disk created of 1440 1K blocks, the same size as the
|
|
diskette. Since I have created an ext2 file system on the diskette,
|
|
this completes all the conditions required for Linux to automatically
|
|
switch the root device to the ramdisk, and copy the diskette contents
|
|
there as well.
|
|
|
|
The ramdisk features of Linux are described further in the section
|
|
above titled "RAM DRIVES AND BOOT/ROOT SYSTEMS".
|
|
|
|
It is also worth considering using the "single" parameter to cause
|
|
Linux to boot in single-user mode. This could be useful to prevent
|
|
users logging in on serial ports.
|
|
|
|
I also use the "DELAY" "MESSAGE" and "TIMEOUT" statements so that when
|
|
I boot the disk, LILO will give me the opportunity to enter command
|
|
line options if I wish. I don't need them at present, but I never know
|
|
when I might want to set a different root device or mount a filesystem
|
|
read-only.
|
|
|
|
The message file I use contains the message:
|
|
|
|
|
|
|
|
Linux Boot/Root Diskette
|
|
========================
|
|
|
|
Enter a command line of the form:
|
|
|
|
vmlinux [ command-line options]
|
|
|
|
If nothing is entered, linux will be loaded with
|
|
defaults after 15 seconds.
|
|
|
|
|
|
|
|
|
|
This is simply a reminder to myself what my choices are.
|
|
|
|
Readers are urged to read the LILO documentation carefully before
|
|
atttempting to install anything. It is relatively easy to destroy
|
|
partitions if you use the wrong "boot = " parameter. If you are
|
|
inexperienced, do NOT run LILO until you are sure you understand it
|
|
and you have triple-checked your parameters.
|
|
|
|
|
|
3.5.3. Removing LILO
|
|
|
|
One other thing I might as well add here while I'm on the LILO topic:
|
|
if you mess up lilo on a drive containing DOS, you can always replace
|
|
the boot sector with the DOS boot loader by issuing the DOS command:
|
|
FDISK /MBR
|
|
|
|
|
|
|
|
|
|
where MBR stands for "Master Boot Record". Note that some purists
|
|
disagree with this, and they may have grounds, but it works.
|
|
|
|
|
|
3.5.4. Useful LILO Options
|
|
|
|
|
|
LILO has several useful options which are worth keeping in mind when
|
|
building boot disks:
|
|
|
|
o Command line options - you can enter command line options to set
|
|
the root device, ramdrive size, special device parameters, or other
|
|
things. If you include the DELAY = nn statement in your LILO
|
|
configuration file, then LILO will pause to allow you to select a
|
|
kernel image to boot, and to enter, on the same line, any options.
|
|
For example:
|
|
|
|
|
|
vmlinux aha152x=0x340,11,3,1 ro
|
|
|
|
|
|
|
|
|
|
will pass the aha152x parameters through to the aha152x scsi disk
|
|
driver (provided that driver has been included when the kernel was
|
|
built) and will ask for the root filesystem to be mounted read-only.
|
|
|
|
o Command line "lock" option - this option asks LILO to store the
|
|
command line entered as the default command line to be used for all
|
|
future boots. This is particularly useful where you have a device
|
|
which cannot be autoselected. By using "lock" you can avoid having
|
|
to type in the device parameter string every time you boot. For
|
|
example:
|
|
|
|
|
|
vmlinux aha152x=0x340,11,3,1 root=/dev/sda8 ro lock
|
|
|
|
|
|
|
|
|
|
o APPEND configuration statement - this allows device parameter
|
|
strings to be stored in the configuration, as an alternative to
|
|
using the "lock" command line option. Note that any keywords of the
|
|
form word=value MUST be enclosed in quotes. For example:
|
|
|
|
|
|
APPEND = "aha152x=0x340,11,3,1"
|
|
|
|
|
|
|
|
|
|
o DELAY configuration statement - this pauses for DELAY tenths of
|
|
seconds and allows the user to interrupt the automatic boot of the
|
|
default command line, so that the user can enter an alternate
|
|
command line.
|
|
|
|
|
|
4. Samples
|
|
|
|
|
|
|
|
4.1. Disk Directory Listings
|
|
|
|
This lists the contents of files and directories that I keep on my
|
|
hard disk to use when building boot/root and utility diskettes. It
|
|
shows which files I put in the /etc and /bin directories on my
|
|
diskettes.
|
|
|
|
The sample shell scripts in the next section use these directories and
|
|
files as a model to build the diskettes.
|
|
|
|
|
|
4.1.1. Boot/Root Disk ls-lR Directory Listing
|
|
|
|
The boot/root listing is of directory boot_disk:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
total 226
|
|
drwxr-xr-x 2 root root 1024 Oct 8 13:40 bin/
|
|
drwxr-xr-x 2 root root 3072 Sep 8 16:37 dev/
|
|
drwxr-xr-x 2 root root 1024 Oct 8 12:38 etc/
|
|
drwxr-xr-x 2 root root 1024 Sep 10 14:58 lib/
|
|
-rw-r--r-- 1 root root 297956 Jan 25 21:55 vmlinux
|
|
|
|
boot_disk/bin:
|
|
total 366
|
|
-rwxr-xr-x 1 root root 4376 Sep 9 21:34 cat*
|
|
-rwxr-xr-x 1 root root 4112 Sep 9 21:34 chown*
|
|
-rwxr-xr-x 1 root root 12148 Sep 9 21:34 cp*
|
|
-rwxr-xr-x 1 root root 4376 Sep 9 21:34 cut*
|
|
-rwxr-xr-x 1 root root 7660 Sep 9 21:34 dd*
|
|
-rwxr-xr-x 1 root root 4696 Sep 9 21:34 df*
|
|
-rwx--x--x 1 root root 1392 Sep 10 14:13 hostname*
|
|
-rwxr-xr-x 1 root root 5252 Sep 9 21:34 ln*
|
|
-rwsr-xr-x 1 root root 6636 Sep 9 21:34 login*
|
|
-rwxr-xr-x 1 root root 13252 Sep 9 21:34 ls*
|
|
-rwxr-xr-x 1 root root 4104 Sep 9 21:34 mkdir*
|
|
-rwxr-xr-x 1 root root 21504 Sep 10 15:27 more*
|
|
-rwxr-xr-x 1 root root 6744 Sep 9 21:34 mv*
|
|
-rwxr-xr-x 1 root root 9780 Sep 9 21:34 ps*
|
|
-rwxr-xr-x 1 root root 5076 Sep 9 21:34 rm*
|
|
-r-xr-xr-x 1 root root 12604 Sep 9 21:34 sed*
|
|
-rwxr-xr-x 1 root root 222208 Sep 9 21:34 sh*
|
|
-rws--x--x 1 root root 16464 Sep 9 21:34 su*
|
|
-rwxr-xr-x 1 root root 1216 Sep 9 21:34 sync*
|
|
|
|
boot_disk/dev:
|
|
total 73
|
|
-rwxr-xr-x 1 root root 8331 Sep 8 16:31 MAKEDEV*
|
|
crw-r--r-- 1 root root 10, 3 Sep 8 16:31 bmouseatixl
|
|
crw-r--r-- 1 root root 10, 0 Sep 8 16:31 bmouselogitec
|
|
crw-r--r-- 1 root root 10, 2 Sep 8 16:31 bmousems
|
|
crw-r--r-- 1 root root 10, 1 Sep 8 16:31 bmouseps2
|
|
crw------- 1 root root 0, 0 Sep 8 16:31 boot0
|
|
crw-r--r-- 1 root root 4, 0 Sep 8 16:31 console
|
|
crw-r--r-- 1 root root 5, 64 Sep 8 16:31 cua0
|
|
crw-r--r-- 1 root root 5, 65 Sep 8 16:31 cua1
|
|
crw-r--r-- 1 root root 5, 66 Sep 8 16:31 cua2
|
|
crw-r--r-- 1 root root 5, 67 Sep 8 16:31 cua3
|
|
brw-r--r-- 1 root root 2, 0 Sep 8 16:31 fd0
|
|
brw-r--r-- 1 root root 2, 12 Sep 8 16:31 fd0D360
|
|
brw-r--r-- 1 root root 2, 16 Sep 8 16:31 fd0D720
|
|
brw-r--r-- 1 root root 2, 28 Sep 8 16:31 fd0H1440
|
|
brw-r--r-- 1 root root 2, 12 Sep 8 16:31 fd0H360
|
|
brw-r--r-- 1 root root 2, 16 Sep 8 16:31 fd0H720
|
|
brw-r--r-- 1 root root 2, 16 Sep 8 16:31 fd0Q720
|
|
brw-r--r-- 1 root root 2, 4 Sep 8 16:31 fd0d360
|
|
brw-r--r-- 1 root root 2, 8 Sep 8 16:31 fd0h1200
|
|
brw-r--r-- 1 root root 2, 20 Sep 8 16:31 fd0h360
|
|
brw-r--r-- 1 root root 2, 24 Sep 8 16:31 fd0h720
|
|
brw-r--r-- 1 root root 2, 24 Sep 8 16:31 fd0q720
|
|
brw-r--r-- 1 root root 2, 1 Sep 8 16:31 fd1
|
|
brw-r--r-- 1 root root 2, 13 Sep 8 16:31 fd1D360
|
|
brw-r--r-- 1 root root 2, 17 Sep 8 16:31 fd1D720
|
|
brw-r--r-- 1 root root 2, 29 Sep 8 16:31 fd1H1440
|
|
brw------- 1 root root 2, 31 Sep 8 16:31 fd1H1722
|
|
brw-r--r-- 1 root root 2, 13 Sep 8 16:31 fd1H360
|
|
brw-r--r-- 1 root root 2, 17 Sep 8 16:31 fd1H720
|
|
brw-r--r-- 1 root root 2, 17 Sep 8 16:31 fd1Q720
|
|
brw-r--r-- 1 root root 2, 5 Sep 8 16:31 fd1d360
|
|
brw-r--r-- 1 root root 2, 9 Sep 8 16:31 fd1h1200
|
|
brw-r--r-- 1 root root 2, 21 Sep 8 16:31 fd1h360
|
|
brw-r--r-- 1 root root 2, 25 Sep 8 16:31 fd1h720
|
|
brw-r--r-- 1 root root 2, 25 Sep 8 16:31 fd1q720
|
|
brw-r----- 1 root root 3, 0 Sep 8 16:31 hda
|
|
brw-r----- 1 root root 3, 1 Sep 8 16:31 hda1
|
|
brw-r----- 1 root root 3, 2 Sep 8 16:31 hda2
|
|
brw-r----- 1 root root 3, 3 Sep 8 16:31 hda3
|
|
brw-r----- 1 root root 3, 4 Sep 8 16:31 hda4
|
|
brw-r----- 1 root root 3, 5 Sep 8 16:31 hda5
|
|
brw-r----- 1 root root 3, 6 Sep 8 16:31 hda6
|
|
brw-r----- 1 root root 3, 7 Sep 8 16:31 hda7
|
|
brw-r----- 1 root root 3, 8 Sep 8 16:31 hda8
|
|
brw-r----- 1 root root 3, 64 Sep 8 16:31 hdb
|
|
brw-r----- 1 root root 3, 65 Sep 8 16:31 hdb1
|
|
brw-r----- 1 root root 3, 66 Sep 8 16:31 hdb2
|
|
brw-r----- 1 root root 3, 67 Sep 8 16:31 hdb3
|
|
brw-r----- 1 root root 3, 68 Sep 8 16:31 hdb4
|
|
brw-r----- 1 root root 3, 69 Sep 8 16:31 hdb5
|
|
brw-r----- 1 root root 3, 70 Sep 8 16:31 hdb6
|
|
brw-r----- 1 root root 3, 71 Sep 8 16:31 hdb7
|
|
brw-r----- 1 root root 3, 72 Sep 8 16:31 hdb8
|
|
crw-r----- 1 root root 1, 2 Sep 8 16:31 kmem
|
|
brw------- 1 root root 12, 0 Sep 8 16:31 loop0
|
|
brw------- 1 root root 12, 1 Sep 8 16:31 loop1
|
|
crw-r--r-- 1 root root 6, 0 Sep 8 16:31 lp0
|
|
crw-r--r-- 1 root root 6, 1 Sep 8 16:31 lp1
|
|
crw-r--r-- 1 root root 6, 2 Sep 8 16:31 lp2
|
|
brw-r--r-- 1 root root 12, 0 Sep 8 16:31 mcd0
|
|
crw-r----- 1 root root 1, 1 Sep 8 16:31 mem
|
|
crw-r--r-- 1 root root 5, 65 Sep 8 16:31 modem
|
|
crw-r--r-- 1 root root 5, 64 Sep 8 16:31 mouse
|
|
crw-r--r-- 1 root root 27, 4 Sep 8 16:31 nrft0
|
|
crw-r--r-- 1 root root 27, 5 Sep 8 16:31 nrft1
|
|
crw-r--r-- 1 root root 27, 6 Sep 8 16:31 nrft2
|
|
crw-r--r-- 1 root root 27, 7 Sep 8 16:31 nrft3
|
|
crw------- 1 root root 9, 128 Sep 8 16:31 nrmt0
|
|
crw-r--r-- 1 root root 1, 3 Sep 8 16:31 null
|
|
crw-r----- 1 root root 6, 0 Sep 8 16:31 par0
|
|
crw-r----- 1 root root 6, 1 Sep 8 16:31 par1
|
|
crw-r----- 1 root root 6, 2 Sep 8 16:31 par2
|
|
crw-r----- 1 root root 1, 4 Sep 8 16:31 port
|
|
crw-r--r-- 1 root root 10, 1 Sep 8 16:31 ps2aux
|
|
crw-r--r-- 1 root root 4, 128 Sep 8 16:31 ptyp0
|
|
crw-r--r-- 1 root root 4, 129 Sep 8 16:31 ptyp1
|
|
crw-r--r-- 1 root root 4, 130 Sep 8 16:31 ptyp2
|
|
crw-r--r-- 1 root root 4, 131 Sep 8 16:31 ptyp3
|
|
crw-r--r-- 1 root root 4, 132 Sep 8 16:31 ptyp4
|
|
crw-r--r-- 1 root root 4, 133 Sep 8 16:31 ptyp5
|
|
crw-r--r-- 1 root root 4, 134 Sep 8 16:31 ptyp6
|
|
crw-r--r-- 1 root root 4, 135 Sep 8 16:31 ptyp7
|
|
crw-r--r-- 1 root root 4, 136 Sep 8 16:31 ptyp8
|
|
crw-r--r-- 1 root root 4, 137 Sep 8 16:31 ptyp9
|
|
crw-r--r-- 1 root root 4, 138 Sep 8 16:31 ptypa
|
|
crw-r--r-- 1 root root 4, 139 Sep 8 16:31 ptypb
|
|
crw-r--r-- 1 root root 4, 140 Sep 8 16:31 ptypc
|
|
crw-r--r-- 1 root root 4, 141 Sep 8 16:31 ptypd
|
|
crw-r--r-- 1 root root 4, 142 Sep 8 16:31 ptype
|
|
crw-r--r-- 1 root root 4, 143 Sep 8 16:31 ptypf
|
|
brw-r----- 1 root root 1, 0 Sep 8 16:31 ram
|
|
crw-r--r-- 1 root root 27, 0 Sep 8 16:31 rft0
|
|
crw-r--r-- 1 root root 27, 1 Sep 8 16:31 rft1
|
|
crw-r--r-- 1 root root 27, 2 Sep 8 16:31 rft2
|
|
crw-r--r-- 1 root root 27, 3 Sep 8 16:31 rft3
|
|
crw------- 1 root root 9, 0 Sep 8 16:31 rmt0
|
|
brw-r----- 1 root root 8, 0 Sep 8 16:31 sda
|
|
brw-r----- 1 root root 8, 1 Sep 8 16:31 sda1
|
|
brw-r----- 1 root root 8, 2 Sep 8 16:31 sda2
|
|
brw-r----- 1 root root 8, 3 Sep 8 16:31 sda3
|
|
brw-r----- 1 root root 8, 4 Sep 8 16:31 sda4
|
|
brw-r----- 1 root root 8, 5 Sep 8 16:31 sda5
|
|
brw-r----- 1 root root 8, 6 Sep 8 16:31 sda6
|
|
brw-r----- 1 root root 8, 7 Sep 8 16:31 sda7
|
|
brw-r----- 1 root root 8, 8 Sep 8 16:31 sda8
|
|
brw-r----- 1 root root 8, 16 Sep 8 16:31 sdb
|
|
brw-r----- 1 root root 8, 17 Sep 8 16:31 sdb1
|
|
brw-r----- 1 root root 8, 18 Sep 8 16:31 sdb2
|
|
brw-r----- 1 root root 8, 19 Sep 8 16:31 sdb3
|
|
brw-r----- 1 root root 8, 20 Sep 8 16:31 sdb4
|
|
brw-r----- 1 root root 8, 21 Sep 8 16:31 sdb5
|
|
brw-r----- 1 root root 8, 22 Sep 8 16:31 sdb6
|
|
brw-r----- 1 root root 8, 23 Sep 8 16:31 sdb7
|
|
brw-r----- 1 root root 8, 24 Sep 8 16:31 sdb8
|
|
brw------- 1 root root 8, 32 Sep 8 16:31 sdc
|
|
brw------- 1 root root 8, 33 Sep 8 16:31 sdc1
|
|
brw------- 1 root root 8, 34 Sep 8 16:31 sdc2
|
|
brw------- 1 root root 8, 35 Sep 8 16:31 sdc3
|
|
brw------- 1 root root 8, 36 Sep 8 16:31 sdc4
|
|
brw------- 1 root root 8, 37 Sep 8 16:31 sdc5
|
|
brw------- 1 root root 8, 38 Sep 8 16:31 sdc6
|
|
brw------- 1 root root 8, 39 Sep 8 16:31 sdc7
|
|
brw------- 1 root root 8, 40 Sep 8 16:31 sdc8
|
|
brw------- 1 root root 8, 48 Sep 8 16:31 sdd
|
|
brw------- 1 root root 8, 49 Sep 8 16:31 sdd1
|
|
brw------- 1 root root 8, 50 Sep 8 16:31 sdd2
|
|
brw------- 1 root root 8, 51 Sep 8 16:31 sdd3
|
|
brw------- 1 root root 8, 52 Sep 8 16:31 sdd4
|
|
brw------- 1 root root 8, 53 Sep 8 16:31 sdd5
|
|
brw------- 1 root root 8, 54 Sep 8 16:31 sdd6
|
|
brw------- 1 root root 8, 55 Sep 8 16:31 sdd7
|
|
brw------- 1 root root 8, 56 Sep 8 16:31 sdd8
|
|
brw------- 1 root root 8, 64 Sep 8 16:31 sde
|
|
brw------- 1 root root 8, 65 Sep 8 16:31 sde1
|
|
brw------- 1 root root 8, 66 Sep 8 16:31 sde2
|
|
brw------- 1 root root 8, 67 Sep 8 16:31 sde3
|
|
brw------- 1 root root 8, 68 Sep 8 16:31 sde4
|
|
brw------- 1 root root 8, 69 Sep 8 16:31 sde5
|
|
brw------- 1 root root 8, 70 Sep 8 16:31 sde6
|
|
brw------- 1 root root 8, 71 Sep 8 16:31 sde7
|
|
brw------- 1 root root 8, 72 Sep 8 16:31 sde8
|
|
brw-r--r-- 1 root root 11, 0 Sep 8 16:31 sr0
|
|
brw-r----- 1 root root 11, 1 Sep 8 16:31 sr1
|
|
brw-r----- 1 root root 11, 2 Sep 8 16:31 sr2
|
|
brw-r----- 1 root root 3, 1 Sep 8 16:31 swap
|
|
crw-r--r-- 1 root root 5, 0 Sep 8 16:31 tty
|
|
crw-r--r-- 1 root root 4, 0 Sep 8 16:31 tty0
|
|
crw------- 1 root root 4, 1 Sep 8 16:31 tty1
|
|
crw-r--r-- 1 root root 4, 2 Sep 8 16:31 tty2
|
|
-rw-r--r-- 1 root root 20 Sep 8 16:31 tty21
|
|
crw-r--r-- 1 root root 4, 3 Sep 8 16:31 tty3
|
|
crw-r--r-- 1 root root 4, 4 Sep 8 16:31 tty4
|
|
crw-r--r-- 1 root root 4, 5 Sep 8 16:31 tty5
|
|
crw-r--r-- 1 root root 4, 6 Sep 8 16:31 tty6
|
|
crw------- 1 root root 4, 7 Sep 8 16:31 tty7
|
|
crw------- 1 root root 4, 8 Sep 8 16:31 tty8
|
|
crw-r--r-- 1 root root 4, 64 Sep 8 16:31 ttyS0
|
|
crw-r--r-- 1 root root 4, 65 Sep 8 16:31 ttyS1
|
|
crw-r--r-- 1 root root 4, 66 Sep 8 16:31 ttyS2
|
|
crw-r--r-- 1 root root 4, 192 Sep 8 16:31 ttyp0
|
|
crw-r--r-- 1 root root 4, 193 Sep 8 16:31 ttyp1
|
|
crw-r--r-- 1 root root 4, 194 Sep 8 16:31 ttyp2
|
|
crw-r--r-- 1 root root 4, 195 Sep 8 16:31 ttyp3
|
|
crw-r--r-- 1 root root 4, 196 Sep 8 16:31 ttyp4
|
|
crw-r--r-- 1 root root 4, 197 Sep 8 16:31 ttyp5
|
|
crw-r--r-- 1 root root 4, 198 Sep 8 16:31 ttyp6
|
|
crw-r--r-- 1 root root 4, 199 Sep 8 16:31 ttyp7
|
|
crw-r--r-- 1 root root 4, 200 Sep 8 16:31 ttyp8
|
|
crw-r--r-- 1 root root 4, 201 Sep 8 16:31 ttyp9
|
|
crw-r--r-- 1 root root 4, 202 Sep 8 16:31 ttypa
|
|
crw-r--r-- 1 root root 4, 203 Sep 8 16:31 ttypb
|
|
crw-r--r-- 1 root root 4, 204 Sep 8 16:31 ttypc
|
|
crw-r--r-- 1 root root 4, 205 Sep 8 16:31 ttypd
|
|
crw-r--r-- 1 root root 4, 206 Sep 8 16:31 ttype
|
|
crw-r--r-- 1 root root 4, 207 Sep 8 16:31 ttypf
|
|
-rw------- 1 root root 63488 Sep 8 16:31 ttys0
|
|
crw-r--r-- 1 root root 4, 67 Sep 8 16:31 ttys3
|
|
crw-r--r-- 1 root root 1, 5 Sep 8 16:31 zero
|
|
|
|
boot_disk/etc:
|
|
total 173
|
|
-rw-r--r-- 1 root root 53 Sep 8 18:48 boot.env
|
|
-rwxr-xr-x 1 root root 27408 Sep 8 18:48 e2fsck*
|
|
-rwxr-xr-x 1 root root 18540 Sep 8 18:48 fdisk*
|
|
-rw-r--r-- 1 root root 69 Oct 8 12:27 fstab
|
|
-r-x------ 1 root root 13312 Sep 8 18:48 getty*
|
|
-rw-r--r-- 1 root root 334 Sep 8 18:48 group
|
|
-rw-r--r-- 1 root root 12 Sep 8 18:48 host.conf
|
|
-rw-r--r-- 1 root root 62 Sep 8 18:48 hosts
|
|
-r-x------ 1 root root 6684 Sep 8 18:48 ifconfig*
|
|
-rwxr-xr-x 1 root root 11492 Sep 8 18:48 init*
|
|
-rw-r--r-- 1 root root 1017 Sep 9 22:12 inittab
|
|
-rw-r--r-- 1 root root 0 Oct 8 12:19 issue
|
|
-rw-r----- 1 root root 5137 Sep 8 18:48 login.defs
|
|
-rwxr-xr-x 1 root root 14028 Sep 8 18:48 mke2fs*
|
|
-rwxr-x--- 1 root root 2436 Sep 8 18:48 mkswap*
|
|
-rwxr-xr-x 1 root root 11288 Sep 8 18:48 mount*
|
|
-rw-r--r-- 1 root root 327 Sep 8 18:48 passwd
|
|
-rwxr-xr-x 1 root root 383 Sep 10 16:02 profile*
|
|
-rw-r--r-- 1 root root 94 Sep 8 18:48 protocols
|
|
-rwxr-xr-x 1 root root 334 Oct 8 12:27 rc*
|
|
-rwxr-xr-x 1 root root 9220 Sep 8 18:48 reboot*
|
|
-r-x------ 1 root root 4092 Sep 8 18:48 route*
|
|
-rw-r--r-- 1 root root 20 Sep 8 18:48 securetty
|
|
-rw-r--r-- 1 root root 9749 Sep 8 18:48 services
|
|
-rw-r--r-- 1 root root 36 Sep 8 18:48 shells
|
|
-rwxr-xr-x 1 root root 13316 Sep 8 18:48 shutdown*
|
|
-rwxr-xr-x 1 root root 2496 Sep 8 18:48 swapoff*
|
|
-rwxr-xr-x 1 root root 2496 Sep 8 18:48 swapon*
|
|
-rw-r--r-- 1 root root 5314 Sep 8 18:48 termcap
|
|
-rwxr-xr-x 1 root root 5412 Sep 8 18:48 umount*
|
|
-rw-r--r-- 1 root root 224 Sep 8 18:48 utmp
|
|
-rw-r--r-- 1 root root 280 Sep 8 18:48 wtmp
|
|
|
|
boot_disk/lib:
|
|
total 629
|
|
-rwxr-xr-x 1 root root 17412 Sep 10 14:58 ld.so*
|
|
-rwxr-xr-x 1 root root 623620 Sep 8 18:33 libc.so.4*
|
|
|
|
<sect2>Utility Disk ls-lR Directory Listing
|
|
<p>
|
|
The utility listing is of directory util_disk:
|
|
|
|
total 1
|
|
drwxr-xr-x 2 root root 1024 Sep 10 16:05 bin/
|
|
|
|
util_disk/bin:
|
|
total 897
|
|
-rwxr-xr-x 1 root root 41984 Sep 10 14:11 cpio*
|
|
-rwxr-xr-x 1 root root 504451 Sep 9 21:39 ftape.o*
|
|
-rwxr-xr-x 1 root root 63874 Sep 9 21:40 gzip*
|
|
-rwxr-xr-x 1 root root 13316 Sep 9 21:34 insmod*
|
|
-rwxr-xr-x 1 root root 58 Sep 9 21:34 lsmod*
|
|
-rwxr-xr-x 1 root root 3288 Sep 9 21:34 mknod*
|
|
-rwxr-xr-x 1 root root 9220 Sep 9 21:34 rmmod*
|
|
-rwxr-xr-x 1 root root 226308 Sep 9 22:13 tar*
|
|
|
|
|
|
|
|
|
|
|
|
4.2. Shell Scripts to Build Diskettes
|
|
|
|
There are two shell scripts:
|
|
|
|
o mkroot - builds a root or boot/root diskette.
|
|
|
|
o mkutil - builds a utility diskette.
|
|
|
|
Both are currently configured to run in the parent directory of
|
|
boot_disk and util_disk, each of which contains everything to be
|
|
copied to it's diskette. Note that these shell scripts will *NOT*
|
|
automatically set up and copy all the files for you - you work out
|
|
which files are needed, set up the directories and copy the files to
|
|
those directories. The shell scripts are samples which will copy the
|
|
contents of those directories. Note that they are primitive shell
|
|
scripts and are not meant for the novice user.
|
|
|
|
The scripts both contain configuration variables at the start which
|
|
allow them to be easily configured to run anywhere. First, set up the
|
|
model directories and copy all the required files into them. Then
|
|
check the configuration variables in the shell scripts and change them
|
|
as required before running the scripts.
|
|
|
|
|
|
4.2.1. mkroot - Make Root or Boot/Root Diskette
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
______________________________________________________________________
|
|
# mkroot: make a boot/boot disk - creates a boot/root diskette
|
|
# by building a file system on it, then mounting it and
|
|
# copying required files from a model.
|
|
# Note: the model to copy from from must dirst be set up,
|
|
# then change the configuration variables below to suit
|
|
# your system.
|
|
#
|
|
# usage: mkroot [nokernel]
|
|
# if the parameter is omitted, then the kernel and LILO
|
|
# are copied.
|
|
|
|
# Copyright (c) Graham Chapman 1994. All rights reserved.
|
|
# Permission is granted for this material to be freely
|
|
# used and distributed, provided the source is acknowledged.
|
|
# No warranty of any kind is provided. You use this material
|
|
# at your own risk.
|
|
|
|
# Configuration variables...
|
|
BOOTDISKDIR=./boot_disk # name of boot disk directory
|
|
MOUNTPOINT=./mnt # temporary mount point for diskette
|
|
LILODIR=/sbin # directory containing lilo
|
|
LILOBOOT=/boot/boot.b # lilo boot sector
|
|
LILOMSG=./lilo.msg # lilo message to display at boot time
|
|
LILOCONFIG=./lilo.conf # lilo parms for boot/root diskette
|
|
DISKETTEDEV=/dev/fd0 # device name of diskette drive
|
|
|
|
echo $0: create boot/root diskette
|
|
echo Warning: data on diskette will be overwritten!
|
|
echo Insert diskette in $DISKETTEDEV and and press any key...
|
|
read anything
|
|
|
|
mke2fs $DISKETTEDEV
|
|
if [ $? -ne 0 ]
|
|
then
|
|
echo mke2fs failed
|
|
exit
|
|
fi
|
|
|
|
mount -t ext2 $DISKETTEDEV $MOUNTPOINT
|
|
if [ $? -ne 0 ]
|
|
then
|
|
echo mount failed
|
|
exit
|
|
fi
|
|
|
|
# copy the directories containing files
|
|
for i in bin etc lib
|
|
do
|
|
cp -dpr $BOOTDISKDIR/$i $MOUNTPOINT
|
|
done
|
|
|
|
# copy dev *without* trying to copy the files in it
|
|
cp -dpR $BOOTDISKDIR/dev $MOUNTPOINT
|
|
|
|
# create empty directories required
|
|
mkdir $MOUNTPOINT/proc
|
|
mkdir $MOUNTPOINT/tmp
|
|
mkdir $MOUNTPOINT/mnt
|
|
mkdir $MOUNTPOINT/usr
|
|
|
|
# copy the kernel
|
|
if [ "$1" != "nokernel" ]
|
|
then
|
|
echo "Copying kernel"
|
|
cp $BOOTDISKDIR/vmlinux $MOUNTPOINT
|
|
echo kernel copied
|
|
|
|
# setup lilo
|
|
cp $LILOBOOT $MOUNTPOINT
|
|
cp $LILOMSG $MOUNTPOINT
|
|
$LILODIR/lilo -C $LILOCONFIG
|
|
echo LILO installed
|
|
fi
|
|
|
|
umount $MOUNTPOINT
|
|
|
|
echo Root diskette complete
|
|
______________________________________________________________________
|
|
|
|
|
|
|
|
|
|
|
|
4.2.2. mkutil - Make Utility Diskette
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
______________________________________________________________________
|
|
# mkutil: make a utility diskette - creates a utility diskette
|
|
# by building a file system on it, then mounting it and
|
|
# copying required files from a model.
|
|
# Note: the model to copy from from must first be set up,
|
|
# then change the configuration variables below to suit
|
|
# your system.
|
|
|
|
# Copyright (c) Graham Chapman 1994. All rights reserved.
|
|
# Permission is granted for this material to be freely
|
|
# used and distributed, provided the source is acknowledged.
|
|
# No warranty of any kind is provided. You use this material
|
|
# at your own risk.
|
|
|
|
# Configuration variables...
|
|
UTILDISKDIR=./util_disk # name of directory containing model
|
|
MOUNTPOINT=./mnt # temporary mount point for diskette
|
|
DISKETTEDEV=/dev/fd0 # device name of diskette drive
|
|
|
|
echo $0: create utility diskette
|
|
echo Warning: data on diskette will be overwritten!
|
|
echo Insert diskette in $DISKETTEDEV and and press any key...
|
|
read anything
|
|
|
|
mke2fs $DISKETTEDEV
|
|
if [ $? -ne 0 ]
|
|
then
|
|
echo mke2fs failed
|
|
exit
|
|
fi
|
|
|
|
# Any file system type would do here
|
|
mount -t ext2 $DISKETTEDEV $MOUNTPOINT
|
|
if [ $? -ne 0 ]
|
|
then
|
|
echo mount failed
|
|
exit
|
|
fi
|
|
|
|
# copy the directories containing files
|
|
cp -dpr $UTILDISKDIR/bin $MOUNTPOINT
|
|
|
|
umount $MOUNTPOINT
|
|
|
|
echo Utility diskette complete
|
|
______________________________________________________________________
|
|
|
|
|
|
|
|
|
|
|
|
5. FAQ
|
|
|
|
|
|
5.1. Q. How can I make a boot disk with a XXX driver?
|
|
|
|
The easiest way is to obtain a Slackware kernel from your nearest
|
|
Slackware mirror site. Slackware kernels are generic kernels which
|
|
atttempt to include drivers for as many devices as possible, so if you
|
|
have a SCSI or IDE controller, chances are that a driver for it is
|
|
included in the Slackware kernel.
|
|
|
|
Go to the a1 directory and select either IDE or SCSI kernel depending
|
|
on the type of controller you have. Check the xxxxkern.cfg file for
|
|
the selected kernel to see the drivers which have been included in
|
|
that kernel. If the device you want is in that list, then the
|
|
corresponding kernel should boot your computer. Download the
|
|
xxxxkern.tgz file and copy it to your boot diskette as described above
|
|
in the section on making boot disks.
|
|
|
|
You must then check the root device in the kernel, using the rdev
|
|
command:
|
|
|
|
|
|
rdev vmlinuz
|
|
|
|
|
|
|
|
|
|
Rdev will then display the current root device in the kernel. If this
|
|
is not the same as the root device you want, then use rdev to change
|
|
it. For example, the kernel I tried was set to /dev/sda2, but my root
|
|
scsi partition is /dev/sda8. To use a root diskette, you would have to
|
|
use the command:
|
|
|
|
|
|
rdev vmlinuz /dev/fd0
|
|
|
|
|
|
|
|
|
|
If you want to know how to set up a Slackware root disk as well,
|
|
that's outside the scope of this HOWTO, so I suggest you check the
|
|
Linux Install Guide or get the Slackware distribution. See the section
|
|
in this HOWTO titled "References".
|
|
|
|
|
|
5.2. Q. How do I update my boot floppy with a new kernel?
|
|
|
|
Just copy the kernel to your boot diskette using the dd command for a
|
|
boot diskette without a filesystem, or the cp command for a boot/root
|
|
disk. Refer to the section in this HOWTO titled "Boot" for details on
|
|
creating a boot disk. The description applies equally to updating a
|
|
kernel on a boot disk.
|
|
|
|
|
|
5.3. Q. How do I remove LILO so that I can use DOS to boot again?
|
|
|
|
This is not really a Bootdisk topic, but it is asked so often, so: the
|
|
answer is, use the DOS command:
|
|
|
|
|
|
FDISK /MBR
|
|
|
|
|
|
|
|
|
|
MBR stands for Master Boot Record, and it replaces the boot sector
|
|
with a clean DOS one, without affecting the partition table. Some
|
|
purists disagree with this, but even the author of LILO, Werner
|
|
Almesberger, suggests it. It is easy, and it works.
|
|
|
|
You can also use the dd command to copy the backup saved by LILO to
|
|
the boot sector - refer to the LILO documentation if you wish to do
|
|
this.
|
|
|
|
|
|
5.4. Q. How can I boot if I've lost my kernel AND my boot disk?
|
|
|
|
If you don't have a boot disk standing by, then probably the easiest
|
|
method is to obtain a Slackware kernel for your disk controller type
|
|
(IDE or SCSI) as described above for "How do I make a boot disk with a
|
|
XXX driver?". You can then boot your computer using this kernel, then
|
|
repair whatever damage there is.
|
|
|
|
The kernel you get may not have the root device set to the disk type
|
|
and partition you want. For example, Slackware's generic scsi kernel
|
|
has the root device set to /dev/sda2, whereas my root Linux partition
|
|
happens to be /dev/sda8. In this case the root device in the kernel
|
|
will have to be changed.
|
|
|
|
You can still change the root device and ramdisk settings in the
|
|
kernel even if all you have is a kernel, and some other operating
|
|
system, such as DOS.
|
|
|
|
Rdev changes kernel settings by changing the values at fixed offsets
|
|
in the kernel file, so you can do the same if you have a hex editor
|
|
available on whatever systems you do still have running - for example,
|
|
Norton Utilities Disk Editor under DOS. You then need to check and if
|
|
necessary change the values in the kernel at the following offsets:
|
|
|
|
|
|
0x01F8 Low byte of RAMDISK size
|
|
0x01F9 High byte of RAMDISK size
|
|
0x01FC Minor device number - see below
|
|
0X01FD Major device number - see below
|
|
|
|
|
|
|
|
|
|
The ramdisk size is the number of blocks of ramdisk to create. If you
|
|
want to boot from a root diskette then set this to decimal 1440, which
|
|
is 0x05A0, thus set offset 0x01F8 to 0xA0 and offset 0x01F9 to 0x05.
|
|
This will allocate enough space for a 1.4Mb diskette.
|
|
|
|
The major and minor device numbers must be set to the device you want
|
|
to mount your root filesystem on. Some useful values to select from
|
|
are:
|
|
|
|
|
|
device major minor
|
|
/dev/fd0 2 0 1st floppy drive
|
|
/dev/hda1 3 1 partition 1 on 1st IDE drive
|
|
/dev/sda1 8 1 partition 1 on 1st scsi drive
|
|
/dev/sda8 8 8 partition 8 on 1st scsi drive
|
|
|
|
|
|
|
|
|
|
Once you have set these values then you can write the file to a
|
|
diskette using either Norton Utilities Disk Editor, or a program
|
|
called rawrite.exe. This program is included in several distributions,
|
|
including the SLS and Slackware distributions. It is a DOS program
|
|
which writes a file to the "raw" disk, starting at the boot sector,
|
|
instead of writing it to the file system. If you use Norton Utilities,
|
|
then you must write the file to a physical disk starting at the
|
|
beginning of the disk.
|
|
|
|
|
|
5.5. Q. How can I make extra copies of boot/root diskettes?
|
|
|
|
It is never desirable to have just one set of rescue disks - 2 or 3
|
|
should be kept in case one is unreadable.
|
|
|
|
The easiest way of making copies of any diskettes, including bootable
|
|
and utility diskettes, is to use the dd command to copy the contents
|
|
of the original diskette to a file on your hard drive, and then use
|
|
the same command to copy the file back to a new diskette. Note that
|
|
you do not need to, and should not, mount the diskettes, because dd
|
|
uses the raw device interface.
|
|
|
|
To copy the original, enter the command:
|
|
|
|
|
|
dd if=<device> of=<filename>
|
|
where <device> = the device name of the diskette
|
|
drive
|
|
and <filename> = the name of the file where you
|
|
want to copy to
|
|
|
|
|
|
|
|
|
|
For example, to copy from /dev/fd0 to a temporary file called
|
|
/tmp/diskette.copy, I would enter the command:
|
|
|
|
|
|
dd if=/dev/fd0 of=/tmp/diskette.copy
|
|
|
|
|
|
|
|
|
|
Omitting the "count" parameter, as we have done here, means that the
|
|
whole diskette of 2880 (for a high-density) blocks will be copied.
|
|
|
|
To copy the resulting file back to a new diskette, insert the new
|
|
diskette and enter the reverse command:
|
|
|
|
|
|
dd if=<filename> of=<device>
|
|
|
|
|
|
|
|
|
|
Note that the above discussion assumes that you have only one diskette
|
|
drive. If you have two of the same type, then you can copy diskettes
|
|
using a command like:
|
|
|
|
|
|
dd if=/dev/fd0 of=/dev/fd1
|
|
|
|
|
|
|
|
|
|
|
|
5.6. Q. How can I boot without typing in "ahaxxxx=nn,nn,nn" every
|
|
time?
|
|
|
|
Where a disk device cannot be autodetected it is necessary to supply
|
|
the kernel with a command device parameter string, such as:
|
|
|
|
|
|
aha152x=0x340,11,3,1
|
|
|
|
|
|
|
|
|
|
This parameter string can be supplied in several ways using LILO:
|
|
|
|
o By entering it on the command line every time the system is booted
|
|
via LILO. This is boring, though.
|
|
|
|
o By using the LILO "lock" keyword to make it store the command line
|
|
as the default command line, so that LILO will use the same options
|
|
every time it boots.
|
|
|
|
o By using the APPEND statement in the lilo config file. Note that
|
|
the parameter string must be enclosed in quotes.
|
|
|
|
For example, a sample command line using the above parameter string
|
|
would be:
|
|
|
|
|
|
vmlinux aha152x=0x340,11,3,1 root=/dev/sda1 lock
|
|
|
|
|
|
|
|
|
|
This would pass the device parameter string through, and also ask the
|
|
kernel to set the root device to /dev/sda1 and save the whole command
|
|
line and reuse it for all future boots.
|
|
|
|
A sample APPEND statement is:
|
|
|
|
|
|
APPEND = "aha152x=0x340,11,3,1"
|
|
|
|
|
|
|
|
|
|
Note that the parameter string must NOT be enclosed in quotes on the
|
|
command line, but it MUST be enclosed in quotes in the APPEND
|
|
statement.
|
|
|
|
Note also that for the parameter string to be acted on, the kernel
|
|
must contain the driver for that disk type. If it does not, then there
|
|
is nothing listening for the parameter string, and you will have to
|
|
rebuild the kernel to include the required driver. For details on
|
|
rebuilding the kernel, cd to /usr/src/linux and read the README, and
|
|
read the Linux FAQ and Installation HOWTO. Alternatively you could
|
|
obtain a generic kernel for the disk type and install that.
|
|
|
|
Readers are strongly urged to read the LILO documentation before
|
|
experimenting with LILO installation. Incautious use of the "BOOT"
|
|
statement can damage partitions.
|
|
|
|
|
|
6. References
|
|
|
|
In this section, vvv is used in package names in place of the version,
|
|
to avoid referring here to specific versions. When retrieving a
|
|
package, always get the latest version unless you have good reasons
|
|
for not doing so.
|
|
|
|
|
|
6.1. LILO - Linux Loader
|
|
|
|
Written by Werner Almesberger. Excellent boot loader, and the
|
|
documentation includes information on the boot sector contents and the
|
|
early stages of the boot process.
|
|
|
|
Ftp from: tsx-11.mit.edu:/pub/linux/packages/lilo/lilo.vvv.tar.gz also
|
|
on sunsite and mirror sites.
|
|
|
|
|
|
6.2. Linux FAQ and HOWTOs
|
|
|
|
These are available from many sources. Look at the usenet newsgroups
|
|
news.answers and comp.os.linux.announce.
|
|
|
|
Ftp from: sunsite.unc.edu:/pub/Linux/docs
|
|
|
|
o FAQ is in /pub/linux/docs/faqs/linux-faq
|
|
|
|
o HOWTOs are in /pub/Linux/docs/HOWTO
|
|
|
|
For WWW, start at the Linux documentation home page:
|
|
|
|
|
|
http://sunsite.unc.edu/mdw/linux.html
|
|
|
|
|
|
|
|
|
|
If desperate, send mail to:
|
|
|
|
|
|
mail-server@rtfm.mit.edu
|
|
|
|
|
|
|
|
|
|
with the word "help" in the message, then follow the mailed
|
|
instructions.
|
|
|
|
Note: if you haven't read the Linux FAQ and related documents such as
|
|
the Linux Installation HOWTO and the Linux Install Guide, then you
|
|
should not be trying to build boot diskettes.
|
|
|
|
|
|
6.3. Rescue Shell Scripts
|
|
|
|
Written by Thomas Heiling. This contains shell scripts to produce boot
|
|
and boot/root diskettes. It has some dependencies on specific versions
|
|
of other software such as LILO, and so might need some effort to
|
|
convert to your system, but it might be useful as a starting point if
|
|
you wanted more comprehensive shell scripts than are provided in this
|
|
document.
|
|
|
|
Ftp from: sunsite.unc.edu:/pub/Linux/system/Recovery/rescue.tgz
|
|
|
|
|
|
6.4. SAR - Search and Rescue
|
|
|
|
Written by Karel Kubat. SAR produces a rescue diskette, using several
|
|
techniques to minimize the space required on the diskette. The manual
|
|
includes a description of the Linux boot/login process.
|
|
|
|
Ftp from: ftp.icce.rug.nl:/pub/unix/SAR-vvv.tar.gz
|
|
|
|
The manual is available via WWW from:
|
|
|
|
http://www.icce.rug.nl/karel/programs/SAR.html
|
|
|
|
|
|
6.5. Slackware Distribution
|
|
|
|
Apart from being one of the more popular Linux distributions around,
|
|
it is also a good place to get a generic kernel. It is available from
|
|
almost everywhere, so there is little point in putting addresses here.
|
|
|
|
|