def getSelected(self): selection = self.osTreeView.get_selection() (model, iter) = selection.get_selected() if not iter: return None dev = devicePathToName(model.get_value(iter, 2)) label = model.get_value(iter, 1) isRoot = model.get_value(iter, 3) isDefault = model.get_value(iter, 0) return (dev, label, isDefault, isRoot)
def getNext(self): if self.nobl_radio.get_active(): self.dispatch.skipStep("bootloadersetup", skip=1) self.dispatch.skipStep("bootloader", skip=1) self.dispatch.skipStep("bootloaderadvanced", skip=1) self.dispatch.skipStep("instbootloader", skip=1) elif self.newbl_radio.get_active(): self.dispatch.skipStep("bootloadersetup", skip=0) self.dispatch.skipStep("bootloader", skip=0) self.dispatch.skipStep("bootloaderadvanced", skip=0) self.dispatch.skipStep("instbootloader", skip=0) self.bl.doUpgradeOnly = 0 else: self.dispatch.skipStep("bootloadersetup", skip=0) self.dispatch.skipStep("bootloader", skip=1) self.dispatch.skipStep("bootloaderadvanced", skip=1) self.dispatch.skipStep("instbootloader", skip=0) self.bl.doUpgradeOnly = 1 if self.type == "GRUB": self.bl.useGrubVal = 1 else: self.bl.useGrubVal = 0 self.bl.setDevice(devicePathToName(self.bootDev))
def getNext(self): if self.nobl_radio.get_active(): self.dispatch.skipStep("bootloadersetup", skip = 1) self.dispatch.skipStep("bootloader", skip = 1) self.dispatch.skipStep("bootloaderadvanced", skip = 1) self.dispatch.skipStep("instbootloader", skip = 1) elif self.newbl_radio.get_active(): self.dispatch.skipStep("bootloadersetup", skip = 0) self.dispatch.skipStep("bootloader", skip = 0) self.dispatch.skipStep("bootloaderadvanced", skip = 0) self.dispatch.skipStep("instbootloader", skip = 0) self.bl.doUpgradeOnly = 0 else: self.dispatch.skipStep("bootloadersetup", skip = 0) self.dispatch.skipStep("bootloader", skip = 1) self.dispatch.skipStep("bootloaderadvanced", skip = 1) self.dispatch.skipStep("instbootloader", skip = 0) self.bl.doUpgradeOnly = 1 if self.type == "GRUB": self.bl.useGrubVal = 1 else: self.bl.useGrubVal = 0 self.bl.setDevice(devicePathToName(self.bootDev))
def toggledDefault(self, data, row): iter = self.osStore.get_iter((int(row),)) dev = self.osStore.get_value(iter, 2) self.defaultDev = devicePathToName(dev) self.fillOSList()
def writeBootloader(anaconda): def dosync(): isys.sync() isys.sync() isys.sync() if anaconda.bootloader.defaultDevice == -1: return if anaconda.bootloader.doUpgradeOnly: (bootType, theDev) = checkbootloader.getBootloaderTypeAndBoot(anaconda.rootPath, storage=anaconda.storage) anaconda.bootloader.doUpgradeonly = 1 if bootType == "GRUB": if theDev.startswith('/dev/md'): theDev = fixedMdraidGrubTarget(anaconda, devicePathToName(theDev)) anaconda.bootloader.useGrubVal = 1 anaconda.bootloader.setDevice(devicePathToName(theDev)) else: anaconda.bootloader.doUpgradeOnly = 0 w = anaconda.intf.waitWindow(_("Bootloader"), _("Installing bootloader.")) kernelList = [] otherList = [] # getDefault needs to return a device, but that's too invasive for now. rootDev = anaconda.storage.rootDevice if not anaconda.bootloader.images.getDefault(): defaultDev = None else: defaultDev = anaconda.storage.devicetree.getDeviceByName(anaconda.bootloader.images.getDefault()) kernelLabel = None kernelLongLabel = None for (dev, (label, longlabel, type)) in anaconda.bootloader.images.getImages().items(): if (rootDev is None and kernelLabel is None) or (dev == rootDev.name): kernelLabel = label kernelLongLabel = longlabel elif (not defaultDev and not dev) or (defaultDev and dev == defaultDev.name): otherList = [(label, longlabel, dev)] + otherList else: otherList.append((label, longlabel, dev)) if kernelLabel is None: log.error("unable to find default image, bailing") w.pop() return plainLabelUsed = 0 defkern = "kernel" for (version, arch, nick) in \ anaconda.backend.kernelVersionList(anaconda.rootPath): if plainLabelUsed: kernelList.append(("%s-%s" %(kernelLabel, nick), "%s-%s" %(kernelLongLabel, nick), version)) else: kernelList.append((kernelLabel, kernelLongLabel, version)) if nick != "base": defkern = "kernel-%s" %(nick,) plainLabelUsed = 1 f = open(anaconda.rootPath + "/etc/sysconfig/kernel", "w+") f.write("# UPDATEDEFAULT specifies if new-kernel-pkg should make\n" "# new kernels the default\n") # only update the default if we're setting the default to linux (#156678) if (not defaultDev and not rootDev) or (defaultDev and rootDev.name == defaultDev.name): f.write("UPDATEDEFAULT=yes\n") else: f.write("UPDATEDEFAULT=no\n") f.write("\n") f.write("# DEFAULTKERNEL specifies the default kernel package type\n") f.write("DEFAULTKERNEL=%s\n" %(defkern,)) f.close() dosync() try: rc = anaconda.bootloader.write(anaconda.rootPath, anaconda.bootloader, kernelList, otherList, defaultDev) w.pop() if rc and anaconda.intf: anaconda.intf.messageWindow(_("Warning"), _("There was an error installing the bootloader. " "The system may not be bootable.")) except booty.BootyNoKernelWarning: w.pop() if anaconda.intf: anaconda.intf.messageWindow(_("Warning"), _("No kernel packages were installed on the " "system. Bootloader configuration " "will not be changed.")) dosync()
def __call__(self, screen, anaconda): self.screen = screen self.dispatch = anaconda.dispatch self.bl = anaconda.id.bootloader newToLibata = self._ideToLibata(anaconda.rootPath) (self.type, self.bootDev) = \ checkbootloader.getBootloaderTypeAndBoot(anaconda.rootPath, storage=anaconda.id.storage) blradio = RadioGroup() (update, nobl) = (0, 0) if self.dispatch.stepInSkipList("instbootloader"): nobl = 1 elif not (newToLibata or self.type is None or self.bootDev is None): update = 1 if newToLibata or self.type is None or self.bootDev is None: if newToLibata: t = TextboxReflowed(53, _("Due to system changes, your boot loader " "configuration can not be automatically updated.")) else: t = TextboxReflowed(53, _("The installer is unable to detect the boot loader " "currently in use on your system.")) self.update_radio = blradio.add(_("Update boot loader configuration"), "update", update) self.update_radio.w.checkboxSetFlags(FLAG_DISABLED, FLAGS_SET) nobl = 1 else: t = TextboxReflowed(53, _("The installer has detected the %(type)s " "boot loader currently installed on " "%(bootDev)s.") % {'type': self.type, 'bootDev': self.bootDev}) self.update_radio = blradio.add(_("Update boot loader configuration"), "update", update) self.nobl_radio = blradio.add(_("Skip boot loader updating"), "nobl", nobl) buttons = ButtonBar(screen, [TEXT_OK_BUTTON, TEXT_BACK_BUTTON]) grid = GridFormHelp(screen, _("Upgrade Boot Loader Configuration"), "bl-upgrade", 1, 5) grid.add(t, 0, 0, (0,0,0,1)) grid.add(self.update_radio, 0, 1, (0,0,0,0)) grid.add(self.nobl_radio, 0, 2, (0,0,0,0)) grid.add(buttons, 0, 3, growx = 1) while 1: result = grid.run() button = buttons.buttonPressed(result) if button == TEXT_BACK_CHECK: screen.popWindow() return INSTALL_BACK if blradio.getSelection() == "nobl": self.dispatch.skipStep("bootloadersetup", skip = 1) self.dispatch.skipStep("bootloader", skip = 1) self.dispatch.skipStep("bootloaderadvanced", skip = 1) self.dispatch.skipStep("instbootloader", skip = 1) else: self.dispatch.skipStep("bootloadersetup", skip = 0) self.dispatch.skipStep("bootloader", skip = 1) self.dispatch.skipStep("bootloaderadvanced", skip = 1) self.dispatch.skipStep("instbootloader", skip = 0) self.bl.doUpgradeOnly = 1 if self.type == "GRUB": self.bl.useGrubVal = 1 else: self.bl.useGrubVal = 0 self.bl.setDevice(devicePathToName(self.bootDev)) screen.popWindow() return INSTALL_OK
def __call__(self, screen, anaconda): self.screen = screen self.dispatch = anaconda.dispatch self.bl = anaconda.id.bootloader newToLibata = self._ideToLibata(anaconda.rootPath) (self.type, self.bootDev) = \ checkbootloader.getBootloaderTypeAndBoot(anaconda.rootPath, storage=anaconda.id.storage) blradio = RadioGroup() (update, nobl) = (0, 0) if self.dispatch.stepInSkipList("instbootloader"): nobl = 1 elif not (newToLibata or self.type is None or self.bootDev is None): update = 1 if newToLibata or self.type is None or self.bootDev is None: if newToLibata: t = TextboxReflowed( 53, _("Due to system changes, your boot loader " "configuration can not be automatically updated.")) else: t = TextboxReflowed( 53, _("The installer is unable to detect the boot loader " "currently in use on your system.")) self.update_radio = blradio.add( _("Update boot loader configuration"), "update", update) self.update_radio.w.checkboxSetFlags(FLAG_DISABLED, FLAGS_SET) nobl = 1 else: t = TextboxReflowed( 53, _("The installer has detected the %(type)s " "boot loader currently installed on " "%(bootDev)s.") % { 'type': self.type, 'bootDev': self.bootDev }) self.update_radio = blradio.add( _("Update boot loader configuration"), "update", update) self.nobl_radio = blradio.add(_("Skip boot loader updating"), "nobl", nobl) buttons = ButtonBar(screen, [TEXT_OK_BUTTON, TEXT_BACK_BUTTON]) grid = GridFormHelp(screen, _("Upgrade Boot Loader Configuration"), "bl-upgrade", 1, 5) grid.add(t, 0, 0, (0, 0, 0, 1)) grid.add(self.update_radio, 0, 1, (0, 0, 0, 0)) grid.add(self.nobl_radio, 0, 2, (0, 0, 0, 0)) grid.add(buttons, 0, 3, growx=1) while 1: result = grid.run() button = buttons.buttonPressed(result) if button == TEXT_BACK_CHECK: screen.popWindow() return INSTALL_BACK if blradio.getSelection() == "nobl": self.dispatch.skipStep("bootloadersetup", skip=1) self.dispatch.skipStep("bootloader", skip=1) self.dispatch.skipStep("bootloaderadvanced", skip=1) self.dispatch.skipStep("instbootloader", skip=1) else: self.dispatch.skipStep("bootloadersetup", skip=0) self.dispatch.skipStep("bootloader", skip=1) self.dispatch.skipStep("bootloaderadvanced", skip=1) self.dispatch.skipStep("instbootloader", skip=0) self.bl.doUpgradeOnly = 1 if self.type == "GRUB": self.bl.useGrubVal = 1 else: self.bl.useGrubVal = 0 self.bl.setDevice(devicePathToName(self.bootDev)) screen.popWindow() return INSTALL_OK
def toggledDefault(self, data, row): iter = self.osStore.get_iter((int(row), )) dev = self.osStore.get_value(iter, 2) self.defaultDev = devicePathToName(dev) self.fillOSList()
def writeBootloader(anaconda): def dosync(): isys.sync() isys.sync() isys.sync() if anaconda.id.bootloader.defaultDevice == -1: return # Append extra bootloader args that the install class provides, but do not # append them if they duplicate ones already there. So, args provided by # the bootloader kickstart command take precedence over internal ones. for extraArg in anaconda.id.instClass.bootloaderExtraArgs: if '=' in extraArg: extra = extraArg.split('=')[0] else: extra = extraArg # We have to do it this way to catch both standalone arguments and # those that take a value. found = False for arg in anaconda.id.bootloader.args.appendArgs: if extra == arg or arg.startswith(extra+"="): found = True break if not found: anaconda.id.bootloader.args.append(extraArg) if anaconda.id.bootloader.doUpgradeOnly: (bootType, theDev) = checkbootloader.getBootloaderTypeAndBoot(anaconda.rootPath, storage=anaconda.id.storage) 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: anaconda.id.bootloader.doUpgradeOnly = 0 """w = anaconda.intf.waitWindow(_("Bootloader"), _("Installing bootloader."))""" w = anaconda.intf.waitWindow(_("Bootloader"), _(u"正在装载引导程序...")) kernelList = [] otherList = [] # getDefault needs to return a device, but that's too invasive for now. rootDev = anaconda.id.storage.rootDevice if not anaconda.id.bootloader.images.getDefault(): defaultDev = None else: defaultDev = anaconda.id.storage.devicetree.getDeviceByName(anaconda.id.bootloader.images.getDefault()) kernelLabel = None kernelLongLabel = None for (dev, (label, longlabel, type)) in anaconda.id.bootloader.images.getImages().items(): if (rootDev is None and kernelLabel is None) or (dev == rootDev.name): kernelLabel = label kernelLongLabel = longlabel elif (not defaultDev and not dev) or (defaultDev and dev == defaultDev.name): otherList = [(label, longlabel, dev)] + otherList else: otherList.append((label, longlabel, dev)) if kernelLabel is None: log.error("unable to find default image, bailing") w.pop() return defkern = "kernel" for (version, arch, nick) in \ anaconda.backend.kernelVersionList(anaconda.rootPath): if nick != 'base': defkern = "kernel-%s" %(nick,) kernelList.append(("%s-%s" %(kernelLabel, nick), "%s-%s" %(kernelLongLabel, nick), version)) else: kernelList.append((kernelLabel, kernelLongLabel, version)) f = open(anaconda.rootPath + "/etc/sysconfig/kernel", "w+") f.write("# UPDATEDEFAULT specifies if new-kernel-pkg should make\n" "# new kernels the default\n") # only update the default if we're setting the default to linux (#156678) if (not defaultDev and not rootDev) or (defaultDev and rootDev.name == defaultDev.name): f.write("UPDATEDEFAULT=yes\n") else: f.write("UPDATEDEFAULT=no\n") f.write("\n") f.write("# DEFAULTKERNEL specifies the default kernel package type\n") f.write("DEFAULTKERNEL=%s\n" %(defkern,)) f.close() dosync() try: rc = anaconda.id.bootloader.write(anaconda.rootPath, anaconda.id.bootloader, kernelList, otherList, defaultDev) w.pop() if rc and anaconda.intf: anaconda.intf.messageWindow(_("Warning"), _("There was an error installing the bootloader. " "The system may not be bootable.")) except booty.BootyNoKernelWarning: w.pop() if anaconda.intf: anaconda.intf.messageWindow(_("Warning"), _("No kernel packages were installed on the " "system. Bootloader configuration " "will not be changed.")) dosync()
def writeBootloader(anaconda): def dosync(): isys.sync() isys.sync() isys.sync() if anaconda.id.bootloader.defaultDevice == -1: return # Append extra bootloader args that the install class provides, but do not # append them if they duplicate ones already there. So, args provided by # the bootloader kickstart command take precedence over internal ones. for extraArg in anaconda.id.instClass.bootloaderExtraArgs: if '=' in extraArg: extra = extraArg.split('=')[0] else: extra = extraArg # We have to do it this way to catch both standalone arguments and # those that take a value. found = False for arg in anaconda.id.bootloader.args.appendArgs: if extra == arg or arg.startswith(extra + "="): found = True break if not found: anaconda.id.bootloader.args.append(extraArg) if anaconda.id.bootloader.doUpgradeOnly: (bootType, theDev) = checkbootloader.getBootloaderTypeAndBoot( anaconda.rootPath, storage=anaconda.id.storage) if bootType == "GRUB": if theDev.startswith('/dev/md'): theDev = fixedMdraidGrubTarget(anaconda, devicePathToName(theDev)) anaconda.id.bootloader.useGrubVal = 1 anaconda.id.bootloader.setDevice(devicePathToName(theDev)) elif bootType == "ZIPL": anaconda.id.bootloader.images.setup(anaconda.id.storage) else: anaconda.id.bootloader.doUpgradeOnly = 0 anaconda.id.bootloader.images.setup(anaconda.id.storage) w = anaconda.intf.waitWindow(_("Bootloader"), _("Installing bootloader.")) kernelList = [] otherList = [] # getDefault needs to return a device, but that's too invasive for now. rootDev = anaconda.id.storage.rootDevice if not anaconda.id.bootloader.images.getDefault(): defaultDev = None else: defaultDev = anaconda.id.storage.devicetree.getDeviceByName( anaconda.id.bootloader.images.getDefault()) kernelLabel = None kernelLongLabel = None for (dev, (label, longlabel, type)) in anaconda.id.bootloader.images.getImages().items(): if (rootDev is None and kernelLabel is None) or (dev == rootDev.name): kernelLabel = label kernelLongLabel = longlabel elif (not defaultDev and not dev) or (defaultDev and dev == defaultDev.name): otherList = [(label, longlabel, dev)] + otherList else: otherList.append((label, longlabel, dev)) if kernelLabel is None: log.error("unable to find default image, bailing") w.pop() return defkern = "kernel" for (version, arch, nick) in \ anaconda.backend.kernelVersionList(anaconda.rootPath): if nick != 'base': if nick != 'kdump': defkern = "kernel-%s" % (nick, ) kernelList.append(("%s-%s" % (kernelLabel, nick), "%s-%s" % (kernelLongLabel, nick), version)) else: kernelList.append((kernelLabel, kernelLongLabel, version)) f = open(anaconda.rootPath + "/etc/sysconfig/kernel", "w+") f.write("# UPDATEDEFAULT specifies if new-kernel-pkg should make\n" "# new kernels the default\n") # only update the default if we're setting the default to linux (#156678) if (not defaultDev and not rootDev) or (defaultDev and rootDev.name == defaultDev.name): f.write("UPDATEDEFAULT=yes\n") else: f.write("UPDATEDEFAULT=no\n") f.write("\n") f.write("# DEFAULTKERNEL specifies the default kernel package type\n") f.write("DEFAULTKERNEL=%s\n" % (defkern, )) if anaconda.id.bootloader.trusted_boot: f.write("# HYPERVISOR specifies the default multiboot kernel\n") f.write("HYPERVISOR=/boot/tboot.gz\n") f.write("HYPERVISOR_ARGS=logging=vga,serial,memory\n") f.close() dosync() try: rc = anaconda.id.bootloader.write(anaconda.rootPath, anaconda.id.bootloader, kernelList, otherList, defaultDev) w.pop() if rc and anaconda.intf: anaconda.intf.messageWindow( _("Warning"), _("There was an error installing the bootloader. " "The system may not be bootable.")) except booty.BootyNoKernelWarning: w.pop() if anaconda.intf: anaconda.intf.messageWindow( _("Warning"), _("No kernel packages were installed on the " "system. Bootloader configuration " "will not be changed.")) except RuntimeError: w.pop() if anaconda.intf: anaconda.intf.messageWindow( _("Warning"), _("There was an error installing the bootloader. " "The system may not be bootable")) dosync()