summaryrefslogtreecommitdiffstats
path: root/booty/sparc.py
diff options
context:
space:
mode:
Diffstat (limited to 'booty/sparc.py')
-rw-r--r--booty/sparc.py127
1 files changed, 127 insertions, 0 deletions
diff --git a/booty/sparc.py b/booty/sparc.py
new file mode 100644
index 000000000..b094a4512
--- /dev/null
+++ b/booty/sparc.py
@@ -0,0 +1,127 @@
+import os
+
+from booty import BootyNoKernelWarning
+from bootloaderInfo import *
+
+class sparcBootloaderInfo(bootloaderInfo):
+ def writeSilo(self, instRoot, bl, kernelList,
+ chainList, defaultDev, justConfigFile):
+
+ try:
+ bootDev = self.storage.fsset.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.fsset.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))
+
+ (name, partNum) = getDiskPart(bootDev, self.storage)
+ partno = partNum + 1
+ f.write("partition=%s\n" % (partno,))
+
+ 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.fsset.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)
+ if os.access(instRoot + initrd, os.R_OK):
+ f.write("\tinitrd=%s/initrd%s.img\n" % (cfPath, kernelTag))
+
+ 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
+ import isys
+ isys.sync()
+ isys.sync()
+ isys.sync()
+
+ backup = "%s/backup.b" % (cfPath,)
+ sbinargs = ["/sbin/silo", "-f", "-C", cf, "-S", backup]
+ # TODO!!! FIXME!!! XXX!!!
+ # butil is not defined!!! - assume this is in rhpl now?
+ if butil.getSparcMachine() == "sun4u":
+ sbinargs += ["-u"]
+ else:
+ sbinargs += ["-U"]
+
+ if not flags.test:
+ iutil.execWithRedirect(sbinargs[0],
+ sbinargs,
+ stdout = "/dev/tty5",
+ stderr = "/dev/tty5",
+ root = instRoot)
+
+ if (not os.access(instRoot + "/etc/silo.conf", os.R_OK) and
+ os.access(instRoot + "/boot/etc/silo.conf", os.R_OK)):
+ os.symlink("../boot/etc/silo.conf",
+ instRoot + "/etc/silo.conf")
+
+ return ""
+
+ def setPassword(self, val, isCrypted = 1):
+ # silo just handles the password unencrypted
+ self.password = val
+
+ def write(self, instRoot, bl, kernelList, chainList,
+ defaultDev, justConfig):
+ if len(kernelList) >= 1:
+ self.writeSilo(instRoot, bl, kernelList, chainList,
+ defaultDev, justConfig)
+ else:
+ raise BootyNoKernelWarning
+
+ def __init__(self, storage):
+ bootloaderInfo.__init__(self, storage)
+ self.useSiloVal = 1
+ self.kernelLocation = "/boot"
+ self._configdir = "/etc"
+ self._configname = "silo.conf"