From: Thierry Parmentelat Date: Wed, 11 Apr 2012 13:12:35 +0000 (+0200) Subject: Merge branch 'master' into lxc_devel X-Git-Tag: bootmanager-5.1-1~3 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=0a520a0ca91980d6d7d235a18366b0f486c8f2f5;hp=68eef50d9f35e3cab248f0212007b84c110cf4cb;p=bootmanager.git Merge branch 'master' into lxc_devel --- diff --git a/source/configuration b/source/configuration index 9f0fe74..9f5de06 100644 --- a/source/configuration +++ b/source/configuration @@ -53,7 +53,7 @@ PLCONF_DIR=/etc/planetlab # this sets the size of the root logical volume, # after the root and swap has been created, remaining # goes to the vserver partition -ROOT_SIZE=14G +ROOT_SIZE=70G # override the swap size @@ -80,7 +80,7 @@ MINIMUM_DISK_SIZE=17 # total minimum disk size in GB if all usable disks are below this # size, the node cannot be installed -TOTAL_MINIMUM_DISK_SIZE=50 +TOTAL_MINIMUM_DISK_SIZE=120 # set of langugase for install (used in /etc/rpm/macros) diff --git a/source/steps/ChainBootNode.py b/source/steps/ChainBootNode.py index 848cb3d..67ac5dd 100644 --- a/source/steps/ChainBootNode.py +++ b/source/steps/ChainBootNode.py @@ -125,7 +125,7 @@ def Run( vars, log ): utils.sysexec_chroot( SYSIMG_PATH, cmd, log ) # Re-generate initrd right before kexec call - MakeInitrd.Run( vars, log ) + #MakeInitrd.Run( vars, log ) # the following step should be done by NM UpdateNodeConfiguration.Run( vars, log ) @@ -151,8 +151,10 @@ def Run( vars, log ): option = 'smp' log.write( "Copying kernel and initrd for booting.\n" ) - 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 ) + kversion = os.popen('rpm -r /tmp/mnt/sysimg -qa kernel | tail -1 | cut -c 8-').read().rstrip() + + utils.sysexec( "cp %s/boot/vmlinuz-%s /tmp/kernel" % (SYSIMG_PATH,kversion), log ) + utils.sysexec( "cp %s/boot/initramfs-%s.img /tmp/initrd" % (SYSIMG_PATH,kversion), log ) BootAPI.save(vars) @@ -189,7 +191,7 @@ def Run( vars, log ): utils.sysexec_noerr( "killall dhclient", log ) - utils.sysexec_noerr( "umount -a -r -t ext2,ext3", log ) + utils.sysexec_noerr( "umount -a -r -t ext2,ext3,btrfs", log ) utils.sysexec_noerr( "modprobe -r lvm-mod", log ) # modules that should not get unloaded diff --git a/source/steps/InstallBootstrapFS.py b/source/steps/InstallBootstrapFS.py index d2c42b5..47e2748 100644 --- a/source/steps/InstallBootstrapFS.py +++ b/source/steps/InstallBootstrapFS.py @@ -82,7 +82,7 @@ def Run( vars, log ): log.write( "mounting vserver partition in root file system\n" ) utils.makedirs( SYSIMG_PATH + "/vservers" ) - utils.sysexec( "mount -t ext3 %s %s/vservers" % (PARTITIONS["vservers"], + utils.sysexec( "mount -t btrfs %s %s/vservers" % (PARTITIONS["vservers"], SYSIMG_PATH), log ) vars['ROOT_MOUNTED']= 1 @@ -172,7 +172,7 @@ def Run( vars, log ): SYSIMG_PATH + "/usr/boot/cacert.pem") file(SYSIMG_PATH + "/usr/boot/boot_server", "w").write(boot_server) shutil.copy("/usr/bootme/pubring.gpg", SYSIMG_PATH + "/usr/boot/pubring.gpg") - + # For backward compatibility if os.path.exists("/usr/bootme"): utils.makedirs(SYSIMG_PATH + "/mnt/cdrom") diff --git a/source/steps/InstallPartitionDisks.py b/source/steps/InstallPartitionDisks.py index 5ca7507..2362758 100644 --- a/source/steps/InstallPartitionDisks.py +++ b/source/steps/InstallPartitionDisks.py @@ -158,17 +158,23 @@ def Run( vars, log ): # filesystems partitions names and their corresponding # reserved-blocks-percentages filesystems = {"root":5,"vservers":0} - - # make the file systems - for fs in filesystems.keys(): - # get the reserved blocks percentage - rbp = filesystems[fs] - devname = PARTITIONS[fs] - log.write("formatting %s partition (%s)%s.\n" % (fs,devname,txt)) - utils.sysexec( "mkfs.ext2 -q %s -m %d -j %s" % (option,rbp,devname), log ) + + # ROOT filesystem with ext2 + fs = 'root' + rbp = filesystems[fs] + devname = PARTITIONS[fs] + log.write("formatting %s partition (%s)%s.\n" % (fs,devname,txt)) + utils.sysexec( "mkfs.ext2 -q %s -m %d -j %s" % (option,rbp,devname), log ) + + # VSERVER filesystem with btrfs to support snapshoting and stuff + fs = 'vservers' + rbp = filesystems[fs] + devname = PARTITIONS[fs] + log.write("formatting %s partition (%s)%s.\n" % (fs,devname,txt)) + utils.sysexec( "mkfs.btrfs %s" % (devname), log ) # disable time/count based filesystems checks - for filesystem in ("root","vservers"): + for filesystem in ["root"]: utils.sysexec_noerr( "tune2fs -c -1 -i 0 %s" % PARTITIONS[filesystem], log) # save the list of block devices in the log diff --git a/source/steps/InstallWriteConfig.py b/source/steps/InstallWriteConfig.py index d8b5a6e..2679748 100644 --- a/source/steps/InstallWriteConfig.py +++ b/source/steps/InstallWriteConfig.py @@ -72,8 +72,8 @@ def Run( vars, log ): utils.sysexec_chroot( SYSIMG_PATH, "ln -sf /usr/share/zoneinfo/UTC /etc/localtime", log ) - log.write( "Enabling ntp at boot\n" ) - utils.sysexec_chroot( SYSIMG_PATH, "chkconfig ntpd on", log ) + #log.write( "Enabling ntp at boot\n" ) + #utils.sysexec_chroot( SYSIMG_PATH, "chkconfig ntpd on", log ) log.write( "Creating system directory %s\n" % PLCONF_DIR ) if not utils.makedirs( "%s/%s" % (SYSIMG_PATH,PLCONF_DIR) ): @@ -86,7 +86,7 @@ def Run( vars, log ): PARTITIONS["mapper-swap"] ) fstab.write( "%s / ext3 defaults 1 1\n" % \ PARTITIONS["mapper-root"] ) - fstab.write( "%s /vservers ext3 tagxid,defaults 1 2\n" % \ + fstab.write( "%s /vservers btrfs defaults 1 2\n" % \ PARTITIONS["mapper-vservers"] ) fstab.write( "none /proc proc defaults 0 0\n" ) fstab.write( "none /dev/shm tmpfs defaults 0 0\n" ) diff --git a/source/steps/ValidateNodeInstall.py b/source/steps/ValidateNodeInstall.py index c987170..5f63598 100644 --- a/source/steps/ValidateNodeInstall.py +++ b/source/steps/ValidateNodeInstall.py @@ -83,7 +83,7 @@ def Run( vars, log ): utils.makedirs( SYSIMG_PATH ) - for filesystem in ("root","vservers"): + for filesystem in ["root"]: try: # first run fsck to prevent fs corruption from hanging mount... log.write( "fsck %s file system\n" % filesystem ) @@ -101,6 +101,8 @@ def Run( vars, log ): else: # disable time/count based filesystems checks utils.sysexec_noerr( "tune2fs -c -1 -i 0 %s" % PARTITIONS[filesystem], log) + + # TODO: add fschk for btrfs vserver volume!! try: # then attempt to mount them @@ -123,7 +125,7 @@ def Run( vars, log ): VSERVERS_PATH = "%s/vservers" % SYSIMG_PATH utils.makedirs(VSERVERS_PATH) log.write( "mounting vserver partition in root file system\n" ) - utils.sysexec("mount -t ext3 %s %s" % (PARTITIONS["vservers"], VSERVERS_PATH), log) + utils.sysexec("mount -t btrfs %s %s" % (PARTITIONS["vservers"], VSERVERS_PATH), log) except BootManagerException, e: log.write( "BootManagerException during mount of /vservers: %s\n" % str(e) ) return -2 @@ -135,7 +137,8 @@ def Run( vars, log ): # these 2 links are created by our kernel's post-install scriplet log.write("Checking for a custom kernel\n") try: - os.stat("%s/boot/kernel-boot" % SYSIMG_PATH) + kversion = os.popen('rpm -r /tmp/mnt/sysimg -qa kernel | tail -1 | cut -c 8-').read().rstrip() + os.stat("%s/boot/vmlinuz-%s" % (SYSIMG_PATH,kversion)) except OSError, e: log.write( "Couldn't locate base kernel (you might be using the stock kernel).\n") return -3