Launchpad Entry: dx-karmic-os-switcher
Contributors: DX & Design teams, Ubuntu Platform
Packages affected: grub2, gdm, initscripts
This specification documents the proposed OS Switcher module for Karmic.
The OS Switcher module allows users to boot another operating system, or boot a different Linux kernel version. The goal is to provide a graphical OS selection interface that is only displayed if necessary, while the text-based bootloader selection mechanism would be hidden by default and only used for emergency cases.
This specification is part of DesktopExperienceTeam/KarmicBootExperienceSpec
Release notes, based on the above description and impacted packages, will be detailed as the integration progresses.
We want to provide a smooth boot experience, and as part of that remove the prompts associated with the text-based bootloader selection mechanisms. Yet, we still want to allow users to select other operating systems to boot, including alternative versions of the Linux kernel.
The graphical OS switcher is available on demand during the boot sequence and would present a more modern and pleasant experience for users wishing to boot another system.
Note: the old grub boot selector will still be available for emergency situations.
Bob would like to use the other operating system installed on his machine. He turns on his computer, waits for a few seconds, then sees a graphical message on his Ubuntu system screen to invite him to press "Esc" if he wants to interrupt the Ubuntu boot and switch to another version. He presses 'Esc' and the system presents him a set of alternative boot choices, including other kernel version and legacy OSes.
If Bob was to select the legacy OS, Ubuntu would shutdown and instruct the computer to reboot (but only for this time) directly into the legacy OS.
But Bob would rather try the new experimental kernel he just installed, so he selects kernel-2.6.3X and his system shutdowns and reboots (for this time only) with the new kernel he selected.
This spec has been designed for conventional x86 systems. Parts of it may probably also apply to other hardware architectures.
(User Interface) Design
The overall look & feel and design requirements for the new boot experience are expressed in a separate document: see DesktopExperienceTeam/KarmicBootExperienceDesignSpec
(Technical Design and) Implementation
The OS switcher will be comprised of 5 parts:
- a module to parse grub configuration menus
- a module to display a temporary prompt ('Press ESC to boot another OS')
- a module to display the list of operating systems to boot, including alternative version of the Linux kernel
- a module to react to user input (ESC, scrollbars, ENTER)
- a module to transfer control to grub-reboot for rebooting and switching to another OS
Note: the module will know about installed operating systems only through the grub configuration files. If an operating system is installed/changed or is not declared in the configuration file, the module will have no way of knowing about it.
See https://wiki.ubuntu.com/FoundationsTeam/Specs/KarmicGrub2 for technical requirements related to the Platform.
At the engineering level, the selector is planned to interact with the system through:
- the format of the boot entries in a grub menu.lst
- or the format of the boot entries in the grub2 menu.cfg files (*)
- the 'grub-reboot' command or a new 'grub2-reboot' command/script that does the same
(*) Note: if both are present, there should be a way to determine which bootloader is installed and *active* on the system, like an /etc/alternative file containing the prefix to use (grub- or grub2-) for commands.
The test plan will be documented, based on the user stories above, at http://testcases.qa.ubuntu.com/Plans/KarmicBootExperience
- Should the OS switcher be available only when X is available? ie rely on X11, or should it also work in framebuffer mode?