nobase_distrib_SCRIPTS = redhat/initpost \
redhat/initpre \
redhat/rc.sysinit \
- gentoo/initpost
+ gentoo/initpost \
+ gentoo/initpre \
+ gentoo/init-vserver.sh
nobase_distrib_DATA = defaults/devs \
defaults/apt.conf \
--- /dev/null
+#!/bin/bash
+#
+# Copyright (C) 2006 Benedikt Boehm <hollow@gentoo.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+#
+# BIG FAT WARNING:
+#
+# Do not remove this file if you are using gentoo init style!
+# Your vserver will not boot anymore!
+#
+# You have been warned...
+#
+
+RUNLEVEL=1 /sbin/rc sysinit
+/sbin/rc boot
+/sbin/rc default
-#! /bin/bash
+#!/bin/bash
-# Copyright (C) 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+# Copyright (C) 2006 Benedikt Boehm <hollow@gentoo.org>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
## Called as: initpost <cfgdir> <path of util-vserver-vars>
+vdir="$1"/vdir
. "$2"
-$_MKDIR -p "$1"/vdir/usr/portage
+# portage stuff
+pushd "$vdir" &>/dev/null
+$_CHROOT_SH mkdir /usr 2>/dev/null || :
+$_CHROOT_SH mkdir /usr/portage 2>/dev/null || :
+popd &>/dev/null
-$_CAT <<EOF >> "$1"/fstab
-# shared portage tree
-/usr/portage /usr/portage none bind,ro 0 0
-/usr/portage/distfiles /usr/portage/distfiles none bind,rw 0 0
-EOF
+
+# check for baselayout >= 1.13
+pushd "$vdir" &>/dev/null
+basever=$($_CHROOT_SH cat /etc/gentoo-release | $_AWK '{print $5}')
+popd &>/dev/null
+
+echo ">>> Found baselayout-$basever"
+
+basemaj=${basever/.*}
+basemin=${basever#*.}
+basemin=${basemin/.*}
+
+if test "$basemaj" -lt 1 -o "$basemin" -lt 13; then
+ echo "!!! Will not do automagic changes to baselayout < 1.13"
+ echo "!!! You have to take care for yourself ..."
+ exit 0
+fi
+
+
+# fix gettys in inittab
+pushd "$vdir" &>/dev/null
+
+if $_CHROOT_SH testfile /etc/inittab; then
+ echo ">>> Fixing inittab ... "
+ inittabtmp=$($_MKTEMP inittab.XXXXXX)
+
+ $_CHROOT_SH cat /etc/inittab | \
+ $_SED 's/\(^[^#].*getty.*$\)/#\1/' > $inittabtmp
+ $_CHROOT_SH truncate /etc/inittab < $inittabtmp
+
+ $_RM -f $inittabtmp
+fi
+
+popd &>/dev/null
+
+
+# unneeded runlevel scripts
+pushd "$vdir" &>/dev/null
+echo ">>> Fixing default runlevel scripts ... "
+$_CHROOT_SH rm /etc/runlevels/boot/{clock,consolefont,keymaps,modules,net.lo} 2>/dev/null || :
+$_CHROOT_SH rm /etc/runlevels/default/{hdparm,netmount} 2>/dev/null || :
+popd &>/dev/null
+
+
+# fix fstab for checkfs/localmount
+pushd "$vdir" &>/dev/null
+echo ">>> Fixing fstab ... "
+echo "/dev/hdv1 / ufs 0 0" | $_CHROOT_SH truncate /etc/fstab
+popd &>/dev/null
+
+
+# gentoo initstyle magic
+initstyle=sysv
+test -e "$1"/apps/init/style && initstyle=$(<"$1"/apps/init/style)
+
+if test "$initstyle" == "gentoo"; then
+ pushd "$vdir" &>/dev/null
+
+ echo ">>> Installing special init-style magic ... "
+
+ $_CAT "$__DISTRIBDIR"/gentoo/init-vserver.sh | \
+ $_CHROOT_SH truncate /lib/rcscripts/sh/init-vserver.sh
+ $_CHROOT_SH chmod 0755 /lib/rcscripts/sh/init-vserver.sh
+
+ popd &>/dev/null
+
+ echo "!!!"
+ echo "!!! You have to install a service (e.g. syslog-ng) and add it to the"
+ echo "!!! default runlevel before you start the guest the first time!"
+ echo "!!! Otherwise the guest will die as soon as it has finished booting."
+ echo "!!!"
+ echo "!!! Consult the Gentoo Handbook on how to chroot and install"
+ echo "!!! packages into the guest environment."
+ echo "!!!"
+fi
--- /dev/null
+#!/bin/bash
+
+# Copyright (C) 2006 Benedikt Boehm <hollow@gentoo.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+## Called as: initpost <cfgdir> <path of util-vserver-vars>
+
+vdir="$1"/vdir
+. "$2"
+
+# portage stuff
+
+echo ">>> Adding shared /usr/portage to fstab ... "
+
+if test -d /usr/portage; then
+ ( echo
+ echo "# shared portage tree"
+ echo "/usr/portage /usr/portage none bind,ro 0 0"
+ echo "/usr/portage/distfiles /usr/portage/distfiles none bind,rw 0 0"
+ ) >> "$1"/fstab
+else
+ echo "!!! Cannot find /usr/portage! You should definitely use a"
+ echo "!!! shared portage tree if you have multiple Gentoo guests!"
+fi
+
+
+# initstyle sanity
+initstyle=sysv
+test -e "$1"/apps/init/style && initstyle=$(<"$1"/apps/init/style)
+
+echo ">>> Checking init-style ... $initstyle"
+
+if test "$initstyle" != "gentoo" -a "$initstyle" != "plain"; then
+ echo "!!! The init-style you specified is not supported for Gentoo"
+ echo "!!! Please use one of: plain, gentoo"
+fi
;;
(xgentoo)
- panic "init-style '$INITSTYLE' is no longer supported; please use plain instead; aborting";;
+ INITCMD_START=( /lib/rcscripts/sh/init-vserver.sh )
+ INITCMD_STOP=( /sbin/rc shutdown )
+
+ pushd "$vdir"/vdir &>/dev/null
+ basever=$($_CHROOT_SH cat /etc/gentoo-release | $_AWK '{print $5}')
+ popd &>/dev/null
+
+ basemaj=${basever/.*}
+ basemin=${basever#*.}
+ basemin=${basemin/.*}
+
+ test "$basemaj" -lt 1 -o "$basemin" -lt 13 && \
+ panic "\
+Using init-style 'gentoo' requires >=baselayout-1.13 inside the vserver!
+
+Your vserver ($(basename "$vdir")) seems to have baselayout-$basever,
+please use 'plain' init-style instead!"
+ ;;
(x) ;;
(*) panic "Unknown init-style '$INITSTYLE'; aborting";;