In my previous article ``Getting Linux into Small Machines'' I described how to create a bootable Linux diskette with Busybox (shell with many built in utilities) and uClibc (a small C library). These programs save an enormous amount of memory and disk space, so that they are usable even on small machines.
In this article I want to carry the idea of creating a small boot diskette a step further. Especially I want to achieve the following goals:
I will draw many ideas from the Debian installer. Busybox was created for the Debian install diskettes in the first place and the Debian installer made heavy use of the dialog utility.
The ideas described in this article should not only be useful for installation disks, but also for special-purpose stand-alone Linux versions such as routers or print servers.
Albeit reluctantly, I will abandon the idea of targeting a 386 system with only 4MB or RAM. As even a stripped down Linux kernel needs around 3MB of memory to run and I plan to use a RAM disk of at least 2MB, the use of a RAM disk on a 4MB machine is definitely out if the installation is to be considered useful. Systems without a RAM disk would need their root file system on a diskette and that would be limited to 1.44MB (it cannot be compressed).
We want to create an installation diskette that enables us to install a Linux distribution onto a hard disk. The system is considered to meet the following requirements:
At the moment the system does not support PCMCIA or USB devices to install from. For laptops it means that their Ethernet cards would not be accessible. The Debian installer (version 2.1) could do this though.
The aim of this article is to assist in creating a simple boot diskette for your own Linux distribution. This is only the infrastructure for the installation diskette, not a completely working installation diskette.
What needs to be added:
Any existing Linux installation (regardless of the distribution it was originally created with) could in principle be archived and restored this way.
In order to get a Linux system up and running we need the following items:
On our boot diskette we will use an initial RAM disk (initrd), which will be loaded by the boot loader before the kernel starts.
The root file system has to contain the following items:
The host system is the computer on which we build the bootable diskette. It is assumed to be a fairly modern PC with a modern installation of Linux. We will assume that it is a Pentium with at least 32MB of RAM.
Also we assume that it contains a modern Linux system that contains the following software:
You will need lots of hard disk space. Around 400MB would be enough. The unpacked Linux kernel source tree alone takes around 170MB these days. Paradoxically enough the end result will fit on one or two 1.44MB diskettes.
The target system is the system on which the diskette will be booted. It is supposed to be at least a 486 with 8MB of RAM.