- MyPLC 0.4 RC2
[bootmanager.git] / source / steps / ChainBootNode.py
index dc55c83..e2d2e89 100644 (file)
@@ -11,6 +11,7 @@ from systeminfo import systeminfo
 import BootAPI
 import notify_messages
 
+import ModelOptions
 
 def Run( vars, log ):
     """
@@ -51,6 +52,8 @@ def Run( vars, log ):
         # its ok if this is blank
         NODE_SESSION= vars["NODE_SESSION"]
 
+        NODE_MODEL_OPTIONS= vars["NODE_MODEL_OPTIONS"]
+
     except KeyError, var:
         raise BootManagerException, "Missing variable in vars: %s\n" % var
     except ValueError, var:
@@ -80,6 +83,7 @@ def Run( vars, log ):
         utils.sysexec( "mount /dev/planetlab/root %s" % SYSIMG_PATH, log )
         utils.sysexec( "mount /dev/planetlab/vservers %s/vservers" %
                        SYSIMG_PATH, log )
+        utils.sysexec( "mount -t proc none %s/proc" % SYSIMG_PATH, log )
 
         ROOT_MOUNTED= 1
         vars['ROOT_MOUNTED']= 1
@@ -121,9 +125,14 @@ def Run( vars, log ):
     (network_count,storage_count)= \
              InstallWriteConfig.write_modprobeconf_file( vars, log )
 
+    # get the kernel version
+    option = ''
+    if NODE_MODEL_OPTIONS & ModelOptions.SMP:
+        option = 'smp'
+
     log.write( "Copying kernel and initrd for booting.\n" )
-    utils.sysexec( "cp %s/boot/kernel-boot /tmp/kernel" % SYSIMG_PATH, log )
-    utils.sysexec( "cp %s/boot/initrd-boot /tmp/initrd" % SYSIMG_PATH, log )
+    utils.sysexec( "cp %s/boot/kernel-boot%s /tmp/kernel" % (SYSIMG_PATH,option), log )
+    utils.sysexec( "cp %s/boot/initrd-boot%s /tmp/initrd" % (SYSIMG_PATH,option), log )
 
     log.write( "Unmounting disks.\n" )
     try:
@@ -132,6 +141,7 @@ def Run( vars, log ):
         utils.sysexec_noerr( "chroot %s umount /rcfs" % SYSIMG_PATH, log )
     except OSError, e:
         pass
+    utils.sysexec_noerr( "umount %s/proc" % SYSIMG_PATH, log )
     utils.sysexec_noerr( "umount -r /dev/planetlab/vservers", log )
     utils.sysexec_noerr( "umount -r /dev/planetlab/root", log )
     utils.sysexec_noerr( "vgchange -an", log )
@@ -232,7 +242,9 @@ def Run( vars, log ):
         log.write( "Couldn't read /proc/modules, continuing.\n" )
 
 
-    kargs = "ramdisk_size=8192"
+    kargs = "root=/dev/mapper/planetlab-root ramdisk_size=8192"
+    if NODE_MODEL_OPTIONS & ModelOptions.SMP:
+        kargs = kargs + " " + "acpi=off"
     try:
         kargsfb = open("/kargs.txt","r")
         moreargs = kargsfb.readline()