KarmicGrub2

Differences between revisions 4 and 5
Revision 4 as of 2009-06-11 15:52:31
Size: 5507
Editor: 82-69-40-219
Comment:
Revision 5 as of 2009-06-15 10:54:52
Size: 5768
Editor: 82-69-40-219
Comment: UI work; testing
Deletions are marked like this. Additions are marked like this.
Line 44: Line 44:
{{{
* Modifying the default boot options (e.g. default OS to boot and timeouts) once booted to change bootup next time around:
=== UI work ===
Line 47: Line 46:
  legacy grub has grub-reboot and grub-set-default to change boot. Can this be achieved in grub2? grub2 seems to
  provide ability to do this but had different commands to do this.
On systems with multiple operating systems installed, we would like to be able to offer a convenient desktop interface (e.g. via the "Restart..." menu item) to determine which OS will be started at the next boot. GRUB Legacy had `grub-reboot` and `grub-set-default` which could be used for this: `grub-reboot` made a single-shot change, while `grub-set-default` made a permanent change. While GRUB 2 does not quite have this packaged as neatly yet, the primitives are in place (`grub-editenv`, etc.) and it is expected to be simple to put them together. The upstream developers would be interested in integrating this if we beat them to it.
Line 50: Line 48:
  e.g. for reboot - show menu, for failed kernels '''FIXME: DX team to add exact requirements here'''
Line 52: Line 50:
  grub-reboot
    - for single shot mode - do once, go back to default mode thereafter
  grub-set-default
    - e.g. for last good boot
By default, we will hide the GRUB menu, but need to make it possible to access it when required by holding down a key. We need to make sure that the key involved is distinct from that used to instruct usplash to show detailed boot output, and also distinct from typical keys used to access firmware setup.
Line 57: Line 52:
  Robert Millan says the primitives are there, and we just need to implement a couple of simple scripts. (Upstream are interested.)  * GRUB Legacy: timeout, interrupted by holding Escape
 * PC BIOSes: typical keys include Shift, Delete, and F12, but this is usually accompanied by a message such as "Press Shift to enter CMOS Setup" which disappears before the BIOS is finished, so it is not so important to avoid clashes with this
 * Apple Mac: Alt (Option) accesses built-in firmware boot menu; no visual indication of when this should be pressed
 * usplash: not implemented yet, so whatever we like
Line 59: Line 57:
* Boot key
  user holds key - e.g. press shift shows menu, otherwise just continue boot process
  Make sure we use different key in grub2 from that in usplash:
    grub 1 - timeout and escape
    grub 2 - shift, alt, control, (should not use alt, Apple Macs)
          make sure grub2 uses shift to get into grub2 menu
    usplash - use a different key

* Older Hardware:

 - grub2 - test on Certification Farm
 - Xubuntu - ask community to test as they probably have more legacy Hardware
 - Debian (expected to move to GRUB 2 for Squeeze)
 - get community to test https://wiki.ubuntu.com/KernelTeam/Grub2Testing
}}}
Consensus appears to be to use Shift to access the GRUB 2 menu.
Line 111: Line 95:
It's important that we are able to test new features, and demonstrate them to users. Use this section to describe a short plan that anybody can follow that demonstrates the feature is working. This can then be used during testing, and to show off after release. Please add an entry to http://testcases.qa.ubuntu.com/Coverage/NewFeatures for tracking test coverage. Significant testing on reasonably recent hardware has [[KernelTeam/Grub2Testing|already been performed]], but testing on older hardware will be important. Some ideas for this include:
Line 113: Line 97:
This need not be added or completed until the specification is nearing beta.  - Canonical's hardware certification farm
 - Xubuntu community may well have more legacy hardware
 - close coordination with Debian (expected to move to GRUB 2 for Squeeze)
 - further promulgation of [[KernelTeam/Grub2Testing]]

Summary

Move to GRUB 2 as the default boot loader.

Release Note

