
Timos Rescue Set Ver. 0.9.11
     _________________________________________________________________
     _________________________________________________________________

Preface

   Timo's rescue cd set provides an easy way to generate bootable cdroms
   with a ready-to-use rescue system on it. The system is designed to be
   fully customizable in addition to being easy to build.

   The rescue system includes reiserfs, parted, partimage, nmap, w3m, and
   bash, as well as sshd, telnetd, ftpd and nfsd on the server side. It
   is based on debian woody.

   The project evolves more and more into a "debian on cd" project, so it
   is not limited to be used as a rescuecd, it is also possible to
   install a whole debian system on cd. Although it is not optimized for
   that you can use other distributions then debian as well as the base
   rescue system.
     _________________________________________________________________

Goals

     * everything must be configurable, but at the same time it should be
       easy to manage
     * a usable rescue system
     _________________________________________________________________

To Do

	 * nothing at the time
     _________________________________________________________________

Known Issues

     * the following problem is solved in recent kernel versions,
       at least in 2.4.17:
       the memory of the initrd can't be freed although it can be
       unmounted without problems but the following error message:
         # umount /initrd
         VFS: Busy inodes after umount. Self-destruct in 5 seconds.
         Have a nice day.
         # blockdev --flushbufs /dev/ram0
         BLKFLSBUF: Device or resource busy
     _________________________________________________________________

How to use the scripts

recipe

    * you need to unpackage the tarball as root !

    1. edit config_build.
    2. edit config_system.
    3. run system_config.
    4. adjust the rescue system (_system/_cd/) to your needs with the
       tools under utils/. you need to be online in order to use these
       tools. you will find a list with available packages under
       doc/packages.
          + install new packages with utils/pkg_install
          + remove unwanted packages with utils/pkg_remove
          + update the packages with utils/pkg_update
    5. do necessary changes to the rescue system in _system/_cd/ if
       needed.
    6. run build.
     _________________________________________________________________

Howto add your own kernel

   if you want to use your own kernel it needs the following
   configuration option to be set:

     * CONFIG_BLK_DEV_IDESCSI=yes
       compiled in support for ide scsi emulation
     * CONFIG_BLK_DEV_IDECD=no
       no support for ide cdrom, they will be accessed through the scsi
       emulation. that is needed to find the cdrom with the rescue system
       on startup.
     * CONFIG_BLK_DEV_RAM=yes
       compiled in ramdisk support
     * CONFIG_BLK_DEV_INITRD=yes
       compiled in support for the inital ramdisk
     * CONFIG_DEVFS_FS=yes
       compiled in support for devfs
     * CONFIG_TMPFS=yes
       compiled in support for tmpfs
     * CONFIG_ISO9660_FS=yes
       compiled in support for ISO9660
     * CONFIG_ZISOFS=yes
       compiled in support for transparent decompression of ISO9660
     * CONFIG_RAMFS=yes
       compiled in support for ramfs
     * CONFIG_CRAMFS=yes
       compiled in support for cramfs
     * CONFIG_BLK_DEV_LOOP=yes
       compiled in support for loop devices
     * CONFIG_BLK_DEV_SR=yes
       compiled in support for SCSI cdrom devices
       

   Additionally you may need to recompile the cloop module 
   _system/_initrdfs/lib/modules/cloop.o if you plan to use
   the cloop compression feature.

   After compiling the kernel and its modules you need to:

     * copy the kernel image to _system/_kernel/vmlinuz.
     * copy the modules to _system/_cd/lib/modules/{kernel_version}/
       where kernel version is the version number of the kernel.
     * now you go on as in [recipe] described
     _________________________________________________________________

The Options

config_build file

   Configure here everything related to the cd burning/building process
   as for example scsi parameters or pathes.

   Table 1. config_build 

