Experimental support for multiple root filesystems for the Special Developer Edition
For a discussion of the technical issues associated with support multiple distributions in general, please see here. This page describes the experimental support for multiple root filesystems that has been integrated into the OpenAOS OpenEmbedded overlay for the Archos 5. This goes some way towards supporting multiple distributions, but is not a complete solution.
If you check out the overlay as described here, you can build the necessary initramfs by running
You can then install the initramfs it generates, along with a kernel, using the recovery mode in the SDE firmware.
Prebuilt images are available here: http://www.openaos.org/~kevin/archos_angstrom_project/
The multiroot initramfs allows you to provide a list of root filesystem images in a menu file, and presents the names of these images in a menu at boot time. You can select from the menu using the volume and power buttons (touchscreen support might be added later if there is demand).
Here is an example of a boot menu. This file should be installed at the root level of /dev/sda1 (the media partition, typically at /mnt_data in Angstrom, and exposed over USB by AVOS) and be called menu.lst.
Angstrom Linux|/dev/sda1|/rootfs.img|/sbin/init Qtopia|/dev/sda1|/qtopia.img|/sbin/init
Each line has four entries separated by | characters. The first entry is the name of the image to boot.
The second entry is the device where the image is found. This will be either /dev/sda1 or /dev/sda2 unless you've added extra partitions.
The third entry is the path to the image file on the device. The image can be in any format that `mount' will understand without any extra help. So ext2 and ext3 are OK, as is cramfs. But images with odd offsets (like the Archos AVOS cramfs) won't work without extra manipulation.
The fourth entry is the init to run on the new root filesystem. Note that owing to a bug in BusyBox, running /linuxrc as init will probably fail, even if it is, in fact, a symlink to /sbin/init.
The first entry in the list is the default, and will automatically be used if the user does nothing for ten seconds. If the user does press a key before then, but not make a selection, the timeout is cancelled. But the unit will power off automatically after four minutes. This is to prevent the battery being completely drained if the unit is accidentally switched on in your pocket (yes, this has happened to me).
The menu file is parsed by a shell script. Don't put shell metacharacters (e.g., quotes) into the file anywhere unless you really know what you're doing. The system will probably behave very badly if the file is badly formed -- even blank lines are probably to be avoided.