summaryrefslogtreecommitdiffstats
path: root/bootloader.py
diff options
context:
space:
mode:
authorJeremy Katz <katzj@redhat.com>2001-07-18 22:02:48 +0000
committerJeremy Katz <katzj@redhat.com>2001-07-18 22:02:48 +0000
commit640f8036c502a625482d389cadb53988c204a22c (patch)
tree12265988693a1912faeb5bfb278e33f9656de311 /bootloader.py
parent949ab15b66f586c18a0299de7621ca5543118c70 (diff)
downloadanaconda-640f8036c502a625482d389cadb53988c204a22c.tar.gz
anaconda-640f8036c502a625482d389cadb53988c204a22c.tar.xz
anaconda-640f8036c502a625482d389cadb53988c204a22c.zip
raid1 for /boot no longer blows up with either lilo or grub; swap the order of writing out config files for lilo and grub
Diffstat (limited to 'bootloader.py')
-rw-r--r--bootloader.py44
1 files changed, 29 insertions, 15 deletions
diff --git a/bootloader.py b/bootloader.py
index 3cb7ea63b..1287fa171 100644
--- a/bootloader.py
+++ b/bootloader.py
@@ -394,7 +394,7 @@ class x86BootloaderInfo(bootloaderInfo):
f.write ("# NOTICE: You have a /boot partition. This means that\n")
f.write ("# all kernel paths are relative to /boot/\n")
- bootDev = bootDev.device.getDevice()
+ bootDev = bootDev.device.getDevice(asBoot = 1)
f.write('default=0\n')
f.write('timeout=30\n')
@@ -434,15 +434,20 @@ class x86BootloaderInfo(bootloaderInfo):
else:
forcelba = ""
+ grubTarget = bl.getDevice()
+ # XXX wouldn't it be nice if grub really understood raid? :)
+ if grubTarget[:2] == "md":
+ device = fsset.getEntryByDeviceName(grubTarget).device.members[0]
+ (grubTarget, None) = getDiskPart(device)
+
part = grubbyPartitionName(bootDev)
prefix = "%s/%s" % (grubbyPartitionName(bootDev), grubPath)
cmd = "root %s\ninstall %s%s/i386-redhat/stage1 d %s %s/i386-redhat/stage2 p %s%s/grub.conf" % \
- (part, forcelba, grubPath, grubbyPartitionName(bl.getDevice()),
+ (part, forcelba, grubPath, grubbyPartitionName(grubTarget),
grubPath, part, grubPath)
- log("GRUB command %s", cmd)
-
if not justConfigFile:
+ log("GRUB command %s", cmd)
p = os.pipe()
os.write(p[1], cmd + '\n')
os.close(p[1])
@@ -454,7 +459,7 @@ class x86BootloaderInfo(bootloaderInfo):
root = instRoot)
os.close(p[0])
- return None
+ return ""
def getBootloaderConfig(self, instRoot, fsset, bl, langs, kernelList,
chainList, defaultDev):
@@ -504,12 +509,12 @@ class x86BootloaderInfo(bootloaderInfo):
def write(self, instRoot, fsset, bl, langs, kernelList, chainList,
defaultDev, justConfig):
- str = self.writeGrub(instRoot, fsset, bl, langs, kernelList,
- chainList, defaultDev,
- justConfig | (not self.useGrubVal))
str = self.writeLilo(instRoot, fsset, bl, langs, kernelList,
chainList, defaultDev,
justConfig | (self.useGrubVal))
+ str = self.writeGrub(instRoot, fsset, bl, langs, kernelList,
+ chainList, defaultDev,
+ justConfig | (not self.useGrubVal))
def getArgList(self):
args = bootloaderInfo.getArgList(self)
@@ -625,13 +630,8 @@ def makeInitrd (kernelTag, instRoot):
return initrd
-def grubbyDiskName(name):
- drives = isys.hardDriveDict().keys()
- drives.sort (isys.compareDrives)
-
- return "hd%d" % drives.index(name)
-
-def grubbyPartitionName(dev):
+# return (disk, partition number) eg ('hda', 1)
+def getDiskPart(dev):
cut = len(dev)
if dev[-2] in string.digits:
cut = -2
@@ -649,6 +649,20 @@ def grubbyPartitionName(dev):
if cut < 0:
partNum = int(dev[cut:]) - 1
+ else:
+ partNum = None
+
+ return (name, partNum)
+
+def grubbyDiskName(name):
+ drives = isys.hardDriveDict().keys()
+ drives.sort (isys.compareDrives)
+
+ return "hd%d" % drives.index(name)
+
+def grubbyPartitionName(dev):
+ (name, partNum) = getDiskPart(dev)
+ if partNum != None:
return "(%s,%d)" % (grubbyDiskName(name), partNum)
else:
return "(%s)" %(grubbyDiskName(name))