Ack.. it was a long read, but looks good. -- Martin Sivák msivak@xxxxxxxxxx Red Hat Czech Anaconda team / Brno, CZ ----- "Hans de Goede" <hdegoede@xxxxxxxxxx> wrote: > --- > bootloader.py | 17 +++++++++-------- > booty/x86.py | 32 +++++++++++++++++--------------- > 2 files changed, 26 insertions(+), 23 deletions(-) > > diff --git a/bootloader.py b/bootloader.py > index 30912e7..83ef5d3 100644 > --- a/bootloader.py > +++ b/bootloader.py > @@ -125,9 +125,10 @@ def fixedMdraidGrubTarget(anaconda, grubTarget): > try: > if float(version) < 12: > stage1Devs = > anaconda.bootloader.getPhysicalDevices(grubTarget) > - fixedGrubTarget = getDiskPart(stage1Devs[0], > anaconda.storage)[0] > - log.info("Mdraid grub upgrade: %s -> %s" % (grubTarget, > - > fixedGrubTarget)) > + disk = getDiskPart(stage1Devs[0].name, > anaconda.storage)[0] > + fixedGrubTarget = > anaconda.storage.devicetree.getDeviceByName(disk) > + log.info("Mdraid grub upgrade: %s -> %s" % > (grubTarget.name, > + > fixedGrubTarget.name)) > except ValueError: > log.warning("Can't decide mdraid grub upgrade fix, product: > %s, version: %s" % (product, version)) > > @@ -147,13 +148,13 @@ def writeBootloader(anaconda): > > anaconda.bootloader.doUpgradeonly = 1 > if bootType == "GRUB": > - if theDev.startswith('/dev/md'): > - theDev = fixedMdraidGrubTarget(anaconda, > - > devicePathToName(theDev)) > + grubTarget = > anaconda.storage.devicetree.getDeviceByPath(theDev) > + if grubTarget.type == "mdarray": > + grubTarget = fixedMdraidGrubTarget(anaconda, > grubTarget) > anaconda.bootloader.useGrubVal = 1 > - anaconda.bootloader.setDevice(devicePathToName(theDev)) > + anaconda.bootloader.setDevice(grubTarget.name) > else: > - anaconda.bootloader.doUpgradeOnly = 0 > + anaconda.bootloader.doUpgradeOnly = 0 > > w = anaconda.intf.waitWindow(_("Bootloader"), _("Installing > bootloader.")) > > diff --git a/booty/x86.py b/booty/x86.py > index 3544736..9c176d0 100644 > --- a/booty/x86.py > +++ b/booty/x86.py > @@ -41,12 +41,11 @@ class x86BootloaderInfo(efiBootloaderInfo): > def setUseGrub(self, val): > self.useGrubVal = val > > - def getPhysicalDevices(self, device): > + def getPhysicalDevices(self, dev): > # This finds a list of devices on which the given device name > resides. > # Accepted values for "device" are raid1 md devices (i.e. > "md0"), > # physical disks ("hda"), and real partitions on physical > disks > # ("hda1"). Anything else gets ignored. > - dev = self.storage.devicetree.getDeviceByName(device) > if dev.type == "mdarray": > if dev.level != 1: > log.error("x86BootloaderInfo.getPhysicalDevices > ignoring non " > @@ -59,7 +58,7 @@ class x86BootloaderInfo(efiBootloaderInfo): > physicalDevices = [] > for dev in devs: > if dev in self.storage.disks or dev.type == "partition": > - physicalDevices.append(dev.name) > + physicalDevices.append(dev) > else: > log.error("x86BootloaderInfo.getPhysicalDevices > ignoring %s" % > dev.name) > @@ -127,16 +126,18 @@ class x86BootloaderInfo(efiBootloaderInfo): > > args = "--stage2=/boot/grub/stage2 " > > - stage1Devs = self.getPhysicalDevices(grubTarget) > - bootDevs = self.getPhysicalDevices(bootDev.name) > + stage1Devs = self.getPhysicalDevices( > + > self.storage.devicetree.getDeviceByName(grubTarget)) > + bootDevs = self.getPhysicalDevices(bootDev) > > installs = [(None, > - self.grubbyPartitionName(stage1Devs[0]), > - self.grubbyPartitionName(bootDevs[0]))] > + self.grubbyPartitionName(stage1Devs[0].name), > + self.grubbyPartitionName(bootDevs[0].name))] > > if bootDev.type == "mdarray": > > - matches = self.matchingBootTargets(stage1Devs, bootDevs) > + matches = self.matchingBootTargets([d.name for d in > stage1Devs], > + [d.name for d in > bootDevs]) > > # If the stage1 target disk contains member of boot raid > array (mbr > # case) or stage1 target partition is member of boot raid > array > @@ -161,7 +162,7 @@ class x86BootloaderInfo(efiBootloaderInfo): > > # if target is mbr, we want to install also to mbr of > other > # members, so extend the matching list > - matches = self.addMemberMbrs(matches, bootDevs) > + matches = self.addMemberMbrs(matches, [d.name for d > in bootDevs]) > for stage1Target, mdMemberBootPart in matches[1:]: > # prepare special device mapping corresponding to > member removal > mdMemberBootDisk = getDiskPart(mdMemberBootPart, > self.storage)[0] > @@ -225,8 +226,9 @@ class x86BootloaderInfo(efiBootloaderInfo): > > # keep track of which devices are used for the device.map > usedDevs = set() > - usedDevs.update(self.getPhysicalDevices(grubTarget)) > - usedDevs.update(self.getPhysicalDevices(bootDev.name)) > + usedDevs.update([d.name for d in self.getPhysicalDevices( > + > self.storage.devicetree.getDeviceByName(grubTarget))]) > + usedDevs.update([d.name for d in > self.getPhysicalDevices(bootDev)]) > usedDevs.update([dev for (label, longlabel, dev) in chainList > if longlabel]) > > if not upgrade: > @@ -238,7 +240,7 @@ class x86BootloaderInfo(efiBootloaderInfo): > def writeGrubConf(self, instRoot, bootDev, rootDev, defaultDev, > kernelList, > chainList, grubTarget, grubPath, cfPath): > > - bootDevs = self.getPhysicalDevices(bootDev.name) > + bootDevs = self.getPhysicalDevices(bootDev) > > # XXX old config file should be read here for upgrade > > @@ -266,7 +268,7 @@ class x86BootloaderInfo(efiBootloaderInfo): > f.write("# all kernel and initrd paths are > relative " > "to /, eg.\n") > > - f.write('# root %s\n' % > self.grubbyPartitionName(bootDevs[0])) > + f.write('# root %s\n' % > self.grubbyPartitionName(bootDevs[0].name)) > f.write("# kernel %svmlinuz-version ro root=%s\n" % > (cfPath, rootDev.path)) > f.write("# initrd %sinitrd-[generic-]version.img\n" > % (cfPath)) > f.write("#boot=/dev/%s\n" % (grubTarget)) > @@ -309,7 +311,7 @@ class x86BootloaderInfo(efiBootloaderInfo): > # we only want splashimage if they're not using a serial > console > if os.access("%s/boot/grub/splash.xpm.gz" %(instRoot,), > os.R_OK): > f.write('splashimage=%s%sgrub/splash.xpm.gz\n' > - % (self.grubbyPartitionName(bootDevs[0]), > cfPath)) > + % > (self.grubbyPartitionName(bootDevs[0].name), cfPath)) > f.write("hiddenmenu\n") > > > @@ -323,7 +325,7 @@ class x86BootloaderInfo(efiBootloaderInfo): > initrd = self.makeInitrd(kernelTag, instRoot) > > f.write('title %s (%s)\n' % (longlabel, version)) > - f.write('\troot %s\n' % > self.grubbyPartitionName(bootDevs[0])) > + f.write('\troot %s\n' % > self.grubbyPartitionName(bootDevs[0].name)) > > realroot = " root=%s" % rootDev.fstabSpec > > -- > 1.7.0.1 > > _______________________________________________ > Anaconda-devel-list mailing list > Anaconda-devel-list@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/anaconda-devel-list _______________________________________________ Anaconda-devel-list mailing list Anaconda-devel-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/anaconda-devel-list