Building
Due to Github "large file handling" limitations (hint: avoid Github LFS at all costs), I can no longer include livecd/baslin/fs.img
in the normal git repo (annoying, as otherwise the /livecd
directory would reflect the liveCD filesystem 1:1, minus the boot image).
So, I'll upload an fs.img
file alongside each tagged release from now on.
You should download it, and place it at /livecd/baslin/fs.img
when building your own ISO.
Building the ISO
ImgBurn
Use ImgBurn to build the ISO. This probably works in Wine, but I have not tested this. When creating a Disc Image project in ImgBurn, you can specify a separate image file to use for 'boot device emulation'. We use cdboot.ima
from this project to do that, which is a bootable Windows 98 (MS-DOS 7.1) boot image, modified to include a number of extra utilities. The Windows 98 image was chosen as it automatically loads a number of CD-ROM drivers. You can of course use any DOS image you like, as long as you can get it to read the rest of the CD. I have found that only the Floppy device emulation tends to work for booting old systems.
WinImage
I use WinImage to set up the DOS boot images from a modern Windows machine. You can, alternatively, just make a real life boot floppy in MS-DOS, and add the files you need to it, physically. From there you can image it back into ImgBurn. Also you could loop-mount the disk images with -t msdos -o loop,rw
in Linux and modify them that way, then write them to disk.
Building BusyBox
Included in /extras
of the repo and the LiveCD is the BusyBox-1.01 source code used to build the busybox binaries used in the initfs.gz
init environment. The initfs
version is built to be as small as possible, building to under 100K.
Building is done using the uClib
build system. A copy of the system is included in /extras
on the LiveCD. You can use it on a modern Linux system to build a compatible BusyBox binary.
- Extract the root filesystem from the archive, mount it with something like
sudo mount -o loop,rw root_fs_i386.ext2 /path/to/mountpoint
. - You can then copy the BusyBox source into the root filesystem with something like
cp -r busybox-1.01 /path/to/mountpoint/busybox-1.01
. - chroot into the build directory
sudo chroot /path/to/mountpoint
- cd into the busybox directory
cd busybox-1.01
- Configure busybox:
make allnoconfig
make config
make
- You may get errors at the end, but they're likely only for the docs step (not important)
initfs.gz
This is a gzip
'd ext2 disk image. If you make a new image, you must use the -r 0
argument with mke2fs
. You want this to be as small as possible, as it loads into RAM entirely at boot. Any bigger than ~400K and you'll risk running out of RAM with 4MB.
You can place additional modules in /lib/modules/2.2.26/misc
and load them via linuxrc
using insmod
.
FS.IMG
This is a raw ext2 filesystem image, again using -r 0
with mke2fs
for compatibility. 320MB is the largest image that will fit on a 650MB CDROM while still including the full set of documentation and packages.