DietLinux is a distribution based on dietlibc. It contains a 2.6.x linux kernel, and will never support older kernels that do not support for devfs and tmpfs.
The boot process is optimized for small size, the upcoming 0.2-release should be able to boot from cdrom, floppy or usb-stick on all systems with at least 8mb of RAM.
General stuff
With the upcoming 0.2-release the boot-process is the same for all media. I got rid of ramdisk images for the root filesystem completely, and shrinked the initrd-images to about 60k (uncompressed). A kernel can be used with the boot system if it has support for initrd, tmpfs and devfs.
You need to configure the bootloader to give the kernel some bootparameters:
init=/linuxrc
We use linuxrc to set up some stuff. It will execle() init later
root=/dev/ram0
The initrd is the final root. Though our linuxrc will change it.
devfs=mount
Only needed if you didn't tell the kernel at compile time to automatically mount devfs
bootdevice=[]
To come, hints for linuxrc from which device we booted
Bootup, the initrd phase
linuxrc, stage 1
The first part is handled in linuxrc. I'ts described here short for better understanding what's going on.
* linuxrc gets started by the kernel. Besides linuxrc we have two directories in our ramdisk -- /dev with mounted devfs and /rootfs
* linuxrc mounts a tmpfs at /rootfs
* linuxrc creates basic directories in the rootfs (namely dev and initrd)
* linuxrc chdirs to /rootfs, calls pivot_root and chdirs / chroots in the new root. After this we have the old contents of the initrd under /initrd
* linuxrc remounts initrd/dev under /dev, and mounts /proc. With the dev remount we've put the open /dev/console file into the right filesystem.
* linuxrc umounts /initrd with MNT_DETACH set. Most likely initrd will not unmounted immediately but when calling execle() to exec init
For more details please consult the apkg sources.
linuxrc, stage 2
We're now getting to the second stage, still powered by initrd. That's the first stage you can influence without modifying the linuxrc-sources.
* linuxrc creates all directories in the rootfs
* linuxrc mounts procfs and sysfs
* linuxrc inits the built-in packagesystem. This includes trying to find a (a dietlinux media must have a file called `dietlinux-media' in its root) es well es the name of the initial package to load (from dietlinux-media)
* linuxrc loads the initial package (the apkg package system) and execl()s apkg with param -t (starts bootstrap). Most likely /initrd gets freed here, so we have about 60k additional space from now on.
apkg stage
Now it's apkgs turn to bootstrap a package set to the rootfs.
Software Details:
Version: 1.0
Upload Date: 3 Jun 15
Distribution Type: Freeware
Downloads: 172
Comments not found