MultiBoot 0.4 MultiBoot is a master boot record with ability to interactively select which partition to boot. It doesn't try to do fancy things and extend MBR format in fancy non-compatible ways. MBR which has multiboot installed in it continues to be perfectly "normal" MBR for BIOS, OSes and fdisk-like utilities. mboot_mbr.S is a code which is stored in MBR's boot code section. When you boot from it, you will see a menu: MultiBoot 0.4 a - Partition 1 b - Partition 2 c - Partition 3 d - Partition 4 Choose: _ Letters and label texts are configurable. It's possible to have less than four partitions selectable. When user presses a letter or timeout expires, selected partition is marked as active. MBR is updated if needed, in order to not confuse OS being booted by booting it from seemingly "inactive" partition. Then first sector of selected partititon is read and executed, as usual. It is possible to "boot" an extended partition this way. For this to be useful, you need to write slightly modified multiboot code in each extended partition table sector. The code is in mboot_ext.S. If extended partition is selected, this code will be loaded and will display another similar menu, where user can select which of the extended partitions to boot. This method of booting OSes is not standard and there is no guarantee it will work. It was tested to work with Linux + (lilo installed to Linux's partition superblock), though. mbinstall is an utility which has mboot_mbr and mboot_ext binary images embedded in it. You can install them into MBR and/or extended partitions using it. It also can display or change settings (letters, menu labels, timeout etc). Build instructions: download mbinstall.c, mboot_mbr.S, mboot_ext.S and mk, then run "sh mk". If you don't have dietlibc installed, edit mk and remove "diet -Os" from the line which compiles mbinstall. Usage: mbinstall [-t timeout_ms] [-d default_key] [-e default_key_for_ext_partition] [-1..9 c[:label]] [-M] [-E] block_device -t timeout_ms Timeout for boot menu -d default_key Key which is assumed if timeout is reached -e default_key Same for extended partition boot menu -N c[:label] key 'c' selects N'th partition (1..4 primary, 5+ extd) label: on-screen label for this partition -L NN:c:[:lbl] Same as -N... for N>9 -M, -E Install boot code to MBR and/or extended partition (normally I would just check for their presence) Special cases: -N - makes partition N unselectable -d disables timeout -t 0 -d c no menu; boot partition 'c' -t 0 -d blind boot: no menu, but you still have to press a character corresponding to some partition Without options, mbinstall shows current mbinstall configuration. Examples: # mbinstall /dev/sdb signature 'MultiBoot 0.4' not found in MBR No editing is done on MBR # mbinstall /dev/sda Partition 1: 1 - Partition 1 Partition 2: x - Extended Default choice is 'x', timeout is 4950 msec Partition 5: l - Linux Partition 6: 6 - ExtPartition 6 Partition 7: 7 - ExtPartition 7 Partition 8: 8 - ExtPartition 8 Default choice for ext menu is 'l'