def writeSilo(self, instRoot, bl, kernelList, chainList, defaultDev): try: bootDev = self.storage.mountpoints["/boot"] mf = '/silo.message' cf = "/boot/silo.conf" mfdir = '/boot' cfPath = "" if not os.path.isdir(instRoot + "/boot"): os.mkdir(instRoot + "/boot") except KeyError: bootDev = self.storage.rootDevice cf = "/etc/silo.conf" mfdir = '/etc' cfPath = "/boot" f = open(instRoot + mfdir + mf, "w+") f.write("Welcome to %s!\nHit <TAB> for boot options\n\n" % productName) f.close() os.chmod(instRoot + mfdir + mf, 0600) f = open(instRoot + cf, "w+") f.write("# silo.conf generated by anaconda\n\n") f.write("#boot=%s\n" % (bootDev.path, )) f.write("message=%s\n" % (mf, )) f.write("timeout=%s\n" % (self.timeout or 50)) (disk, partNum) = getDiskPart(bootDev) f.write("partition=%s\n" % (partNum, )) if self.password: f.write("password=%s\n" % (self.password, )) f.write("restricted\n") f.write("default=%s\n" % (kernelList[0][0], )) f.write("\n") rootDev = self.storage.rootDevice for (label, longlabel, version) in kernelList: kernelTag = "-" + version kernelFile = "%s/vmlinuz%s" % (cfPath, kernelTag) f.write("image=%s\n" % (kernelFile, )) f.write("\tlabel=%s\n" % (label, )) f.write("\tread-only\n") initrd = self.makeInitrd(kernelTag, instRoot) if initrd: f.write("\tinitrd=%s/%s\n" % (cfPath, initrd)) append = "%s" % (self.args.get(), ) realroot = rootDev.fstabSpec if rootIsDevice(realroot): f.write("\troot=%s\n" % (realroot, )) else: if len(append) > 0: append = "%s root=%s" % (append, realroot) else: append = "root=%s" % (realroot, ) if len(append) > 0: f.write("\tappend=\"%s\"\n" % (append, )) f.write("\n") f.close() os.chmod(instRoot + cf, 0600) # FIXME: hack to make sure things are written to disk from pyanaconda import isys isys.sync() isys.sync() isys.sync() backup = "%s/backup.b" % (cfPath, ) sbinargs = ["/sbin/silo", "-f", "-C", cf, "-S", backup] if (iutil.getSparcMachine() == "sun4u" or iutil.getSparcMachine() == "sun4v"): sbinargs += ["-u"] else: sbinargs += ["-U"] rc = iutil.execWithRedirect(sbinargs[0], sbinargs[1:], stdout="/dev/tty5", stderr="/dev/tty5", root=instRoot) if rc: return rc if (not os.access(instRoot + "/etc/silo.conf", os.R_OK) and os.access(instRoot + "/boot/silo.conf", os.R_OK)): os.symlink("../boot/silo.conf", instRoot + "/etc/silo.conf") return 0
def writeSilo(self, instRoot, bl, kernelList, chainList, defaultDev): try: bootDev = self.storage.mountpoints["/boot"] mf = '/silo.message' cf = "/boot/silo.conf" mfdir = '/boot' cfPath = "" if not os.path.isdir(instRoot + "/boot"): os.mkdir(instRoot + "/boot") except KeyError: bootDev = self.storage.rootDevice cf = "/etc/silo.conf" mfdir = '/etc' cfPath = "/boot" f = open(instRoot + mfdir + mf, "w+") f.write("Welcome to %s!\nHit <TAB> for boot options\n\n" % productName) f.close() os.chmod(instRoot + mfdir + mf, 0600) f = open(instRoot + cf, "w+") f.write("# silo.conf generated by anaconda\n\n") f.write("#boot=%s\n" % (bootDev.path,)) f.write("message=%s\n" % (mf,)) f.write("timeout=%s\n" % (self.timeout or 50)) (disk, partNum) = getDiskPart(bootDev) f.write("partition=%s\n" % (partNum,)) if self.password: f.write("password=%s\n" % (self.password,)) f.write("restricted\n") f.write("default=%s\n" % (kernelList[0][0],)) f.write("\n") rootDev = self.storage.rootDevice for (label, longlabel, version) in kernelList: kernelTag = "-" + version kernelFile = "%s/vmlinuz%s" % (cfPath, kernelTag) f.write("image=%s\n" % (kernelFile,)) f.write("\tlabel=%s\n" % (label,)) f.write("\tread-only\n") initrd = self.makeInitrd(kernelTag, instRoot) if initrd: f.write("\tinitrd=%s/%s\n" % (cfPath, initrd)) append = "%s" % (self.args.get(),) realroot = rootDev.fstabSpec if rootIsDevice(realroot): f.write("\troot=%s\n" % (realroot,)) else: if len(append) > 0: append = "%s root=%s" % (append, realroot) else: append = "root=%s" % (realroot,) if len(append) > 0: f.write("\tappend=\"%s\"\n" % (append,)) f.write("\n") f.close() os.chmod(instRoot + cf, 0600) # FIXME: hack to make sure things are written to disk from pyanaconda import isys isys.sync() isys.sync() isys.sync() backup = "%s/backup.b" % (cfPath,) sbinargs = ["/sbin/silo", "-f", "-C", cf, "-S", backup] if (iutil.getSparcMachine() == "sun4u" or iutil.getSparcMachine() == "sun4v"): sbinargs += ["-u"] else: sbinargs += ["-U"] rc = iutil.execWithRedirect(sbinargs[0], sbinargs[1:], stdout = "/dev/tty5", stderr = "/dev/tty5", root = instRoot) if rc: return rc if (not os.access(instRoot + "/etc/silo.conf", os.R_OK) and os.access(instRoot + "/boot/silo.conf", os.R_OK)): os.symlink("../boot/silo.conf", instRoot + "/etc/silo.conf") return 0
def writeYaboot(self, instRoot, bl, kernelList, chainList, defaultDev): yabootTarget = string.join(self.getBootDevs(bl)) try: bootDev = self.storage.mountpoints["/boot"] cf = "/boot/etc/yaboot.conf" cfPath = "" if not os.path.isdir(instRoot + "/boot/etc"): os.mkdir(instRoot + "/boot/etc") except KeyError: bootDev = self.storage.rootDevice cfPath = "/boot" cf = "/etc/yaboot.conf" if bootDev.type == "mdarray": partNumber = bootDev.parents[0].partedPartition.number else: partNumber = bootDev.partedPartition.number f = open(instRoot + cf, "w+") f.write("# yaboot.conf generated by anaconda\n\n") f.write("boot=%s\n" %(yabootTarget,)) f.write("init-message=\"Welcome to %s!\\nHit <TAB> for boot options\"\n\n" % productName) f.write("partition=%s\n" % partNumber) f.write("timeout=%s\n" % (self.timeout or 80)) f.write("install=/usr/lib/yaboot/yaboot\n") f.write("delay=5\n") f.write("enablecdboot\n") f.write("enableofboot\n") f.write("enablenetboot\n") yabootProg = "/sbin/mkofboot" if iutil.getPPCMachine() == "PMac": # write out the first hfs/hfs+ partition as being macosx for (label, longlabel, device) in chainList: if ((not label) or (label == "")): continue f.write("macosx=/dev/%s\n" %(device,)) break f.write("magicboot=/usr/lib/yaboot/ofboot\n") elif iutil.getPPCMachine() == "pSeries": f.write("nonvram\n") f.write("fstype=raw\n") else: # Default non-destructive case for anything else. f.write("nonvram\n") f.write("mntpoint=/boot/yaboot\n") f.write("usemount\n") if not os.access(instRoot + "/boot/yaboot", os.R_OK): os.mkdir(instRoot + "/boot/yaboot") yabootProg = "/sbin/ybin" if self.password: f.write("password=%s\n" %(self.password,)) f.write("restricted\n") f.write("\n") rootDev = self.storage.rootDevice for (label, longlabel, version) in kernelList: kernelTag = "-" + version kernelFile = "%s/vmlinuz%s" %(cfPath, kernelTag) f.write("image=%s\n" %(kernelFile,)) f.write("\tlabel=%s\n" %(label,)) f.write("\tread-only\n") initrd = self.makeInitrd(kernelTag, instRoot) if initrd: f.write("\tinitrd=%s/%s\n" %(cfPath, initrd)) append = "%s" %(self.args.get(),) realroot = rootDev.fstabSpec if rootIsDevice(realroot): f.write("\troot=%s\n" %(realroot,)) else: if len(append) > 0: append = "%s root=%s" %(append,realroot) else: append = "root=%s" %(realroot,) if len(append) > 0: f.write("\tappend=\"%s\"\n" %(append,)) f.write("\n") f.close() os.chmod(instRoot + cf, 0600) # FIXME: hack to make sure things are written to disk from pyanaconda import isys isys.sync() isys.sync() isys.sync() ybinargs = [ yabootProg, "-f", "-C", cf ] rc = iutil.execWithRedirect(ybinargs[0], ybinargs[1:], stdout = "/dev/tty5", stderr = "/dev/tty5", root = instRoot) if rc: return rc if (not os.access(instRoot + "/etc/yaboot.conf", os.R_OK) and os.access(instRoot + "/boot/etc/yaboot.conf", os.R_OK)): os.symlink("../boot/etc/yaboot.conf", instRoot + "/etc/yaboot.conf") return 0