This section should include a paragraph describing the end-user impact of this change. It is meant to be included in the release notes of the first release in which it is implemented. (Not all of these will actually be included in the release notes, at the release manager's discretion; but writing them is a useful exercise.)

It is mandatory.

Rationale

This should cover the _why_: why is this change being proposed, what justifies it, where we see this justified.

User stories

Assumptions

Design

By and large, GRUB 2 appears to be in a reasonably good state now, after a long period when we were unable to seriously contemplate a switch. There are some things to fix, of course, but for the most part these look tractable. The kernel team did extensive testing, which suggests a strong performance.

Implementation

General issues

There are still some minor issues to fix; Ubuntu branding to the configuration file is not quite right.

LVM: Currently GRUB cannot deal with /boot being on LVM, so we need to use LILO in that case. We will check whether GRUB 2 can deal with /boot on LVM (it definitely has code to deal with LVM, so should be a simple matter of configuration), and if so remove the need to ship LILO on our CD images.

XFS: In the past, GRUB had a race condition installing on XFS. This was fixed in GRUB Legacy; ensure that it's fixed in GRUB 2 as well.

EFI/UEFI: We will check support on Intel-based Macs and on x86 PCs with EFI support. (Supply of hardware for the latter case is still rather limited.)

PowerPC: While it is not required for this specification to be considered implemented, it would be useful for PowerPC porters to look at the existing OpenFirmware support and see if we can switch from yaboot. This will need changes in grub-installer and ubiquity.

UI work

On systems with multiple operating systems installed, we would like to be able to offer a convenient desktop interface (e.g. via the "Restart..." menu item) to determine which OS will be started at the next boot. GRUB Legacy had grub-reboot and grub-set-default which could be used for this: grub-reboot made a single-shot change, while grub-set-default made a permanent change. While GRUB 2 does not quite have this packaged as neatly yet, the primitives are in place (grub-editenv, etc.) and it is expected to be simple to put them together. The upstream developers would be interested in integrating this if we beat them to it.

FIXME: DX team to add exact requirements here

By default, we will hide the GRUB menu, but need to make it possible to access it when required by holding down a key. We need to make sure that the key involved is distinct from that used to instruct usplash to show detailed boot output, and also distinct from typical keys used to access firmware setup.

  • GRUB Legacy: timeout, interrupted by holding Escape
  • PC BIOSes: typical keys include Shift, Delete, and F12, but this is usually accompanied by a message such as "Press Shift to enter CMOS Setup" which disappears before the BIOS is finished, so it is not so important to avoid clashes with this
  • Apple Mac: Alt (Option) accesses built-in firmware boot menu; no visual indication of when this should be pressed
  • usplash: not implemented yet, so whatever we like

Consensus appears to be to use Shift to access the GRUB 2 menu.

Migration

* grub1 -> grub2 upgrade

 Go for chainloading grub2 in the upgrade
 Grub 2 for new installation
 Karmic +1 to drop grub 1?

 Make update-grub only update grub2 

 Do automatic change to grub 2:

   - detect chainloaded from grub 1
   - then install grub 2 
        change menu.lst in grub 1 - with zero timeout and chainload grub2
        Robert Millan points to http://grub.enbug.org/Hiddenmenu to implement behaviour similar to what we used in GRUB 1.

    leave stage1.5 (don't scrub it)
    - grub loads grub stage 1.5 (in 32K between MBR and first partition if installed in MBR, or in the boot sector of the partition if installed in a partition)
    - then loads grub stage 2 from fs
    - then chainloads grub2 (2nd stage)

    Note: do not remove grub stage1.5 + stage2

   - device map (hdX,Y) may not 100% correct on some systems

  * purge process of grub1 removes menu.lst - this is an issue that needs fixing.
   - dependency issues:
     make sure postrm is removed from grub
     grub-pc replaces grub
     use breaks to stop clobbering of menu.lst on purge

Test/Demo Plan

Significant testing on reasonably recent hardware has already been performed, but testing on older hardware will be important. Some ideas for this include:

  • - Canonical's hardware certification farm - Xubuntu community may well have more legacy hardware - close coordination with Debian (expected to move to GRUB 2 for Squeeze)

    - further promulgation of KernelTeam/Grub2Testing

Unresolved issues

This should highlight any issues that should be addressed in further specifications, and not problems with the specification itself; since any specification with problems cannot be approved.

See also

Previous (misnamed) specification in this series: FoundationsTeam/Specs/Grub2ByDefault

Kernel team testing page


CategorySpec

FoundationsTeam/Specs/KarmicGrub2 (last edited 2009-09-04 18:13:16 by 82-69-40-219)