1 %define name vserver-reference
3 %define release 2.planetlab%{?date:.%{date}}
6 Packager: PlanetLab Central <support@planet-lab.org>
7 Distribution: PlanetLab 3.0
8 URL: http://www.planet-lab.org
10 Summary: VServer reference image
14 Source0: %{name}-%{version}.tar.bz2
16 Group: Applications/System
17 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
18 BuildArchitectures: noarch
19 Requires: util-vserver, e2fsprogs, yum
22 This package creates the virtual server (VServer) reference image used
23 as the installation base for new PlanetLab slivers.
31 rm -rf $RPM_BUILD_ROOT
34 rm -rf $RPM_BUILD_ROOT
37 . /usr/lib/util-vserver/util-vserver-vars
44 # Build image in /vservers/.vtmp
45 mkdir -p $VROOTDIR/.vtmp
46 VROOT=$(mktemp -d $VROOTDIR/.vtmp/vserver-reference.XXXXXX)
48 # Make /vservers/.vtmp/vserver-reference.XXXXXX
53 # Clean up before exiting if anything goes wrong
55 trap "umount $VROOT/proc ; umount $VROOT/dev/pts ; chattr -R -i $VROOT ; rm -rf $VROOT" EXIT
61 mknod -m 666 $VROOT/dev/null c 1 3
62 mknod -m 666 $VROOT/dev/zero c 1 5
63 mknod -m 666 $VROOT/dev/full c 1 7
64 mknod -m 644 $VROOT/dev/random c 1 8
65 mknod -m 644 $VROOT/dev/urandom c 1 9
66 mknod -m 666 $VROOT/dev/tty c 5 0
67 mknod -m 666 $VROOT/dev/ptmx c 5 2
71 # Initialize /dev in reference image
74 # Mount /dev/pts in reference image
75 mkdir -p $VROOT/dev/pts
76 mount -t devpts none $VROOT/dev/pts
78 # Mount /proc in reference image
80 mount -t proc none $VROOT/proc
82 # Create a dummy /etc/fstab in reference image
84 cat > $VROOT/etc/fstab <<EOF
85 # This fake fstab exists only to please df and linuxconf.
86 /dev/hdv1 / ext2 defaults 1 1
89 # Prevent all locales from being installed in reference image
90 mkdir -p $VROOT/etc/rpm
91 cat > $VROOT/etc/rpm/macros <<EOF
92 %%_install_langs en_US:en
94 %%__file_context_path /dev/null
98 TMP=`mktemp -d /tmp/%{name}.XXXXXX`
99 if [ -f /var/lock/rpm/transaction ] ; then
100 mv /var/lock/rpm/transaction $TMP
102 if [ -f /var/run/yum.pid ] ; then
103 mv /var/run/yum.pid $TMP
106 # Initialize RPM database in reference image
107 mkdir -p $VROOT/var/lib/rpm
108 rpm --root $VROOT --initdb
110 # Install RPMs in reference image
112 --sslcertdir=/mnt/cdrom/bootme/cacert \
113 --installroot=$VROOT \
114 -y groupinstall VServer
117 if [ -f $TMP/transaction ] ; then
118 mv $TMP/transaction /var/lock/rpm
120 if [ -f $TMP/yum.pid ] ; then
121 mv $TMP/yum.pid /var/run
125 # Clean up /dev in reference image
126 umount $VROOT/dev/pts
129 # Disable all services in reference image
130 chroot $VROOT /bin/sh -c "chkconfig --list | awk '{ print \$1 }' | xargs -i chkconfig {} off"
132 # Copy configuration files from host to reference image
133 for file in /etc/hosts /etc/resolv.conf /etc/yum.conf ; do
134 if [ -f $file ] ; then
135 echo $file | cpio -p -d -u $VROOT
145 # Swap them when complete
147 if [ -d $VROOTDIR/vserver-reference ] ; then
148 mv $VROOTDIR/vserver-reference $VROOT
149 # Let vcached clean it up later
151 mv $VROOTDIR/$(basename $VROOT) $VROOTDIR/vserver-reference
154 . /usr/lib/util-vserver/util-vserver-vars
156 mkdir -p $VROOTDIR/.vtmp
157 TMP=$(mktemp -d $VROOTDIR/.vtmp/vserver-reference.XXXXXX)
158 if [ -d $VROOTDIR/vserver-reference ] ; then
159 mv $VROOTDIR/vserver-reference $TMP
160 # Let vcached clean it up later
164 %defattr(-,root,root)
167 * Sun Oct 10 2004 Mark Huang <mlhuang@cs.princeton.edu> 3.0-2.planetlab
168 - dynamically install reference image
170 * Tue Sep 14 2004 Mark Huang <mlhuang@cs.princeton.edu> 3.0-1.planetlab