- clean
-
- mkdir -p $CD_ROOT/dev/pts
- mkdir -p $CD_ROOT/proc
- mkdir -p $CD_ROOT/etc
-
- echo "copy fstab and mtab"
- cp -f $CONF_FILES_DIR/fstab $CD_ROOT/etc/
- cp -f $CONF_FILES_DIR/mtab $CD_ROOT/etc/
-
- echo "setup rpm to install only en_US locale and no docs"
- mkdir -p $CD_ROOT/etc/rpm
- cp -f $CONF_FILES_DIR/macros $CD_ROOT/etc/rpm
- # trick rpm and yum
- export HOME=$PWD
- cp -f $CONF_FILES_DIR/macros $PWD/.rpmmacros
-
- echo "initialize rpm db"
- mkdir -p $CD_ROOT/var/lib/rpm
- rpm --root $CD_ROOT --initdb
-
- # XXX Should download yum.conf from the boot server?
- echo "generate yum.conf"
-cat >yum.conf <<EOF
-[main]
-cachedir=/var/cache/yum
-debuglevel=2
-logfile=/var/log/yum.log
-pkgpolicy=newest
-### for yum-2.4 in fc4 (this will be ignored by yum-2.0)
-### everything in here, do not scan /etc/yum.repos.d/
-reposdir=/dev/null
-
-[FedoraCore2Base]
-name=Fedora Core 2 Base -- PlanetLab Central
-baseurl=http://$PRIMARY_SERVER/install-rpms/stock-fc2/
-
-[FedoraCore2Updates]
-name=Fedora Core 2 Updates -- PlanetLab Central
-baseurl=http://$PRIMARY_SERVER/install-rpms/updates-fc2/
-
-[PlanetLab]
-name=PlanetLab RPMS -- PlanetLab Central
-baseurl=http://$PRIMARY_SERVER/install-rpms/planetlab-rollout/
-EOF
- # XXX Temporary hack until the 3.2 rollout is complete and the
- # /planetlab/yumgroups.xml file contains the BootCD group.
- yumgroups="http://$PRIMARY_SERVER/install-rpms/planetlab-rollout/yumgroups.xml"
-
- # Solve the bootstrap problem by including any just built packages in
- # the yum configuration. This cooperates with the PlanetLab build
- # system.
- if [ -n "$RPM_BUILD_DIR" ] ; then
- yum-arch $(dirname $RPM_BUILD_DIR)/RPMS
- cat >>yum.conf <<EOF
-[Bootstrap]
-name=Bootstrap RPMS -- $(dirname $RPM_BUILD_DIR)/RPMS/
-baseurl=file://$(dirname $RPM_BUILD_DIR)/RPMS/
-EOF
- yumgroups="file://$(dirname $RPM_BUILD_DIR)/RPMS/yumgroups.xml"
- fi
-
- echo "install boot cd base rpms"
- yum -c yum.conf --installroot=$CD_ROOT -y groupinstall $BOOTCD_YUM_GROUP
-
- # Retrieve all of the packagereq declarations in the BootCD group of the yumgroups.xml file
- echo "checking to make sure rpms were installed"
- packages=$(curl $yumgroups | sed -n -e '/<name>BootCD<\/name>/,/<name>/{ s/.*<packagereq.*>\(.*\)<\/packagereq>/\1/p }')
- set +e
- for package in $packages; do
- echo "checking for package $package"
- /usr/sbin/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 {} \;)
-
- echo "setting up non-ssh authentication"
- mkdir -p $CD_ROOT/etc/samba
- /usr/sbin/chroot $CD_ROOT /usr/sbin/authconfig --nostart --kickstart \
- --enablemd5 --enableshadow
-
- echo "setting root password"
- sed -i "s#root::#root:$ROOT_PASSWORD:#g" $CD_ROOT/etc/shadow
-
- echo "relocate some large directories out of the root system"
- # get /var/lib/rpm out, its 12mb. create in its place a
- # symbolic link to /usr/relocated/var/lib/rpm
- mkdir -p $CD_ROOT/usr/relocated/var/lib/
- mv $CD_ROOT/var/lib/rpm $CD_ROOT/usr/relocated/var/lib/
- (cd $CD_ROOT/var/lib && ln -s ../../usr/relocated/var/lib/rpm rpm)
-
- # get /var/cache/yum out, its 100Mb. create in its place a
- # symbolic link to /usr/relocated/var/cache/yum
- mkdir -p $CD_ROOT/usr/relocated/var/cache/
- mv $CD_ROOT/var/cache/yum $CD_ROOT/usr/relocated/var/cache/
- (cd $CD_ROOT/var/cache && ln -s ../../usr/relocated/var/cache/yum yum)
-
- # get /lib/tls out
- mkdir -p $CD_ROOT/usr/relocated/lib
- mv $CD_ROOT/lib/tls $CD_ROOT/usr/relocated/lib/
- (cd $CD_ROOT/lib && ln -s ../usr/relocated/lib/tls tls)
-
- echo "extracting syslinux, copying isolinux files to cd"
- mkdir -p $CD_ROOT/usr/isolinux/
- mkdir -p $BUILD_DIR/syslinux
- tar -C $BUILD_DIR/syslinux -xjvf $SYSLINUX_SRC
- find $BUILD_DIR/syslinux -name isolinux.bin \
- -exec cp -f {} $CD_ROOT/usr/isolinux/ \;
-
- echo "moving kernel to isolinux directory"
- KERNEL=$CD_ROOT/boot/vmlinuz-*
- mv -f $KERNEL $CD_ROOT/usr/isolinux/kernel
-
- echo "moving /usr/bin/find and /usr/bin/dirname to /bin"
- mv $CD_ROOT/usr/bin/find $CD_ROOT/bin/
- mv $CD_ROOT/usr/bin/dirname $CD_ROOT/bin/
-
- echo "creating version files"
- echo "$FULL_VERSION_STRING" > $CD_ROOT/usr/isolinux/pl_version
- echo "$FULL_VERSION_STRING" > $CD_ROOT/pl_version
-
- touch $CD_ROOT/.built
-}