X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=build.sh;h=f4498be67aecc5e889637bac1f1baa5a7419eb2d;hb=7335b53a0054408c2993286552a93e31ab86b014;hp=5940d6365aea78e6e3b91a9b02a4f3d5de5f5181;hpb=c6d22e23b056bc1729292e62f9db8f03d2f1e940;p=bootcd.git diff --git a/build.sh b/build.sh index 5940d63..f4498be 100755 --- a/build.sh +++ b/build.sh @@ -2,7 +2,7 @@ set -e -BOOTCD_VERSION="3.0-beta0.1" +BOOTCD_VERSION="3.0-beta0.4" FULL_VERSION_STRING="PlanetLab BootCD $BOOTCD_VERSION" # which boot server to contact @@ -23,7 +23,7 @@ ROOT_PASSWD='$1$IdEn2srw$/TfrjZSPUC1xP244YCuIi0' BOOTCD_YUM_GROUP=BootCD -CDRECORD_FLAGS="-v -dao -blank=fast" +CDRECORD_FLAGS="-v -dao" CONF_FILES_DIR=conf_files/ @@ -34,7 +34,7 @@ INITRD=$CD_ROOT/usr/isolinux/initrd INITRD_MOUNT=`pwd`/rd # size of the ram disk in MB -RAMDISK_SIZE=48 +RAMDISK_SIZE=64 # the bytes per inode ratio (the -i value in mkfs.ext2) for the ramdisk INITRD_BYTES_PER_INODE=1024 @@ -68,6 +68,20 @@ function build_cdroot() echo "install boot cd base rpms" yum -c yum.conf --installroot=$CD_ROOT -y groupinstall $BOOTCD_YUM_GROUP + echo "checking to make sure rpms were installed" + packages=`cat yumgroups.xml | grep packagereq | sed 's#<[^<]*>##g'` + set +e + for package in $packages; do + echo "checking for package $package" + chroot $CD_ROOT /bin/rpm -qi $package > /dev/null + if [[ "$?" -ne 0 ]]; then + echo "package $package was not installed in the cd root." + echo "make sure it exists in the yum repository." + exit 1 + fi + done + set -e + echo "removing unneccessary build files" (cd $CD_ROOT/lib/modules && \ find ./ -type d -name build -maxdepth 2 -exec rm -rf {} \;) @@ -133,6 +147,9 @@ function build_initrd() echo "setup basic networking files" cp -f $CONF_FILES_DIR/hosts $CD_ROOT/etc/ + echo "copying sysctl.conf (fix tcp window scaling and broken routers)" + cp -f $CONF_FILES_DIR/sysctl.conf $CD_ROOT/etc/ + echo "setup default network conf file" mkdir -p $CD_ROOT/usr/boot cp -f $CONF_FILES_DIR/default-net.cnf $CD_ROOT/usr/boot/ @@ -144,6 +161,13 @@ function build_initrd() echo "$BOOTSERVER_PORT" > $CD_ROOT/usr/boot/boot_server_port echo "$BOOTSERVER_PATH" > $CD_ROOT/usr/boot/boot_server_path + echo "copying old boot cd directory bootme (TEMPORARY)" + cp -r bootme_old $CD_ROOT/usr/bootme + echo "$FULL_VERSION_STRING" > $CD_ROOT/usr/bootme/ID + + echo "forcing lvm to make lvm1 partitions (TEMPORARY)" + cp -f $CONF_FILES_DIR/lvm.conf $CD_ROOT/etc/lvm/ + echo "copying isolinux configuration files" cp -f $CONF_FILES_DIR/isolinux.cfg $CD_ROOT/usr/isolinux/ echo "$FULL_VERSION_STRING" > $CD_ROOT/usr/isolinux/message.txt @@ -161,7 +185,10 @@ function build_initrd() echo "building pcitable for hardware detection" pci_map_file=`find $CD_ROOT/lib/modules/ -name modules.pcimap | head -1` - ./scripts/rewrite-pcitable.py $pci_map_file $CD_ROOT/etc/pl_pcitable + module_dep_file=`find $CD_ROOT/lib/modules/ -name modules.dep | head -1` + pci_table=$CD_ROOT/usr/share/hwdata/pcitable + ./scripts/rewrite-pcitable.py $module_dep_file $pci_map_file $pci_table \ + $CD_ROOT/etc/pl_pcitable dd if=/dev/zero of=$INITRD bs=1M count=$RAMDISK_SIZE mkfs.ext2 -F -m 0 -i $INITRD_BYTES_PER_INODE $INITRD @@ -169,8 +196,10 @@ function build_initrd() mount -o loop,rw $INITRD $INITRD_MOUNT echo "copy all files except usr to ramdisk" - (cd $CD_ROOT && find . -path ./usr -prune -o -print | \ - cpio -p -d -u $INITRD_MOUNT) + pushd . + cd $CD_ROOT + find . -path ./usr -prune -o -print | cpio -p -d -u $INITRD_MOUNT + popd umount $INITRD_MOUNT rmdir $INITRD_MOUNT