1113 lines
43 KiB
Plaintext
1113 lines
43 KiB
Plaintext
Last-modified: 19 Nov 94
|
|
|
|
Linux boot/utility diskette HOWTO (draft)
|
|
=================================
|
|
|
|
Copyright (c) Graham Chapman 1994.
|
|
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.
|
|
|
|
CONTENTS
|
|
|
|
1. Introduction
|
|
2. Overview - types of bootable disk
|
|
3. Boot diskette
|
|
4. Boot/root diskette system overview
|
|
5. RAM drives and boot/root systems
|
|
6. File systems
|
|
7. Kernel
|
|
8. Devices
|
|
9. Directories
|
|
10. LILO
|
|
11. Making extra copies of bootable diskettes
|
|
12. Adding utility diskettes
|
|
Appendix A - Sample ls-lR directory listing
|
|
Appendix B - Sample shell scripts to build diskettes
|
|
Appendix C - Where to find packages
|
|
|
|
|
|
1. INTRODUCTION
|
|
|
|
These notes provide information on ways of producing Linux boot and
|
|
rescue diskettes. Such diskettes could be of use when:
|
|
|
|
- booting Linux after having lost a hard disk boot sector;
|
|
- running a diskette Linux system to restore a hard disk Linux
|
|
system following disk crash or corruption;
|
|
|
|
Experienced Linux users will probably 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.
|
|
|
|
The information here is current for the following software versions:
|
|
|
|
- Linux 1.1.57;
|
|
- LILO 0.15;
|
|
|
|
The information here has been accumulated from reading Linux
|
|
documentation, reading Linux source, trial and error, and so on.
|
|
If you find any errors or omissions, please let me know.
|
|
|
|
|
|
|
|
Graham Chapman
|
|
grahamc@zeta.org.au
|
|
1 November, 1994
|
|
|
|
|
|
2. OVERVIEW - TYPES OF BOOTABLE DISKETTE
|
|
|
|
Bootable diskettes can be of the following types:
|
|
|
|
- boot diskette
|
|
|
|
This is a diskette containing a kernel at the start
|
|
of the disk, but with with no file system. The diskette which
|
|
can be used to run the kernel using a file system on another
|
|
drive.
|
|
|
|
A boot diskette can be used to boot a system using another
|
|
disk drive as the root file system. This could be useful if
|
|
for some reason you can't boot the system from the root file
|
|
system, as happens when the boot sector is corrupted, perhaps
|
|
due to mistakes with installation of a boot loader.
|
|
|
|
- boot/root diskette
|
|
|
|
This is a diskette containing a complete bootable system,
|
|
including file system, kernel and utilities.
|
|
|
|
A boot/root diskette can be used to run the system independently
|
|
of any other drives. Possible uses for this are:
|
|
|
|
- when you wish to check the root file system with fsck.
|
|
This should only be done when the root file system is NOT
|
|
mounted;
|
|
|
|
- when the root file system is corrupted and you want to
|
|
either rebuild it or restore it's contents from backup.
|
|
|
|
|
|
3. BOOT DISKETTE
|
|
|
|
3.1 OVERVIEW
|
|
|
|
A boot diskette contains a single file containing the kernel, which
|
|
is written to the diskette as a raw device, so that the file starts
|
|
at sector 0, cylinder 0, which is the boot sector. 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 code from a
|
|
boot loader such as LILO, which locates the kernel, loads it and
|
|
executes it to start the boot proper.
|
|
|
|
If a Linux kernel has been written to a diskette as described above,
|
|
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.
|
|
|
|
3.2 SETTING POINTER TO ROOT
|
|
|
|
This kernel must contain a pointer to the drive and partititon to
|
|
be mounted as the root drive. This can be inserted into the kernel
|
|
in several ways;
|
|
|
|
- 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)i. Comments in the
|
|
Linux makefile describe the valid values for <device>;
|
|
|
|
- by running the rdev utility:
|
|
|
|
rdev <filename> <device>
|
|
|
|
will set the root device of the kernel contained in <filename>
|
|
to be <device>. For example:
|
|
|
|
rdev Image /dev/sda1
|
|
|
|
sets the root device in the kernel in Image to the first partition on
|
|
the first SCSI drive.
|
|
|
|
There are some alternative ways of issuing the rdev command. Try:
|
|
|
|
rdev -?
|
|
|
|
and it will display command usage.
|
|
|
|
Note that there is usually no need to configure the root device for
|
|
boot diskette use, because the kernel currently used to boot from
|
|
already points to the root drive device.
|
|
|
|
3.3 COPYING KERNEL TO BOOT DISKETTE
|
|
|
|
Once the kernel has been configured then it must be copied to the
|
|
boot diskette 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.
|
|
|
|
|
|
4. BOOT/ROOT DISKETTE SYSTEM OVERVIEW
|
|
|
|
A boot/root diskette contains a complete working Linux system, able
|
|
to run in multi-user mode, with all that that implies. To be able to
|
|
do this, the diskette must include the minimum requirements for a
|
|
Linux system:
|
|
|
|
- a kernel;
|
|
- a file system;
|
|
- a minimum set of directories - bin, etc, lib, usr, tmp;
|
|
- a basic set of utilities - bash (to run a shell), ls, cp etc;
|
|
- a minimum set of config files - rc, inittab, fstab etc;
|
|
- a 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 boot/root diskette usually only becomes useful when you
|
|
can do something like:
|
|
|
|
- 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
|
|
boot/root diskette system. Then you can run fsck on your
|
|
original root drive while it is not mounted;
|
|
- restore all or part of your original root drive from backup
|
|
using archive/compression utilities including cpio, tar,
|
|
gzip and ftape.
|
|
|
|
|
|
5. RAM DRIVES AND BOOT/ROOT SYSTEMS
|
|
|
|
For a boot/root system 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
|
|
boot/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:
|
|
|
|
- the system runs a lot faster;
|
|
- 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:
|
|
|
|
- the file system on the diskette drive must be a minix
|
|
file system. This could change future kernels. You could
|
|
change it on your own sytem by modifying the code in
|
|
/usr/src/Linux/drivers/block/ramdisk.c to operate with
|
|
superblocks from file systems other than minix.
|
|
The code (in my version, at least) even contains a comment
|
|
saying that it should not be restricted to just minix.
|
|
Note that I have not tested this, though;
|
|
- 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:
|
|
|
|
- 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;
|
|
|
|
- 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.
|
|
|
|
- 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.
|
|
|
|
The easiest of these three methods is the last, LILO, bceause 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.
|
|
|
|
|
|
6. FILE SYSTEMS
|
|
|
|
There is not a lot of choice about which file system you choose, unless
|
|
you modify ramdisk.c in the kernel (see above). If you don't, then
|
|
a minix file system must be used. Note that, for a system as small
|
|
as a diskette, it probably doesn't make much difference what file
|
|
system is used.
|
|
|
|
To create a minix file system on ia diskette on my system, I issue the
|
|
following command:
|
|
|
|
mkfs /dev/fd0 1440
|
|
|
|
To create one on your system, I suggest you check the man pages, and
|
|
issue the command:
|
|
|
|
mkfs -?
|
|
|
|
to see its options.
|
|
|
|
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
|
|
a minix system, then the command:
|
|
|
|
mount -t minix /dev/fd0 /<mount point>
|
|
|
|
should work.
|
|
|
|
|
|
7. KERNEL
|
|
|
|
7.1 COPYING KERNEL TO DISKETTE
|
|
|
|
The kernel is added to a boot/root diskette by mounting the diskette
|
|
containing a file system, and copying the kernel with the cp command,
|
|
using a command like:
|
|
|
|
cp <kernel file> /dev/fd0
|
|
|
|
For example:
|
|
|
|
mount -t minix /dev/fd0 /mnt
|
|
cp Image /mnt
|
|
|
|
|
|
cp Image /dev/fd0
|
|
|
|
7.2 BUILDING A CUSTOM KERNEL
|
|
|
|
In most cases it would be possible to copy your current kernel and
|
|
boot the diskette from that. However there are a few reasons why
|
|
you should build one specifically for boot/root use.
|
|
|
|
The main reason is size. You need to preserve the maximum possible
|
|
amount of free space on the diskette. Since the kernel is one of the
|
|
largest files in a minimum system, this means shrinking the kernel
|
|
as much as possible.
|
|
|
|
There are two ways of reducing kernel size:
|
|
|
|
- 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;
|
|
|
|
- compressing it, using the standard compressed-kernel
|
|
option included in the makefile:
|
|
|
|
make zImage
|
|
|
|
Refer to the documentation incleded 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 resistall 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.
|
|
|
|
|
|
8. 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 -R /dev /mnt
|
|
|
|
assuming that the diskette is mounted at /mnt.
|
|
|
|
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.
|
|
|
|
|
|
9. 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 boot/root 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:
|
|
|
|
- /dev is described above in the section titled DEVICES.
|
|
|
|
- /proc only needs to exist. Once the directory is created using
|
|
mkdir, nothing more is required.
|
|
|
|
- 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.
|
|
|
|
9.1 /ETC
|
|
|
|
This directory must contain a number of configuration files. On most
|
|
systems, these can be divided into 3 groups:
|
|
|
|
- required at all times, e.g. rc, fstab, passwd;
|
|
- may be required, but no-one is too sure;
|
|
- junk that crept in.
|
|
|
|
On my boot/root diskettes, I have the number of config files down to
|
|
15. I know that most are required, and someday I'll get around to
|
|
working out the rest, but in the meantime, I work it by setting up
|
|
the ones I know need to be configured for a boot/root system, and
|
|
simply leaving the rest there. This reduces my work to dealing with
|
|
three sets of files:
|
|
|
|
- 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.
|
|
|
|
- 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 passwords off the system, and so that when you boot
|
|
from diskette, unwanted logins are rejected.
|
|
|
|
- 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.
|
|
|
|
- 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.
|
|
|
|
- fstab should contain:
|
|
|
|
/dev/fd0 / minix 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 Appendix A -
|
|
this is what I have, so probably it will be sufficient for you if
|
|
you copy only those files.
|
|
|
|
9.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 Appendix A for the list of files that I place in my root/boot /bin
|
|
directory. You may notice that it does not include any of the utilities
|
|
required to check file systems or restore from backup, such as fsck,
|
|
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".
|
|
|
|
9.3 /LIB
|
|
|
|
Two libraries are required to run many facilities under Linux:
|
|
|
|
- ld.so;
|
|
- 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.
|
|
|
|
There are alternatives to using libc.so. The SAR package uses a shell
|
|
linked statically with required library routines so that libc is not
|
|
required - a considerable saving in space. The downside to this approach
|
|
is that you cannot simply copy across a copy of bash or csh - you must
|
|
find or build a statically linked shell. If you use SAR to build
|
|
your boot/root diskette, then this is not a problem, because SAR
|
|
provides everything. However if you are not using SAR, you may find
|
|
it more work than it is worth.
|
|
|
|
|
|
10. LILO
|
|
|
|
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:
|
|
|
|
- which device is to be mounted as the root drive;
|
|
- whether to use a ramdisk.
|
|
|
|
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 = /boot/boot.b
|
|
compact
|
|
image = ./mnt/Image
|
|
ramdisk = 1440
|
|
root = /dev/fd0
|
|
|
|
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 a minix 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.
|
|
|
|
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.
|
|
|
|
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.
|
|
|
|
|
|
11. MAKING EXTRA COPIES OF BOOTABLE 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
|
|
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 /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>
|
|
|
|
|
|
12. ADDING UTILITY DISKETTES
|
|
|
|
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.
|
|
|
|
|
|
APPENDIX A - SAMPLE ls-lR DIRECTORY LISTING
|
|
|
|
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 appendix use these directories
|
|
and files as a model to build the diskettes.
|
|
|
|
The boot/root listing is of directory boot_disk:
|
|
|
|
total 226
|
|
-rw-r--r-- 1 root root 223748 Oct 5 18:25 Image
|
|
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/
|
|
|
|
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*
|
|
|
|
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 37892 Sep 10 15:54 e2fsck*
|
|
-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 21508 Sep 10 15:55 mke2fs*
|
|
-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*
|
|
|
|
|
|
APPENDIX B - SAMPLE SHELL SCRIPTS TO BUILD DISKETTES
|
|
|
|
There are two shell scripts,
|
|
|
|
- mkboot - builds a boot/root diskette;
|
|
- 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.
|
|
|
|
mkboot
|
|
======
|
|
|
|
# mkboot: 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.
|
|
|
|
# Copyright (c) Graham Chapman 1994.
|
|
# 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=/etc/lilo # directory containing lilo
|
|
LILOCONFIG=./boot.lilo.config # 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
|
|
|
|
mkfs $DISKETTEDEV 1440
|
|
if [ $? -ne 0 ]
|
|
then
|
|
echo mkfs failed
|
|
exit
|
|
fi
|
|
|
|
mount -t minix $DISKETTEDEV $MOUNTPOINT
|
|
if [ $? -ne 0 ]
|
|
then
|
|
echo mount failed
|
|
exit
|
|
fi
|
|
|
|
# copy the directories containing files
|
|
for i in bin etc lib
|
|
do
|
|
cp -r $BOOTDISKDIR/$i $MOUNTPOINT
|
|
done
|
|
|
|
# copy dev *without* trying to copy the files in it
|
|
cp -R $BOOTDISKDIR/dev $MOUNTPOINT
|
|
|
|
# create empty directories required
|
|
mkdir $MOUNTPOINT/proc
|
|
mkdir $MOUNTPOINT/tmp
|
|
mkdir $MOUNTPOINT/mnt
|
|
mkdir $MOUNTPOINT/usr
|
|
|
|
# copy the kernel
|
|
cp $BOOTDISKDIR/Image $MOUNTPOINT
|
|
|
|
# setup lilo
|
|
$LILODIR/lilo -C $LILOCONFIG
|
|
|
|
umount $MOUNTPOINT
|
|
|
|
|
|
mkutil
|
|
======
|
|
|
|
# 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.
|
|
# 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
|
|
|
|
mkfs $DISKETTEDEV 1440
|
|
if [ $? -ne 0 ]
|
|
then
|
|
echo mkfs failed
|
|
exit
|
|
fi
|
|
|
|
# Any file system type would do here
|
|
mount -t minix $DISKETTEDEV $MOUNTPOINT
|
|
if [ $? -ne 0 ]
|
|
then
|
|
echo mount failed
|
|
exit
|
|
fi
|
|
|
|
# copy the directories containing files
|
|
cp -r $UTILDISKDIR/bin $MOUNTPOINT
|
|
|
|
umount $MOUNTPOINT
|
|
|
|
echo Utility diskette complete
|
|
|
|
APPENDIX C - WHERE TO FIND PACKAGES
|
|
|
|
In this list, x and yy are version numbers.
|
|
|
|
lilo - Linux Loader
|
|
Written by Werner Almesberger.
|
|
Ftp from: tsx-11.mit.edu:/pub/linux/packages/lilo/lilo.yy.tar.gz
|
|
also on sunsite and mirror sites.
|
|
|
|
SAR - Search and Rescue
|
|
Written by Karel Kubat.
|
|
Ftp from: ftp.icce.rug.nl:/pub/unix/SAR-x.yy.tar.gz
|
|
|
|
Linux FAQ - available from many sources. Look at the usenet newsgroups
|
|
comp.answers and comp.os.linux.announce.
|
|
Ftp from: sunsite.unc.edu:/pub/Linux/docs/HOWTO
|
|
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 Install Guide, then you should not be trying to build boot
|
|
diskettes. |