On 10/19/2009 11:54 AM, Radek Vykydal wrote: > Up to F11 /dev/mdX in /etc/sysconfig/grub means that grub was installed into > mbrs of all /boot md device members' disks. When upgrading grub of such a > system, reinstall grub in the mbrs, and update values sysconfig file > accordingly (to hold e.g. /dev/sda). Here I'm not completly sure. What if after > installation the user reinstalled grub manually - restored mbrs and installed > it in /dev/mdX? He wouldn't be happy with our grub update then... This seems okay to me. If the user is smart enough to be fixing things manually, they should be fixing them right ;). Also, Why would a user do this? It's not like there are BIOSes that understand linux's raid format and boot it. > > This is one of follow-up commits for commit > 358a9a34f496fdd2b032edf12274a146b606d1a4, dealing with upgrade. > --- > bootloader.py | 21 +++++++++++++++++++++ > 1 files changed, 21 insertions(+), 0 deletions(-) > > diff --git a/bootloader.py b/bootloader.py > index 54a37b5..729fe2c 100644 > --- a/bootloader.py > +++ b/bootloader.py > @@ -29,6 +29,8 @@ import string > from flags import flags > from constants import * > from storage.devices import devicePathToName > +from storage import getReleaseString > +from booty.util import getDiskPart > > import gettext > _ = lambda x: gettext.ldgettext("anaconda", x) > @@ -115,6 +117,22 @@ def bootloaderSetupChoices(anaconda): > elif choices and choices.has_key("boot"): > anaconda.id.bootloader.setDevice(choices["boot"][0]) > > +def fixedMdraidGrubTarget(anaconda, grubTarget): > + # handle change made in F12 - before F12 mdX used to mean installation > + # into mbrs of mdX members' disks > + fixedGrubTarget = grubTarget > + (product, version) = getReleaseString(anaconda.rootPath) > + try: > + if float(version) < 12: > + stage1Devs = anaconda.id.bootloader.getPhysicalDevices(grubTarget) > + fixedGrubTarget = getDiskPart(stage1Devs[0], anaconda.id.storage)[0] > + log.info("Mdraid grub upgrade: %s -> %s" % (grubTarget, > + fixedGrubTarget)) > + except ValueError: > + log.warning("Can't decide mdraid grub upgrade fix, product: %s, version: %s" % (product, version)) > + > + return fixedGrubTarget > + > def writeBootloader(anaconda): > def dosync(): > isys.sync() > @@ -131,6 +149,9 @@ def writeBootloader(anaconda): > > anaconda.id.bootloader.doUpgradeonly = 1 > if bootType == "GRUB": > + if theDev.startswith('/dev/md'): > + theDev = fixedMdraidGrubTarget(anaconda, > + devicePathToName(theDev)) > anaconda.id.bootloader.useGrubVal = 1 > anaconda.id.bootloader.setDevice(devicePathToName(theDev)) > else: -- Peter I hope you know that this will go down on your permanent record. _______________________________________________ Anaconda-devel-list mailing list Anaconda-devel-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/anaconda-devel-list