Merge conflict
[build.git] / config.planetlab / bootstrapfs.post
1 #!/bin/bash
2
3 vdir=$1
4 if [ -z "${vdir}" ] ; then
5         echo "ERROR: $0"
6         echo "Provide the directory of the root filesystem to operate on"
7         exit
8 fi
9
10 # Cleanup yum config entirely, waiting for the config files to populate this
11 rm -rf ${vdir}/etc/yum.conf ${vdir}/etc/yum.repos.d
12
13 # Tweaking services
14 # turn OFF firstboot if present, might cause the node to hang
15 chroot ${vdir} /sbin/chkconfig firstboot off || :
16 # NOTE: we're enabling util-vserver to allow it to help shutdown all slices
17 # before rebooting.  This has been problematic in the past
18 chroot ${vdir} /sbin/chkconfig util-vserver off || :
19 # enabling network as it ends up turned off on systems that come with NetworkManager, starting with fedora9
20 chroot ${vdir} /sbin/chkconfig network on || :
21 # and turn off NetworkManager if present, as it quite obviously messes with network
22 chroot ${vdir} /sbin/chkconfig NetworkManager off || :
23
24 # turn OFF vservers-default ; this is to automatically restart vservers, let nm do that
25 chroot ${vdir} /sbin/chkconfig vservers-default off || :
26 # turn ON vprocunhide ; is required with kernels that have CONFIG_VSERVER_PROC_SECURE enabled
27 # which is the case for our k32 kernel
28 # chroot ${vdir} /sbin/chkconfig vprocunhide on || :
29
30 chroot ${vdir} /sbin/chkconfig fprobe-ulog on || :
31
32 # turn off cgconfig
33 chroot ${vdir} /sbin/chkconfig cgconfig off || :
34
35 # turn ON lxc-reference.
36 chroot ${vdir} /sbin/chkconfig lxc-reference on || :
37
38 # turn OFF selinux if set
39 # this may happen accidentally if you mention too much stuff in bootstrapfs.pkgs
40 for file in /etc/sysconfig/selinux /sbin/load_policy; do
41     [ -f ${vdir}/${file} ] || { echo "$file not found in $vdir - fine" ; continue; }
42     selinuxrpm=$(chroot ${vdir} rpm -qf ${file})
43     if [ -z "$selinuxrpm" ] ; then 
44         echo "SElinux: warning : could not rpm for file $file"
45     else
46         echo "Force-removing package ${selinuxrpm}" 
47         chroot ${vdir} rpm -e --nodeps ${selinuxrpm}
48     fi
49 done
50
51 # Disable splaying of cron.
52 echo > ${vdir}/etc/sysconfig/crontab
53
54 # Add site_admin account
55 chroot ${vdir} /usr/sbin/useradd -p "" -u 502 -m site_admin
56
57 # Remove 32bit packages from 64bit system (http://wiki.centos.org/FAQ/General#head-357346ff0bf7c14b0849c3bcce39677aaca528e9) 
58 # use rpm instead of yum as /proc is not mounted at that poing 
59 if echo ${vdir} | grep -q x86_64 ; then
60     chroot ${vdir} rpm -qa --qf '%{name}.%{arch}\n' | grep 'i[36]86$' | xargs chroot ${vdir} rpm -e
61 fi
62
63 # Add a logrotate script for btmp, which logs failed ssh logins, which can
64 # grow unbounded on public plnodes and fill the root fs.
65 cat <<EOF > ${vdir}/etc/logrotate.d/btmp
66 /var/log/btmp {
67     weekly
68     minsize 1M
69     create 0600 root utmp
70     rotate 2
71     compress
72     notifempty
73 }
74 EOF
75
76 # NOTE:  This is added to relieve one site's Cisco router configuration that
77 # fails to recognize the host once the arping is sent out.
78 # NOTE: this is pretty fragile, and fails on fedora 10 that as of today (oct. 20 2009) 
79 # has initscripts-8.86.3-1.i386 which reads almost identical but with /sbin/arping instead
80 # NOTE: this might work with fedora8 and centos5
81 # the other distros will probably just fail to add this patch
82 cat <<\EOF | patch -d ${vdir}/etc/sysconfig/network-scripts/
83 --- ifup-eth    2008-07-08 13:19:49.000000000 -0400
84 +++ ifup-eth-orig       2008-07-08 13:20:02.000000000 -0400
85 @@ -263,10 +263,10 @@
86      fi
87      
88      if ! LC_ALL=C ip addr ls ${REALDEVICE} | LC_ALL=C grep -q "${IPADDR}/${PREFIX}" ; then
89 -        if ! arping -q -c 2 -w 3 -D -I ${REALDEVICE} ${IPADDR} ; then
90 -           echo $"Error, some other host already uses address ${IPADDR}."
91 -           exit 1
92 -        fi
93 +        #if ! arping -q -c 2 -w 3 -D -I ${REALDEVICE} ${IPADDR} ; then
94 +        #   echo $"Error, some other host already uses address ${IPADDR}."
95 +        #   exit 1
96 +        #fi
97          if ! ip addr add ${IPADDR}/${PREFIX} \
98             brd ${BROADCAST:-+} dev ${REALDEVICE} ${SCOPE} label ${DEVICE}; then
99             echo $"Error adding address ${IPADDR} for ${DEVICE}."
100 EOF