===================== ==== Phase 1-5 ==== ===================== It will consist of these components: /Prepper/ /Switcher/ /Booter/ - /Prepper/ -- The tool that creates partitions and loads OS's onto it. Probably GUI but possibly CLI. Eventually this must be multi-platform, but the initial goal is just to get it working on one OS. (see source of http://www.cgsecurity.org/wiki/TestDisk for code examples) (AKA "installer", "configurer", "arranger", "setup") The first-phase of this might just be an OS-application-based version of Switcher, since there are many tools out there that could load an OS onto an existing blank partition. (It would also have to do the partitioning too, of course. Just that it doesn't *necessarily* have to do the loading.) - /Switcher/ -- a floppy-sized boot image that does the actual work of switching between the different OS's (1.44+mb -- something that could be loaded with MEMDISK, or maybe that can fit entirely within initrd) (AKA "chooser", "muxer", "menu", "selector", "points") To make development quicker, this would probably be an EXTREMELY slimmed-down version of Linux, tailored just to do this one job. There are two ways to implement this: - it can display its own menu, and after selection, it would rewrite the partition table - Booter would be responsible for the menu UI, and the only thing Switcher would do is rewrite the partition-table. Booter would pass the desired selection to Switcher via the kernel-command-line. Phase three: It should kexec the chosen OS after rewriting the partition table. However, this isn't strictly necesary -- rebooting works just fine. (which is just as well -- not all OS's can be booted via kexec) (eg. Windows) - /Booter/ -- It has two jobs: - be able to boot (chainload?) the main OS that has been selected - be able to divert the boot sequence to boot the Switcher instead It will just be a small configuration alongside some mature bootloader. Probably GRUB2. However, this should be possible on a wide variety of different bootloaders, and it's even possible that a different bootloader would be chosen, based on the main OS, since there are probably a lot of different bootloaders that could be configured to divert to the Switcher. ======================== ==== Phase 6 - 10 ==== ======================== It will consist of these components: /Prepper/ /Switcher/ - /Prepper/ -- same as above - /Switcher/ -- This is written as a **module** for GRUB2. This means that the bootloader doesn't need to load twice just to boot one thing. Also, the user would probably be more responsible for writing the bootloader config file. Complexities include: Can GRUB2 tolerate having the partition table rewritten halfway through?