+-----------------------------------------------------------------------------+
|parameter   |example          |description                                   |
|------------+-----------------+----------------------------------------------|
|BASE        |/home/timo/      |base directory of the cd set                  |
|            |rescue_cd_set_0.7|                                              |
|------------+-----------------+----------------------------------------------|
|ROOTFS      |_cd/             |where is the rescue system located            |
|------------+-----------------+----------------------------------------------|
|INITRDFS    |_initrdfs/       |where is the initrd system located            |
|------------+-----------------+----------------------------------------------|
|KERNEL      |_system/_kernel  |the directory where the kernel you want to use|
|            |                 |is located. the kernel either needs to be     |
|            |                 |named vmlinuz or must be a symlink named      |
|            |                 |vmlinuz.                                      |
|------------+-----------------+----------------------------------------------|
|SCRIPTS     |scripts/         |the script directory                          |
|------------+-----------------+----------------------------------------------|
|BOOTLOADER  |isolinux         |the bootloader you want to use. it can be one |
|            |                 |of "isolinux", "lilo", "syslinux" or "grub". i|
|            |                 |suggest using isolinux because you can make   |
|            |                 |the kernel and the initrd as big as you like. |
|            |                 |if you use syslinux/lilo/grub the size of your|
|            |                 |kernel image and the compressed initrd should |
|            |                 |not exceed 2.88MB. lilo/syslinux/grub may or  |
|            |                 |may not run on systems where isolinux does not|
|            |                 |work.                                         |
|------------+-----------------+----------------------------------------------|
|MOUNTPOINT  |_work/mnt/       |temporary mount point                         |
|------------+-----------------+----------------------------------------------|
|TMPDIR      |_work/tmp/       |tempdir                                       |
|------------+-----------------+----------------------------------------------|
|BACKUPDIR   |_work/backup/    |backups of changed system files               |
|------------+-----------------+----------------------------------------------|
|SCSIDEV     |1,0,0            |scsi device id of the cd writer, see man      |
|            |                 |cdrecord                                      |
|------------+-----------------+----------------------------------------------|
|SCSISPEED   |2                |speed of the cd writer                        |
|------------+-----------------+----------------------------------------------|
|SCSIBLANK   |blank=fast       |comment this option out if you don't want cdrw|
|            |                 |blanking                                      |
|------------+-----------------+----------------------------------------------|
|RAMSIZE     |5000             |size of the initial ramdisk in kilobytes      |
|------------+-----------------+----------------------------------------------|
|ISOIMAGEONLY|no               |if you don't want to burn the cd but only the |
|            |                 |isoimage say yes here. You will find the image|
|            |                 |in $BASE/rescuecd.iso                         |
|------------+-----------------+----------------------------------------------|
|COMPRESSEDFS|no               |if you want to use a compressed ISO9660 image |
|            |                 |say yes here. It will double the available    |
|            |                 |space on your cd.  if you plan to load the    |
|            |                 |rescuecd into ram then i highly suggest using |
|            |                 |a compressed is9660 fs because it will reduce |
|            |                 |the total needed RAM by the factor 2. Be sure |
|            |                 |to read doc/README.compressedfs before        |
|            |                 |setting this switch to yes.  Additionally you |
|            |                 |will need the zisofs utilities installed.     |
|            |                 |Only one of COMPRESSEDFS, CLOOP and CRAMFS    |
|            |                 |can be set to yes.                            |
|------------+-----------------+----------------------------------------------|
|CRAMFS      |no               |if you want to use a compressed cramfs image  |
|            |                 |say yes here. It will double the available    |
|            |                 |space on your cd. cramfs will result in a     |
|            |                 |slightly better compression ratio than zisofs,|
|            |                 |but on the other hand cramfs is somewhat      |
|            |                 |limited. Max. 256MB Images and max. 16MB big  |
|            |                 |files are supported.  if you plan to load the |
|            |                 |rescuecd into ram then i highly suggest using |
|            |                 |a compressed cramfs image because it will     |
|            |                 |reduce the total needed RAM by the factor 2.  |
|            |                 |The kernel will need compiled in support for  |
|            |                 |cramfs.  Additionally you will need the       |
|            |                 |cramfs utilities installed.  Only one of      |
|            |                 |COMPRESSEDFS, CLOOP and CRAMFS can be set to  |
|            |                 |yes.                                          |
|------------+-----------------+----------------------------------------------|
|CLOOP       |no               |if you want to use a compressed loop device   |
|            |                 |image (cloop) say yes here. It will double    |
|            |                 |the available space on your cd.  That will    |
|            |                 |reduce the amount of total needed RAM by the  |
|            |                 |factor 2.  If you use a self compiled kernel  |
|            |                 |it maybe necessary to recompile the cloop     |
|            |                 |binary at                                     |
|            |                 |_system/_initrd/lib/modules/cloop.o.          |
|            |                 |The cloop method will result in the smallest  |
|            |                 |image size.  Additionally you will need the   |
|            |                 |cloop utilities installed.  Only one of       |
|            |                 |COMPRESSEDFS, CLOOP and CRAMFS can be set to  |
|            |                 |yes.                                          |
|------------+-----------------+----------------------------------------------|
|FLOPPYSIZE  |288              |size of the floppy disk image if you are using|
|            |                 |lilo or syslinux as the bootloader. usually   |
|            |                 |you won't change this except that your bios   |
|            |                 |only boots from 1.44MB floppy disk images,    |
|            |                 |which is rather unusual. if you want a real   |
|            |                 |can be set to yes.                            |
|------------+-----------------+----------------------------------------------|
|FLOPPYSIZE  |288              |size of the floppy disk image if you are using|
|            |                 |lilo or syslinux as the bootloader. usually   |
|            |                 |you won't change this except that your bios   |
|            |                 |only boots from 1.44MB floppy disk images,    |
|            |                 |which is rather unusual. if you want a real   |
|            |                 |bootable floppy disk use the script utils/    |
|            |                 |make_boot_disk. possible values are 144 for an|
|            |                 |1.44MB disk image and 288 for a 2.88MB disk   |
|            |                 |image.                                        |
+-----------------------------------------------------------------------------+
|DEBIAN_     |ftp.fr.debian.org|which ftp server we should use. actually, you |
|MIRROR      |                 |should select the closest mirror from your    |
|            |                 |location. have a look at                      |
|            |                 |http://www.debian.org/misc/README.mirrors for |
|            |                 |further information on debian mirrors         |
|            |                 |locations.                                    |
+-----------------------------------------------------------------------------+
|DEBIAN_     |woody            |which distribution we should use.             |
|DISTRIB     |                 |                                              |
+-----------------------------------------------------------------------------+
|DEBIAN_     |main contrib     |which modules should we use.                  |
|COMPONENTS  |non-free         |                                              |
+-----------------------------------------------------------------------------+


     _________________________________________________________________

