From 0a89d479db2ec338225c880d185a8a694f32fca1 Mon Sep 17 00:00:00 2001 From: Planet-Lab Support Date: Tue, 22 Aug 2006 22:01:48 +0000 Subject: [PATCH] This commit was manufactured by cvs2svn to create branch 'myplc-0_4-branch'. --- source/steps/MakeInitrd.py | 57 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 source/steps/MakeInitrd.py diff --git a/source/steps/MakeInitrd.py b/source/steps/MakeInitrd.py new file mode 100644 index 0000000..4854da7 --- /dev/null +++ b/source/steps/MakeInitrd.py @@ -0,0 +1,57 @@ +#!/usr/bin/python2 -u + +# Copyright (c) 2003 Intel Corporation +# All rights reserved. +# +# Copyright (c) 2004-2006 The Trustees of Princeton University +# All rights reserved. + +import os, string + +from Exceptions import * +import utils +import systeminfo + +def Run( vars, log ): + """ + Rebuilds the system initrd, on first install or in case the + hardware changed. + """ + + log.write( "\n\nStep: Rebuilding initrd\n" ) + + # make sure we have the variables we need + try: + SYSIMG_PATH= vars["SYSIMG_PATH"] + if SYSIMG_PATH == "": + raise ValueError, "SYSIMG_PATH" + + PARTITIONS= vars["PARTITIONS"] + if PARTITIONS == None: + raise ValueError, "PARTITIONS" + + except KeyError, var: + raise BootManagerException, "Missing variable in vars: %s\n" % var + except ValueError, var: + raise BootManagerException, "Variable in vars, shouldn't be: %s\n" % var + + # mkinitrd attempts to determine if the root fs is on a logical + # volume by checking if the root device contains /dev/mapper in + # its path. The device node must exist for the check to succeed, + # but since it's usually managed by devfs or udev, so is probably + # not present, we just create a dummy file. + + fake_root_lvm= False + if not os.path.exists( "%s/%s" % (SYSIMG_PATH,PARTITIONS["mapper-root"]) ): + fake_root_lvm= True + utils.makedirs( "%s/dev/mapper" % SYSIMG_PATH ) + rootdev= file( "%s/%s" % (SYSIMG_PATH,PARTITIONS["mapper-root"]), "w" ) + rootdev.close() + + initrd, kernel_version= systeminfo.getKernelVersion(vars,log) + utils.removefile( "%s/boot/%s" % (SYSIMG_PATH, initrd) ) + utils.sysexec( "chroot %s mkinitrd -v /boot/initrd-%s.img %s" % \ + (SYSIMG_PATH, kernel_version, kernel_version), log ) + + if fake_root_lvm == True: + utils.removefile( "%s/%s" % (SYSIMG_PATH,PARTITIONS["mapper-root"]) ) -- 2.43.0