view · edit · attach · print · history

The contents of this website are Copyright (c)2005 by Brian Manning <brian at antlinux dot com>. Please do not reuse any of the content on this website without permission from the author.

Related pages:

Kernel build notes :: Boot floppy build notes

System Booting Diagram

boot kernel -> load initrd.gz -> load core -> load application(s)

Boot Scenarios

  • Floppy -> Net (most likely a client)
    • one floppy disk with kernel set for NFS mounting, small busybox to load network card driver?
    • two floppies, one with the kernel, the other with the net-modules and busybox stored in initrd.gz
    • scripts would be needed to build one or two floppy disks with kernel, initrd image, and needed modules for network card drivers
  • Floppy -> CD (client or server)
    • in the rare cases where the machine won't boot from CD. Mount CD then cache important modules in memory as space permits
    • scripts would be needed to build one or two floppy disks with either IDE, SCSI or proprietary CD-ROM driver in the initrd image
  • Floppy -> USB (client or server)
    • most computers won't boot USB drives
    • needs kernel with SCSI disk modules, USB drivers, busybox to mount disks
  • Net -> Net (most likely a client)
    • PXEboot? using pxelinux, full initrd.gz file can be built and used
  • CD -> CD (client or server)
    • isolinux, full initrd.gz file can be built and used, base/runtime modules run from CD, with in-memory caching of files needed by application.
  • CD -> Net (most likely a client)
    • runtime from Network, optional caching depending on user's preference.
  • CD -> USB (client or server)
    • don't see this happening, but I put it here anyways. CD would almost store/retrieve things faster; maybe use the USB drive for storing system settings (encrypted) between reboots.

Boot Package Builder

  • kernelbuilder.pm
    • builds kernel from source, using specified .config file. packages modules into squashfs file
    • possibly unpack kernel from tarball and patch
  • busyboxbuilder
    • creates busybox binary optimized for disk or network operations (booting and mounting of filesystems)
  • initrdbuilder.pm
    • creates the initrd file from scratch, copies busybox along with key scripts from CVS and creates new devices inside of the initrd image. copies modules.sqs onto initrd image
  • displaybuilder.pm
    • creates display.txt and help text files from stub files
  • floppybuilder.pm
    • tests sizes of kernel + initrd image to see if you need one floppy or two
    • Sets up kernel boot parameters via rdev, copies kernel, initrd image, syslinux files (syslinux binary and config) from syslinux distribution, and displaybuilder.pm files (display.txt, help files) to floppy/floppies
    • returns to initrdbuilder or kernelbuilder if the options the user has specified results in files/images that are too large for one or two floppies
    • see http://pingu.salk.edu/LDP/HOWTO/Bootdisk-HOWTO/x703.html#AEN831 for specific steps on building a 1-floppy disk image
  • isobuilder.pm
    • creates blank ISO image with isolinux files copied from syslinux distribution (isolinux binary and config) and display and help files created with displaybuilder.pm

Runtime Scenarios

Core package types:

  • AU - Antlinux USB
  • AE - Antlinux Embedded - runs JFFS2 on CF cards
  • AC - Antlinux CD-ROM - ISO9660
  • AD - Antlinux Disk - reiserfs

Boot Floppies

  • create an isolinux image with all of the drivers, and a network floppy image, for booting from the floppy to run over the network. The linux kernel can boot and mount an NFS filesystem as the root directory of the system. See the various NFS HOWTOs for more info
  • convert 2.88M image from syslinux to isolinux (see isolinux.doc in the syslinux distribution; no longer necessary to make boot floppy images)
  • make 2 1.44M syslinux floppies
  • test grub/syslinux/isolinux operation over serial console
  • see what environment variables get set by the kernel when running over serial console
  • add a banner script to the image in /etc/init.d/rcS that prints out which script is about to be run by rcS
  • use halt -p -d -i -f to power down a machine. See Knoppix knoppix-halt script for more hints
  • put tags into syslinux.cfg for each label stanza in the file
    • examples, NAME and DESC
    • have a script that parses out the tags into a file that can be displayed with by hitting one of the F-keys on the keyboard
  • use BASE=http://www.somehost.com/path/to/core.sqz or BASE=file://path/to/core.sqz for telling the kernel/boot scripts where to get the base file from

Core Package

FIXME move to AntBuild

  • make the contents of the core package package the same across all archtectures; for a network core load, get networking up with networking modules so the core package can be downloaded; for a device core load, get scsi/ide devices up enough to load the core package
  • just get the system up enough to load the core package off of another system/device
view · edit · attach · print · history
Page last modified on August 20, 2005, at 11:49 PM