config_system file

   Configure here everything related to the system config.

   Table 2. config_system 

+-------------------+-------------+-------------------------------------------+
|parameter          |example      |description                                |
+-------------------+-------------+-------------------------------------------+
|DHCP               |no           |set this to yes if you want to get your ip |
|                   |             |via dhcp. if DHCP is set to "yes" the      |
|                   |             |following network specific parameters have |
|                   |             |no effect                                  |
+-------------------+-------------+-------------------------------------------+
|NETWORKAUTOCONFIG  |no           |set this to yes if you want if you want    |
|                   |             |that your network will be configured       |
|                   |             |according to your current ifconfig         |
|                   |             |automagically. if this is set to yes the   |
|                   |             |following three parameters (INET, NETMASK, |
|                   |             |GATEWAY) have no effect.                   |
+-------------------+-------------+-------------------------------------------+
|INET               |192.168.0.98 |ip address of the rescue system            |
+-------------------+-------------+-------------------------------------------+
|NETMASK            |255.255.255.0|subnet mask of the rescue system           |
+-------------------+-------------+-------------------------------------------+
|GATEWAY            |192.168.0.1  |default gateway. you can leave this blank  |
|                   |             |if you don't use a default gateway         |
+-------------------+-------------+-------------------------------------------+
|NAMESERVER         |195.25.2.129 |the nameserver you want to use             |
+-------------------+-------------+-------------------------------------------+
|MODULES            |pcnet32,io=  |a list of modules which should be loaded at|
|                   |0x300,irq=10 |boot time                                  |
|                   |rtl8139,io=  |                                           |
|                   |0x200        |                                           |
+-------------------+-------------+-------------------------------------------+
|MOUSEPORT          |/dev/ttyS0   |the mouse port                             |
+-------------------+-------------+-------------------------------------------+
|MOUSETYPE          |ms3          |the mouse type                             |
+-------------------+-------------+-------------------------------------------+
|MOUSEREPEATTYPE    |ms3          |the mouse type of /dev/gpmdata             |
+-------------------+-------------+-------------------------------------------+
|MOUSERESPONSIVENESS|""           |-> man gpm.conf                            |
+-------------------+-------------+-------------------------------------------+
|MOUSEAPPEND        |""           |-> man gpm.conf                            |
+-------------------+-------------+-------------------------------------------+
|PASSWD             |rescue       |the root password for the rescue cd        |
+-------------------+-------------+-------------------------------------------+
     _________________________________________________________________

Utils

double

   Usage: double target-directory

   This script replaces all hard links in the target-directory and all
   subdirectories with sym links.
     _________________________________________________________________

