Anaconda/Features/Grub2Migration

= Migration to latest upstream grub boot loader =

Summary
Investigation possibility of migrating to latest upstream grub boot loader ("grub2"). Development of the 0.97 branch is dead upstream and we carry a lot of patches on our own. The grub 1.9x branch is under active development, even supporting non-x86 platforms. If we can move to the latest upstream grub, we stand the chance of eliminating the need for separate boot loaders for each platform.

Owner

 * Name: Peter Jones

Current status

 * Targeted release: TBD
 * Last updated: 2011-01-13
 * Percentage of completion: 0%

Detailed Description
Upstream GNU grub development is focused on the 1.9x branch. We currently use the 0.97 branch plus a lot of patches we have been carrying in our package for a long time. With a live upstream and a desire to make grub work on all platforms now makes the latest upstream GNU grub more appealing than in the past. Migration to the new grub should be based on primary supported architectures, but we should also ensure the secondary architectures are supported or have support in the works. Major tasks:


 * Package grub-1.9x and get it in rawhide
 * Patch booty module in anaconda to support new grub
 * Generate test trees with new grub and patched anaconda
 * Perform installation and boot tests on platforms of concern (i386, x86_64, ppc64, ...others supported?)

The booty module needs a moderate overhaul, and migrating to the latest grub seems like as good a time as any to accomplish that.

Developers working on different components of this feature:


 * Dave Lehman - booty and, by extension, necessary changes in pyanaconda
 * Brian Lane - grubby
 * Peter Jones - grub2 package and diffing old grub with grub2 to see if we need any to forward-port any patches

Benefit to Fedora

 * Association with current upstream grub development
 * Consolidation of boot loader code to a single project
 * Removing all of the non-grub boot loader packages (e.g., yaboot)

Scope
Entire distribution, all platforms grub-1.9x works on. Installation should not change much, but users will need to be made aware of how to interact with and configure new grub. Might make some boot loader configuration directives via kickstart obsolete.

Test Plan

 * Get new grub in rawhide, patch anaconda, generate test rawhide trees locally
 * Test installation on i386, x86_64, and ppc64. If other architectures are supported, test those if we can (s390x and ARM are not supported).
 * Successful installation on i386, x86_64, and ppc64 should allow us to keep new grub in the distribution, work with upstream to support other architectures we have installation code for but that grub-1.9x does not yet support
 * Installer Test Items
 * successful post-install boot w/ grub2
 * x86
 * /boot on partition
 * /boot on RAID0, RAID1, RAID4, RAID5, RAID6, RAID10 (partition members only)
 * /boot on LVM LV (partition PVs only)
 * x86/BIOS
 * GPT disklabel with BIOS boot partition
 * x86/EFI
 * /boot/efi on RAID1
 * ppc?
 * ability to specify other OS installations in config
 * linux and non-linux
 * ability to upgrade from grub legacy during OS upgrade
 * upgrade/migrate from other bootloaders?
 * yaboot?
 * user-selected non-fedora default menu entry?
 * user-specified menu entry labels?

User Experience
Users should not see a change during installation, but the grub boot menu and interaction with grub may change. Documentation should be updated across the distribution to alert users to the change.

Contingency Plan
Continue shipping grub-0.97+patches and the other boot loaders for non-x86 platforms.

Documentation
Upstream grub wiki: http://grub.enbug.org/

Release Notes
http://grub.enbug.org/CurrentStatus