[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: Anaconda upgrades and bootloader options



Maybe staring at the code will be helpful (but I doubt it, our
bootloader code is not our finest hour).

Bootloader config in anaconda involves three distinct dispatcher steps:

(1) bootloadersetup.  This sets the list of which drives should be
considered for installing a bootloader to, picks the preferred one, and
looks for EFI system partitions.  This step is non-interactive.

(2) bootloader.  This displays the screen shown at
http://docs.fedoraproject.org/en-US/Fedora/13/html/Installation_Guide/s1-x86-bootloader.html
and sets variables all over the place based on the UI elements.  Most
importantly for this discussion, it controls setting which OS options
you'll have in the bootloader menu.  It does not, however, write any
changes to disk.

(3) instbootloader.  Given all the previous settings, this writes
grub.conf and device.map, and runs grub.  Or whatever's appropriate for
the platform.  This step is non-interactive.  It is also impossible to
follow.

You need to know those three steps to understand exactly what is
supposed to happen for each of the three bootloader upgrade options.

>      1. Create new boot loader configuration
>               * I believe this is understand, it installs a new grub
>                 stage#1 into the MBR (or partition).  
>               * In the days of lilo and grub, perhaps this offered a
>                 choice of bootloaders?

            self.dispatch.skipStep("bootloadersetup", skip = 0)
            self.dispatch.skipStep("bootloader", skip = 0)
            self.dispatch.skipStep("instbootloader", skip = 0)
            self.bl.doUpgradeOnly = 0

So, this option will create a completely new grub.conf file and run grub
to install itself to wherever you say (mbr, partition, etc).  Whatever
the kernel's %post script does will have happened before we hit the
instbootloader step.

>      2. Update boot loader configuration
>               * does not run grub-install
>               * When the kernel package is upgraded, it will call
>                 'new-kernel-pkg' from it's %scripts and this eventually
>                 updates the existing bootloader configuration file (e.g.
>                 grub.conf, yaboot.conf, elilo.conf, zipl.conf).

            self.dispatch.skipStep("bootloadersetup", skip = 0)
            self.dispatch.skipStep("bootloader", skip = 1)
            self.dispatch.skipStep("instbootloader", skip = 0)
            self.bl.doUpgradeOnly = 1

This option will cause no changes to be written to grub.conf, but
grub-install will still be run.  Whatever the kernel's %post script does
will have happened before we hit the instbootloader step.

>      3. Skip boot loader updating
>               * does not run grub-install
>               * When the kernel package is upgraded, it will call
>                 'new-kernel-pkg' from it's %scripts and this eventually
>                 updates the existing bootloader configuration file (e.g.
>                 grub.conf, yaboot.conf, elilo.conf, zipl.conf).

            self.dispatch.skipStep("bootloadersetup", skip = 1)
            self.dispatch.skipStep("bootloader", skip = 1)
            self.dispatch.skipStep("instbootloader", skip = 1)

This option will cause anaconda to not do anything involving the
bootloader at all.  Whatever the kernel's %post script does will still
happen, though.

Does that shed any light on the subject?  Are these three options at all
worth keeping?

- Chris


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]