[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
[PATCH] Update ppc SMS bios after installation
- From: Mark Hamzy <hamzy us ibm com>
- To: anaconda-devel-list redhat com
- Cc: Mark Hamzy <hamzy us ibm com>
- Subject: [PATCH] Update ppc SMS bios after installation
- Date: Tue, 29 Nov 2011 12:43:18 -0600
Here is a proposed patch that updates a PowerPC's BIOS to boot from the newly installed hard disk rather than back to the installer.
The BIOS maintains a list of bootable targets which can be queried with the nvram utility. This list can be modified so that the installation harddrive will show up first. This code will read the list, figure out what drive contains the PReP partition, prepends that drive to the list, and then updates BIOS.
For example the list could be the DVD, hard drive, and ethernet.
[anaconda root@(none) /]# nvram --print-config=boot-device
/vdevice/v-scsi 30000005/disk 8100000000000000 /vdevice/v-scsi 30000002/disk 8100000000000000 /vdevice/l-lan 30000003:speed=auto,duplex=auto,000.000.000.000,,000.000.000.000,000.000.000.000,5,5,000.000.000.000,512
After running this function, the list will be as follows:
[anaconda root@(none) /]# nvram --print-config=boot-device
/vdevice/v-scsi 30000002/disk 8100000000000000 /vdevice/v-scsi 30000005/disk 8100000000000000 /vdevice/l-lan 30000003:speed=auto,duplex=auto,000.000.000.000,,000.000.000.000,000.000.000.000,5,5,000.000.000.000,512
---
pyanaconda/bootloader.py | 58 ++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 58 insertions(+), 0 deletions(-)
diff --git a/pyanaconda/bootloader.py b/pyanaconda/bootloader.py
index 1150335..84466cd 100644
--- a/pyanaconda/bootloader.py
+++ b/pyanaconda/bootloader.py
@@ -1877,6 +1877,64 @@ class IPSeriesYaboot(Yaboot):
config.write("nonvram\n") # only on pSeries?
config.write("fstype=raw\n")
+ #
+ # installation
+ #
+
+ def install(self, install_root=""):
+ self.updatePowerPCBootList()
+
+ super(IPSeriesYaboot, self).install(install_root=install_root)
+
+ def updatePowerPCBootList(self):
+
+ log.debug ("updatePowerPCBootList: self.stage1_device.path = %s" % self.stage1_device.path)
+
+ buf = iutil.execWithCapture("nvram",
+ ["--print-config=boot-device"],
+ stderr="/dev/hvc1",
+ root="/")
+
+ if len(buf) == 0:
+ log.error ("FAIL: nvram --print-config=boot-device")
+
+ return
+
+ boot_list = buf.strip ().split ()
+
+ log.debug ("updatePowerPCBootList: boot_list = %s" % boot_list)
+
+ buf = iutil.execWithCapture("ofpathname",
+ [self.stage1_device.path],
+ stderr="/dev/hvc1",
+ root="/")
+
+ if len(buf) > 0:
+ boot_disk = buf.strip ()
+ log.debug ("updatePowerPCBootList: boot_disk = %s" % boot_disk)
+
+ else:
+ log.error ("FAIL: ofpathname %s" % self.stage1_device.path)
+
+ return
+
+ # Place the disk containing the PReP partition first.
+ # Remove all other occurances of it.
+ boot_list = [boot_disk] + filter (lambda x: x != boot_disk, boot_list)
+
+ log.debug ("updatePowerPCBootList: updated boot_list = %s" % boot_list)
+
+ update_value = "boot-device=%s" % (" ".join (boot_list),)
+
+ rc = iutil.execWithRedirect("nvram", ["--update-config", update_value],
+ stdout="/dev/hvc1", stderr="/dev/hvc1",
+ root="/")
+ if rc:
+ log.error ("FAIL: nvram --update-config %s" % update_value)
+
+ else:
+ log.info ("Updated PPC boot list with the command: nvram --update-config %s" % update_value)
+
class MacYaboot(Yaboot):
prog = "mkofboot"
--
1.7.7
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]