COMMAND_VBUILD="vbuild-init-lxc.sh"
COMMAND_MYPLC="vtest-init-lxc.sh"
-lxc_version="0.8.0-rc2"
+lxc_version="lxc-0.8.0"
+lxc_git_repo="git://lxc.git.sourceforge.net/gitroot/lxc/lxc"
function bridge_init () {
sleep 2
echo "Setting bridge address=$address broadcast=$broadcast"
# static
- /sbin/ifconfig $INTERFACE_BRIDGE $address broadcast $broadcast up
+ #/sbin/ifconfig $INTERFACE_BRIDGE $address broadcast $broadcast up
+ dhclient $INTERFACE_BRIDGE
sleep 1
#Reconfigure the routing table
check_yum_installed libvirt
#retrieve and install lxc from sources
- #raw_version=$(lxc-version ||: )
- #lxc_installed_version=$(echo $raw_version | sed -e 's,.*: ,,')
- #if [ "$lxc_installed_version" != "$lxc_version" ] ; then
- if [ ! -f /usr/bin/lxc-ls ] ; then
- #echo "Expecting version" '['$lxc_version']'
- #echo "Found version" '['$lxc_installed_version']'
+ raw_version=$(lxc-version ||: )
+ lxc_installed_version=$(echo $raw_version | sed -e 's,.*: ,,')
+ if [ "$lxc_installed_version" != "$(echo $lxc_version | cut -d'-' -f2)" ] ; then
+ echo "Expecting version" '['$lxc_version']'
+ echo "Found version" '['$lxc_installed_version']'
echo "Installing lxc ..."
cd /root
- [ -d lxc ] || git clone git://lxc.git.sourceforge.net/gitroot/lxc/lxc
+ [ -d lxc ] || git clone "$lxc_git_repo"
cd lxc
git pull
git checkout $lxc_version
./autogen.sh
- ./configure --prefix=/usr --exec-prefix=/usr
+ ./configure --prefix=/usr --exec-prefix=/usr --disable-apparmor
make
make install
mkdir -p /usr/var/lib/
EOF
# set the hostname
+if [[ "$fcdistro" == "f18" ]] ; then
+ cat <<EOF > ${rootfs_path}/etc/hostname
+$HOSTNAME
+EOF
+else
cat <<EOF > ${rootfs_path}/etc/sysconfig/network
NETWORKING=yes
HOSTNAME=$HOSTNAME
EOF
+fi
# set minimal hosts
# cat <<EOF > $rootfs_path/etc/hosts
function configure_fedora_systemd() {
-
unlink ${rootfs_path}/etc/systemd/system/default.target
+ ln -s /lib/systemd/system/multi-user.target ${rootfs_path}/etc/systemd/system/default.target
touch ${rootfs_path}/etc/fstab
- chroot ${rootfs_path} ln -s /dev/null //etc/systemd/system/udev.service
- chroot ${rootfs_path} ln -s /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
- #dependency on a device unit fails it specially that we disabled udev
- sed -i 's/After=dev-%i.device/After=/' ${rootfs_path}/lib/systemd/system/getty\@.service
+ ln -s /dev/null ${rootfs_path}/etc/systemd/system/udev.service
+# Thierry - Feb 2013
+# this was intended for f16 initially, in order to enable getty that otherwise would not start
+# having a getty running is helpful only if ssh won't start though, and we see a correlation between
+# VM's that refuse to lxc-stop and VM's that run crazy getty's
+# so, turning getty off for now instead
+# #dependency on a device unit fails it specially that we disabled udev
+# sed -i 's/After=dev-%i.device/After=/' ${rootfs_path}/lib/systemd/system/getty\@.service
+ ln -s /dev/null ${rootfs_path}/etc/systemd/system/"getty@.service"
+ rm -f ${rootfs_path}/etc/systemd/system/getty.target.wants/*service || :
+# can't seem to handle this one with systemctl
chroot ${rootfs_path} chkconfig network on
}
MIRROR_URL=http://mirror.onelab.eu/fedora/releases/$release/Everything/$arch/os
- RELEASE_URL="$MIRROR_URL/Packages/fedora-release-$release-1.noarch.rpm"
- echo "Fetching from $RELEASE_URL"
- curl -f "$RELEASE_URL" > $INSTALL_ROOT/fedora-release-$release.noarch.rpm
+ RELEASE_URL1="$MIRROR_URL/Packages/fedora-release-$release-1.noarch.rpm"
+ # with fedora18 the rpms are scattered by first name
+ RELEASE_URL2="$MIRROR_URL/Packages/f/fedora-release-$release-1.noarch.rpm"
+ RELEASE_TARGET=$INSTALL_ROOT/fedora-release-$release.noarch.rpm
+ found=""
+ for attempt in $RELEASE_URL1 $RELEASE_URL2; do
+ if curl -f $attempt -o $RELEASE_TARGET ; then
+ echo "Retrieved $attempt"
+ found=true
+ break
+ else
+ echo "Failed attempt $attempt"
+ fi
+ done
+ [ -n "$found" ] || { echo "Could not retrieve fedora-release rpm - exiting" ; exit 1; }
mkdir -p $INSTALL_ROOT/var/lib/rpm
rpm --root $INSTALL_ROOT --initdb
# start container
lxc-start -d -n $lxc
- lxc-wait -n $lxc -s RUNNING
-
echo $IP is up, waiting for ssh...
# wait max 5 min for sshd to start
done
[ -z $ssh_up ] && echo "SSHD in container $lxc is not running"
-
-
+
# rpm --rebuilddb
chroot $rootfs_path rpm --rebuilddb
#ssh -o "StrictHostKeyChecking no" $IP "rpm --rebuilddb"
else
[[ -z "$REPO_URL" ]] && usage
[[ -z "$IP" ]] && usage
- NETMASK=$(ifconfig br0 | grep 'inet addr' | awk '{print $4}' | sed -e 's/.*://')
+
+ NETMASK=$(ifconfig br0 | grep 'inet ' | awk '{print $4}' | sed -e 's/.*://')
GATEWAY=$(route -n | grep 'UG' | awk '{print $2}')
[[ -z "$HOSTNAME" ]] && usage
lxc_network_type=veth