copy_libs

   Usage: copy_libs binary libdir

   This script copies all libraries needed by BINARY to LIBDIR
     _________________________________________________________________

make_boot_disk

   Usage: make_boot_disk BOOTMANAGER

   BOOTMANAGER = lilo or syslinux

   This script creates a bootable floppy disk which you can use to boot
   into the rescue system on systems where the bios does not support el
   torito cdroms. Important: This script should only be called out of the
   utils directory.
     _________________________________________________________________

pkg_list

   Usage: pkg_list

   This script retrieves a brand new packagelist from the debian mirrors
   and prints it to stdout

   Important: This script should only be called out of the utils
   directory.
     _________________________________________________________________

pkg_remove

   Usage: pkg_remove PACKAGENAME PACKAGENAME...

   removes the selected packages out of the rescuesystem.

   Important: This script should only be called out of the utils
   directory.
     _________________________________________________________________

pkg_install

   Usage: pkg_install PACKAGENAME PACKAGENAME...

   installs the selected packages. Maybe you need to mount proc at
   _system/_cd/proc to succesfully install all packages.

   Important: This script should only be called out of the utils
   directory.
     _________________________________________________________________

pkg_update

   Usage: pkg_update

   updates currently installed packages.

   Important: This script should only be called out of the utils
   directory.
     _________________________________________________________________

pkg_show_installed

   Usage: pkg_show_installed

   shows a list of the currently installed packages of the rescue system

   Important: This script should only be called out of the utils
   directory.
     _________________________________________________________________

pkg_update_ips

   Usage: pkg_update_ips

   detects current ip addresses for the debian mirrors and updates
   _system/_cd/etc/apt/sources.list accordingly. Its main use is in the
   other pkg scripts to ensure that only valid ip addresses are placed
   into sources.list, but it can also be called independently.

   Important: This script should only be called out of the utils
   directory.
     _________________________________________________________________

prepare_system

   Usage: prepare_system TARGET

   prepares the system under TARGET to be used as the rescue system. That
   means it moves important directories to TARGET/var/ and leaves only
   symlinks. It also overrides TARGET/etc/fstab and moves the old fstab
   to TARGET/etc/fstab.old, so that system won't boot anymore. read also
   doc/README.own_system to get more information.
     _________________________________________________________________

Appendix

Description of the boot procedure

initrd

    1. first the script /linuxrc is executed
    2. linuxrc searches for a cdrom with the file /RESCUECD.
    3. linuxrc mounts the cdrom under /mnt/cdrom
    4. (if the kernel parameters cramfs and cloop were not set)
        4.1 (if the kernel parameter cd_into_ram was set)
            4.1.1 ramfs is mounted on /mnt/ramfs
            4.1.2 the file /mnt/cdrom/boot/rootfs.iso9660.img is copied to 
			      /mnt/ramfs/cd.iso
            4.1.3 the file /mnt/ramfs/cd.iso is mounted on /mnt/cdrom.iso
            4.1.4 /mnt/cdrom is unmounted
        4.2 (if the kernel parameter cd_into_ram was not set)
            4.1.1 the file /mnt/cdrom/boot/rootfs.iso9660.img is mounted
			      at /mnt/cdrom.iso
    4. (if the kernel parameter cramfs was set)
        4.1.1 (if the kernel parameter cd_into_ram was set)                          
            4.1.1 ramfs is mounted on /mnt/ramfs
            4.1.2 the file /mnt/cdrom/boot/rootfs.cramfs.img is copied to 
			      /mnt/ramfs/cd.iso
            4.1.3 the file /mnt/ramfs/cd.iso is mounted on /mnt/cdrom.iso
            4.1.4 /mnt/cdrom is unmounted
        4.2 (if the kernel parameter cd_into_ram was not set)
            4.1.2 the file /mnt/cdrom/boot/rootfs.cramfs.img is mounted on 
			      /mnt/cdrom.iso
    4. (if the kernel parameter cloop was set)
        4.1.1 (if the kernel parameter cd_into_ram was set)                          
            4.1.1 ramfs is mounted on /mnt/ramfs
            4.1.2 the file /mnt/cdrom/boot/rootfs.cloop_iso9660.img is 
			      copied to /mnt/ramfs/cd.iso
            4.1.3 the file /mnt/ramfs/cd.iso is mounted on /mnt/cloop
            4.1.4 the file /mnt/cloop/rootfs.cloop.img is mounted on 
			      /mnt/cdrom.iso
            4.1.4 /mnt/cdrom is unmounted
        4.2 (if the kernel parameter cd_into_ram was not set)
            4.1.1 the file /mnt/cdrom/boot/rootfs.cloop_iso9660.img is mounted on 
			      /mnt/cloop
            4.1.2 the file /mnt/cloop/boot/rootfs.cloop.img is mounted on 
			      /mnt/cdrom.iso
	 5. tmpfs is mounted at /mnt/cdrom.iso/var
	 6. the directory tree /mnt/cdrom.iso/usr/lib/varbase/root/* is copied
	    to /mnt/cdrom.iso/var
	 7. devfs is mounted at /mnt/cdrom.iso/dev
	 8. /proc is unmounted
	 9. /sbin/init starts the real init process
     _________________________________________________________________

debian cd

   after initrd executed /sbin/init the normal boot process starts.
     _________________________________________________________________

How to make 2.88MB el torito floppy disk images

   I wrote that little recipe because i did not find any useful
   information on that title on the net. So maybe that will be useful for
   someone else.
     _________________________________________________________________

use lilo as the bootloader

    1. First make a 2.88MB zeroed image file:
       dd if=/dev/zero of=/tmp/boot288.img bs=512 count=5760
    2. Then set up the loop device:
       losetup /dev/loop0 /tmp/boot288.img
    3. Then format it with a file system:
       mkfs.minix /dev/loop0
    4. Mount it under /mnt:
       mount /dev/loop0 /mnt
    5. Assemble your boot floppy under /mnt.
    6. Now execute lilo.
    7. Last but not least copy the initrdfs.gz to /mnt and unmount /mnt.
    8. Detach the loop device:
       losetup -d /dev/loop0.

   Voila, that's it. I got that out of the scripts from tomsrtbt disk -
   http://www.toms.net/rb

   ---/snip\---
    # lilo.conf
    boot           =     /dev/loop0
    disc           =     /dev/loop0
    bios           =     0x00                    # 2.88MB disc geometry
    sectors        =     36
    heads          =     2
    cylinders      =     80
    install        =     /mnt/boot/boot.b
    map            =     /mnt/boot/map
    backup         =     /dev/null
    default        =     RescueSystem
    prompt
    delay          =     50
    timeout        =     50
    image          =     /mnt/bzImage            # your kernel image
    label          =     RescueSystem
    initrd         =     /mnt/initrdfs.gz        # initial ramdisk
    root           =     /dev/ram0
    append         =     "ramdisk_size=40960"    # initial ramdisk size
   ---\snap/---
     _________________________________________________________________

use syslinux as the bootloader

   Syslinux will maybe work on systems where the lilo bootloader does not
   work. That's because there are some buggy bioses out in the universe
   which does not implement the full el torito standard. And BTW syslinux
   is a lot easier to set up then lilo.

    1. First make a 2.88MB zeroed image file:
       dd if=/dev/zero of=/tmp/boot288.img bs=512 count=5760
    2. Then set up the loop device:
       losetup /dev/loop0 /tmp/boot288.img
    3. Then format it with the fat file system because syslinux only
       operates from DOS formatted disks:
       mkfs.msdos /dev/loop0
    4. Mount it under /mnt.
       mount /dev/loop0 /mnt
    5. Now copy the initrdfs.gz and the kernel to /mnt and unmount /mnt.
    6. Then you execute:
       syslinux -s /tmp/boot288.img
    7. Detach the loop device:
       losetup -d /dev/loop0

   Voila, that's it.

   ---/snip\---
    # syslinux.cfg

    DEFAULT   RescueSystem
    PROMPT    1
    LABEL     RescueSystem
    KERNEL    bzimage
    APPEND    initrd=initrdfs.gz ramdisk_size=40960 root=/dev/ram0
    TIMEOUT   100
   ---\snap/---
     _________________________________________________________________

use grub as the bootloader

   The information provided in this paragraph is heavily based on
   information provided to me by Petr Konecny
   <pekon@informatics.muni.cz>.

    1. First make a 2.88MB zeroed image file:
       dd if=/dev/zero of=/tmp/boot288.img bs=512 count=5760
    2. Then set up the loop device:
       losetup /dev/loop0 /tmp/boot288.img
    3. Then format it with the ext2 filesystem.
       mke2fs /dev/loop0
    4. Mount it under /mnt.
       mount /dev/loop0 /mnt
    5. Create a directory called grub.
       mkdir /mnt/grub
    6. Copy the grub stage files onto the floppy image.
       cp /usr/lib/grub/i386-pc/stage[12] /mnt/grub
    7. Create a device map file.
       echo "(fd0) /dev/loop0" > /tmp/dev.map
    8. Install grub to the image.
       /sbin/grub --device-map=/tmp/dev.map <<END
       root (fd0)
       setup (fd0)
       END
    9. Now copy the initrdfs.gz and the kernel to /mnt and unmount /mnt.
   10. Copy the menu.lst file to /mnt/grub.
   11. Finally detach the loop device.
       losetup -d /dev/loop0

   Voila, that's it.

   ---/snip\---
    # grub menu file menu.lst

   timeout 5
   title Rescue System
   root (fd0)
   kernel /vmlinuz root=/dev/ram0 ramdisk_size=4096 init=/linuxrc rw
   initrd /initrdfs.gz
   END
   ---\snap/---
     _________________________________________________________________

use isolinux as the bootloader

    1. make a direcory isolinux in the root tree of your rescue system:
       mkdir $ROOTFS/isolinux
    2. copy the kernel image, the gzipped initrd image, isolinux.bin and
       isolinux.cfg to $ROOTFS/isolinux
    3. make the cd image with the following command:
       mkisofs -R -b isolinux/isolinux.bin -c isolinux/boot.cat
       -no-emul-boot -boot-load-size 4 -boot-info-table $ROOTFS > cd.iso

   ---/snip\---
    # isolinux.cfg


    DEFAULT  RescueSystem
    PROMPT   1
    LABEL    RescueSystem        # be sure to use iso9660 8.3 filenames
                                 # here 'cause isolinux can't handle
                                 # other names.
                                 # mount -o norock,nojoliet
         # /dev/scd0 /mnt/cdrom
                                 # to get them
    KERNEL   /isolinux/vmlinux
    APPEND   initrd=initrdfs.gz init=/linuxrc ramdisk_size=25000
             root=/dev/ram0
    TIMEOUT  100
   ---\snap/---
     _________________________________________________________________

runlevel

   runlevel 2 is without network server (sshd, ftpd ...) support,
   runlevel 3 and above with network server support.
     _________________________________________________________________

Links

   Busybox - http://busybox.lineo.com
   
   A really nice "all in one" tool you definitely need to check out if
   dealing with systems that only got small space to use, eg el torito
   boot images, boot floppies, or embedded systems.
   

   Tinylogin - http://tinylogin.lineo.com
   
   The same as above just for login utilities.


   asmutils - http://linuxassembly.org/asmutils.html
   
   /*VERY*/ small GNU like tools, all written in assembler. If you ever
   wanted a httpd server which is less than 1k (exactly 532 bytes on my system)
   big, here you will find it.


   How to make a bootable CD - http://staff.washington.edu/dushaw/rescueCD.htm
   
   A description on how to make bootable cds.
   

   YARD - http://www.croftj.net/fawcett/yard
   
   The popular Yard package. A set of perl scipts to create rescue
   floppies.
   

   tomsrtbt - http://www.toms.net/rb
   
   It's really incredible what that guy does with only one single floppy
   disk. It's a fully featured one fdd rescue disk.
   

   BBLCD - http://www.bablokb.de/bblcd/
   
   Another approach of building bootable rescue cds. He takes an
   installed system and puts everything onto the Cd and makes it
   bootable. Very nice.
   

   Roll your own Linux Boot CD - http://www.phenix.bnl.gov/~purschke/RescueCD   
   A very detailed description and a set of scripts on how to make a
   bootable rescue Cd.
   

   uClibc - http://cvs.uclinux.org/uClibc.html
   
   a very small implementation of the libc


   lnx-bbc - http://www.lnx-bbc.org

   the one and only real bootable business card. check this out if you 
   don't know this project.
     _________________________________________________________________

Credits

   Credits go to all of you who contribute to the Cd set and especially
   to Matthew Cline who contributed the scripts make-fstab.pl and
   networkInfo.pl as well as some other useful tips, to Mathew Binkley
   for the idea of using apt-get to fetch the debian files and Petr
   Konecny <pekon@informatics.muni.cz> for the information on integrating
   grub into the system. If i forgot someone who thinks he should be
   mentioned here just send me an email and i will correct that.
