Installation on Slackware 13: Difference between revisions
imported>Roberto.puzzanghera |
imported>Glenn (+cat) |
||
| (68 intermediate revisions by 4 users not shown) | |||
| Line 1: | Line 1: | ||
What follows was tested on a Slackware 13.1 guest. I assume you have a Linux-Vserver host working. | What follows was tested on a Slackware 13.37 and 13.1 guest. I assume you have a Linux-Vserver host working. If not, have a look at [http://linux-vserver.org/Installation_on_Linux_2.6 this] page. | ||
== Download the patch and the installer script == | == Download the patch and the installer script == | ||
| Line 5: | Line 5: | ||
<pre> | <pre> | ||
tar xzf slack_vserver.tar.gz | tar xzf slack_vserver.tar.gz | ||
cd slack_vserver | |||
ls | ls | ||
</pre> | |||
* [http://www.linux-vserver.org/Installation_on_Slackware_13#Slackware_package_list PKG_LIST] is the package list to be installed in the guest | |||
* slackware_pkg/ is the folder were the packages ("*.tgz" or "*.txz") to be installed are stored. This folder will be automatically created by these scripts. | |||
* [http://www.linux-vserver.org/Installation_on_Slackware_13#Download_the_slack_packages download_slack.sh] is a script that you can use to download all the packages in the PKG_LIST list. If you use this scriptlet all the packages will be stored in the slackware_pkg sub-folder. | |||
* [http://www.linux-vserver.org/Installation_on_Slackware_13#Make_the_guest make_slack_vserver.sh] is a shell script that you have to adjust. It installs the guest. | |||
* [http://www.linux-vserver.org/Installation_on_Slackware_13#Patch_used slackware-13.37.patch] is the patch which modifies ''/etc/rc.d/rc.6'' ''/etc/rc.d/rc.M'' and ''/etc/rc.d/rc.inet2''. It must be applied after the creation of the guest. In the patch I switched off all the mounts and executables that are related to the hardware. | |||
* ''rc'' is the startup script for the virtual server. It will be automatically copied in ''/etc/rc.d/init.d/rc'' | |||
<pre> | |||
# more rc | |||
#!/bin/bash | |||
if [ "$1" == "3" ]; then | |||
/etc/rc.d/rc.M | |||
elif [ "$1" == "6" ]; then | |||
/etc/rc.d/rc.6 | |||
else | |||
echo "Invalid level." | |||
exit 1 | |||
fi | |||
</pre> | </pre> | ||
== Download the slack packages == | == Download the slack packages == | ||
First of all select a minimal set of packages to be installed on the virtual server. This list of ''' | First of all select a minimal set of packages to be installed on the virtual server. [http://linux-vserver.org/Installation_on_Slackware_13#Slackware_package_list This list] of '''109 packages''' is based on the Minimal System reported at [http://slackwiki.org/Minimal_System http://slackwiki.org/Minimal_System] without all hardware, kernel and multimedia related packages. The install leads to '''a guest of about 448M of size'''. | ||
I assume that the packages to be installed are stored in the ''slackware_pkg'' folder. If not, adjust its location editing the ''make_slack_vserver.sh'' script. | |||
You can download my minimal set of packages running the shell script download_slack_pkg.sh | |||
<pre> | <pre> | ||
#!/bin/bash | |||
# | |||
# v. 2011.01.07 | |||
# Put here your favourite Slackware repository | |||
SRC="ftp://ftp.slackware.no/slackware/slackware-13.37/slackware/" # 32-bit | |||
#SRC="ftp://ftp.slackware.no/slackware/slackware64-13.37/slackware64/" # 64-bit | |||
LIST="../PKG_LIST" | |||
cd slackware_pkg | |||
if [ -f $LIST ]; then | if [ -f $LIST ]; then | ||
while read line | while read line | ||
| Line 43: | Line 57: | ||
wget "$SRC$line*.t?z" | wget "$SRC$line*.t?z" | ||
done < $LIST | done < $LIST | ||
else | |||
echo "Can't find $LIST file." | |||
exit 1 | |||
fi | fi | ||
rm index.html* | |||
</pre> | |||
Adjust the package [http://linux-vserver.org/Installation_on_Slackware_13#Slackware_package_list PKG_LIST], enter your favorite ftp server and run from the command line | |||
<pre> | |||
./download_slack_pkg.sh | |||
</pre> | </pre> | ||
== Make the guest == | == Make the guest == | ||
| Line 51: | Line 74: | ||
Now let's create the guest and install the packages. As you know you must choose at least a "name", a "context" and an ip. In addition you have to modify most of the ''rc.*'' startup scripts removing all the hardware related daemons, and finally replace the ''/dev'' dir. | Now let's create the guest and install the packages. As you know you must choose at least a "name", a "context" and an ip. In addition you have to modify most of the ''rc.*'' startup scripts removing all the hardware related daemons, and finally replace the ''/dev'' dir. | ||
This is done running the script | This is done running the script ''make_slack_vserver.sh'': | ||
<pre> | <pre> | ||
#!/bin/bash | #!/bin/bash | ||
# | # | ||
# v. 2011.04.28 | |||
# Author: Roberto Puzzanghera | |||
# | |||
# This script installs a Slackware guest into a linux-vserver host (http://linux-vserver.org) | |||
# | |||
# Comments are welcome :-) | |||
# More info here: http://notes.sagredo.eu/node/7 | # More info here: http://notes.sagredo.eu/node/7 | ||
| Line 65: | Line 94: | ||
NAME=$1 | NAME=$1 | ||
HOSTNAME=$NAME.myserver.net | HOSTNAME=$NAME.myserver.net | ||
IP=10.0.0. | IP=10.0.0.149 | ||
INTERFACE=eth0:$IP/24 | INTERFACE=eth0:$IP/24 | ||
CONTEXT= | CONTEXT=1011 | ||
VERSION=13.37 # Slackware version | |||
# where is the vservers dir? default is /vservers | # where is the vservers dir? default is /vservers | ||
VDIR=" | VDIR="/vservers" | ||
# the directory where you unpacked slack_vserver.tar.gz | # the directory where you unpacked slack_vserver.tar.gz | ||
# $PWD should work, otherwise put /path/to/slack_vserver | |||
SETUP=$PWD | |||
# the directory where you downloaded the slackware packages | # the directory where you downloaded the slackware packages | ||
PACKAGES="$SETUP/ | PACKAGES="$SETUP/slackware_pkg" | ||
# the | # the path to rc script file (leave as is) | ||
RC="$SETUP/rc" | RC="$SETUP/rc" | ||
| Line 86: | Line 117: | ||
if [ ! -d "$VDIR" ]; then | if [ ! -d "$VDIR" ]; then | ||
echo | echo | ||
echo "Can't find VDIR dir: $VDIR" | echo "Can't find VDIR dir: $VDIR" | ||
echo "Exiting" | echo "Exiting" | ||
echo | echo | ||
exit 1 | exit 1 | ||
fi | fi | ||
if [ ! -d "$SETUP" ]; then | if [ ! -d "$SETUP" ]; then | ||
echo | echo | ||
echo "Can't find SETUP dir: $SETUP" | echo "Can't find SETUP dir: $SETUP" | ||
echo "Exiting" | echo "Exiting" | ||
echo | echo | ||
exit 1 | exit 1 | ||
fi | fi | ||
if [ ! -d "$PACKAGES" ]; then | if [ ! -d "$PACKAGES" ]; then | ||
echo | echo | ||
echo "Can't find PACKAGES dir: $PACKAGES" | echo "Can't find PACKAGES dir: $PACKAGES" | ||
echo "Exiting" | echo "Exiting" | ||
echo | echo | ||
exit 1 | exit 1 | ||
fi | fi | ||
if [ ! -f "$RC" ]; then | if [ ! -f "$RC" ]; then | ||
echo | echo | ||
echo "Can't find RC path: $RC" | echo "Can't find RC path: $RC" | ||
echo "Exiting" | echo "Exiting" | ||
echo | echo | ||
exit 1 | exit 1 | ||
fi | fi | ||
| Line 116: | Line 147: | ||
# if everything is ok start the install | # if everything is ok start the install | ||
echo | echo | ||
read -p "press any key to make skeleton..." | read -p "press any key to make skeleton..." | ||
vserver ${NAME} build -m skeleton \ | vserver ${NAME} build -m skeleton \ | ||
--hostname ${HOSTNAME} \ | --hostname ${HOSTNAME} \ | ||
--interface ${INTERFACE} \ | --interface ${INTERFACE} \ | ||
--context $CONTEXT \ | |||
--flags lock,virt_mem,virt_uptime,virt_cpu,virt_load,sched_hard,hide_netif \ | --flags lock,virt_mem,virt_uptime,virt_cpu,virt_load,sched_hard,hide_netif \ | ||
--initstyle sysv | --initstyle sysv | ||
echo "...done" | echo "...done" | ||
echo | echo | ||
read -p "press any key to move to a temp dir the /dev folder..." | read -p "press any key to move the /dev folder to a temp dir the /dev folder..." | ||
mv $VDIR/$NAME/dev $VDIR/$NAME/dev2 | mv $VDIR/$NAME/dev $VDIR/$NAME/dev2 | ||
echo | echo | ||
read -p "press any key to install packages..." | read -p "press any key to install packages..." | ||
cd $PACKAGES | cd $PACKAGES | ||
installpkg -root $VDIR/$NAME *.t?z; | installpkg -root $VDIR/$NAME *.t?z; | ||
echo "...done" | echo "...done" | ||
echo | echo | ||
echo | echo | ||
read -p "press any key to copy rc script to /etc/rc.d/init.d..." | read -p "press any key to copy the rc script to /etc/rc.d/init.d..." | ||
echo | echo | ||
echo "copying rc to /etc/rc.d/init.d/rc" | echo "copying rc to /etc/rc.d/init.d/rc" | ||
cp -p $RC $VDIR/$NAME/etc/rc.d/init.d/ | cp -p $RC $VDIR/$NAME/etc/rc.d/init.d/ | ||
echo "done" | echo "...done" | ||
echo | echo | ||
echo "removing x flag to rc.inet1 and rc.sshd" | echo "removing x flag to rc.inet1 rc.loop and rc.sshd" | ||
chmod -x $VDIR/$NAME/etc/rc.d/rc.inet1 $VDIR/$NAME/etc/rc.d/rc.sshd | chmod -x $VDIR/$NAME/etc/rc.d/rc.inet1 $VDIR/$NAME/etc/rc.d/rc.loop $VDIR/$NAME/etc/rc.d/rc.sshd | ||
echo "done" | echo "...done" | ||
echo | echo | ||
echo "trying to adjust HOSTNAME, hosts, resolv.conf, profile. Check later..." | echo "trying to adjust HOSTNAME, hosts, resolv.conf, profile. Check later..." | ||
| Line 158: | Line 189: | ||
echo "127.0.0.1 localhost" > $VDIR/$NAME/etc/hosts | echo "127.0.0.1 localhost" > $VDIR/$NAME/etc/hosts | ||
echo "$IP $HOSTNAME $NAME" >> $VDIR/$NAME/etc/hosts | echo "$IP $HOSTNAME $NAME" >> $VDIR/$NAME/etc/hosts | ||
touch $VDIR/$NAME/etc/mtab | touch $VDIR/$NAME/etc/mtab | ||
touch $VDIR/$NAME/etc/fstab | touch $VDIR/$NAME/etc/fstab | ||
echo "done" | echo "...done" | ||
echo | |||
read -p "press any key to restore /dev2 to /dev" | read -p "press any key to restore /dev2 to /dev" | ||
rm -r $VDIR/$NAME/dev | rm -r $VDIR/$NAME/dev | ||
mv $VDIR/$NAME/dev2 $VDIR/$NAME/dev | mv $VDIR/$NAME/dev2 $VDIR/$NAME/dev | ||
echo "" | echo | ||
echo " | echo -n "Do you want that I apply the patch for you y/n? [y] " | ||
echo "cd $VDIR/$NAME/etc/rc.d" | read VAR_PATCH | ||
echo "patch -p1 < $SETUP/ | |||
echo | if [ "$VAR_PATCH" = 'y' ] || [ "$VAR_PATCH" = '' ]; then | ||
cd $VDIR/$NAME/etc/rc.d | |||
patch -p1 < $SETUP/linux-vserver_slackware-$VERSION.patch | |||
echo "patch applyed." | |||
echo | |||
echo "You can start and enter the virtual server typing: " | |||
echo | |||
echo "vserver $NAME start" | |||
echo "vserver $NAME enter" | |||
else | |||
echo | |||
echo "DON'T FORGET to patch /etc/rc.d as follows: " | |||
echo | |||
echo "cd $VDIR/$NAME/etc/rc.d" | |||
echo "patch -p1 < $SETUP/linux-vserver_slackware-$VERSION.patch" | |||
fi | |||
echo | |||
echo "More info on http://notes.sagredo.eu/node/7" | echo "More info on http://notes.sagredo.eu/node/7" | ||
echo | echo | ||
</pre> | </pre> | ||
== Apply the patch and start the guest == | == Apply the patch and start the guest == | ||
The script itsself can install the patch for you. Anyway this is how to apply the patch by yourself: | |||
<pre> | <pre> | ||
cd /vservers/vserver_name/etc/rc.d | cd /vservers/vserver_name/etc/rc.d | ||
patch -p1 < /path/to/slack_vserver/slackware-13. | patch -p1 < /path/to/slack_vserver/slackware-13.37.patch | ||
</pre> | |||
Now you can start the newly created virtual server: | |||
<pre> | |||
vserver <vserver_name> start | vserver <vserver_name> start | ||
vserver <vserver_name> enter | vserver <vserver_name> enter | ||
</pre> | </pre> | ||
== | == Contact == | ||
Any comments/suggestions/questions to ''roberto dot puzzanghera at sagredo dot eu'', [http://notes.sagredo.eu] or the [http://linux-vserver.org/index.php?title=Talk:Installation_on_Slackware_13&action=edit talk] page of this wiki page. | |||
== Patch used == | |||
<pre> | |||
Patch for Slackware 13.37 guest on a Linux-Vserver host | |||
======================================================== | |||
by Roberto Puzzanghera - http://notes.sagredo.eu | |||
version: 2011.04.28 | |||
======================================================== | |||
== | diff -urNB rc.d-original/rc.0 rc.d/rc.0 | ||
--- rc.d-original/rc.0 2011-04-16 23:14:14.000000000 +0200 | |||
+++ rc.d/rc.0 2011-04-28 15:01:59.000000000 +0200 | |||
@@ -37,22 +37,6 @@ | |||
;; | |||
esac | |||
-# Save the system time to the hardware clock using hwclock --systohc. | |||
-if [ -x /sbin/hwclock ]; then | |||
- # Check for a broken motherboard RTC clock (where ioports for rtc are | |||
- # unknown) to prevent hwclock causing a hang: | |||
- if ! grep -q -w rtc /proc/ioports ; then | |||
- CLOCK_OPT="--directisa" | |||
- fi | |||
- if grep -q "^UTC" /etc/hardwareclock 2> /dev/null ; then | |||
- echo "Saving system time to the hardware clock (UTC)." | |||
- /sbin/hwclock $CLOCK_OPT --utc --systohc | |||
- else | |||
- echo "Saving system time to the hardware clock (localtime)." | |||
- /sbin/hwclock $CLOCK_OPT --localtime --systohc | |||
- fi | |||
-fi | |||
- | |||
# Run any local shutdown scripts: | |||
if [ -x /etc/rc.d/rc.local_shutdown ]; then | |||
/etc/rc.d/rc.local_shutdown stop | |||
@@ -98,66 +82,11 @@ | |||
sh /etc/rc.d/rc.messagebus stop | |||
fi | |||
-# Kill any processes (typically gam) that would otherwise prevent | |||
-# unmounting NFS volumes: | |||
-unset FUSER_DELAY | |||
-for dir in $(/bin/mount | grep 'type nfs' | cut -d ' ' -f 3 ) ; do | |||
- echo "Killing processes holding NFS mount $dir open..." | |||
- # Background this to prevent fuser from also blocking shutdown: | |||
- /usr/bin/fuser -k -m $dir & | |||
- FUSER_DELAY=5 | |||
-done | |||
-# If fuser was run, let it have some delay: | |||
-if [ ! -z "$FUSER_DELAY" ]; then | |||
- sleep $FUSER_DELAY | |||
-fi | |||
- | |||
-# Unmount any NFS, SMB, or CIFS filesystems: | |||
-echo "Unmounting remote filesystems." | |||
-/bin/umount -v -a -l -f -r -t nfs,smbfs,cifs | |||
- | |||
-# Try to shut down pppd: | |||
-PS="$(ps ax)" | |||
-if echo "$PS" | /bin/grep -q -w pppd ; then | |||
- if [ -x /usr/sbin/ppp-off ]; then | |||
- /usr/sbin/ppp-off | |||
- fi | |||
-fi | |||
- | |||
-# Bring down the networking system, but first make sure that this | |||
-# isn't a diskless client with the / partition mounted via NFS: | |||
-if ! /bin/mount | /bin/grep -q 'on / type nfs' ; then | |||
- if [ -x /etc/rc.d/rc.inet1 ]; then | |||
- . /etc/rc.d/rc.inet1 stop | |||
- fi | |||
-fi | |||
- | |||
-# In case dhcpcd might have been manually started on the command line, | |||
-# look for the .pid file, and shut dhcpcd down if it's found: | |||
-if /bin/ls /etc/dhcpc/*.pid 1> /dev/null 2> /dev/null ; then | |||
- /sbin/dhcpcd -k 1> /dev/null 2> /dev/null | |||
- # A little time for /etc/resolv.conf and/or other files to | |||
- # restore themselves. | |||
- sleep 2 | |||
-fi | |||
- | |||
-# Shut down PCMCIA devices: | |||
-if [ -x /etc/rc.d/rc.pcmcia ]; then | |||
- . /etc/rc.d/rc.pcmcia stop | |||
- # The cards might need a little extra time here to deactivate: | |||
- /bin/sleep 5 | |||
-fi | |||
- | |||
# Turn off process accounting: | |||
if [ -x /sbin/accton -a -r /var/log/pacct ]; then | |||
/sbin/accton off | |||
fi | |||
-# Terminate acpid before syslog: | |||
-if [ -x /etc/rc.d/rc.acpid -a -r /var/run/acpid.pid ]; then # quit | |||
- . /etc/rc.d/rc.acpid stop | |||
-fi | |||
- | |||
# Kill all processes. | |||
# INIT is supposed to handle this entirely now, but this didn't always | |||
# work correctly without this second pass at killing off the processes. | |||
@@ -177,16 +106,6 @@ | |||
fi | |||
fi | |||
-# Carry a random seed between reboots. | |||
-echo "Saving random seed from /dev/urandom in /etc/random-seed." | |||
-# Use the pool size from /proc, or 512 bytes: | |||
-if [ -r /proc/sys/kernel/random/poolsize ]; then | |||
- /bin/dd if=/dev/urandom of=/etc/random-seed count=1 bs=$(cat /proc/sys/kernel/random/poolsize) 2> /dev/null | |||
-else | |||
- /bin/dd if=/dev/urandom of=/etc/random-seed count=1 bs=512 2> /dev/null | |||
-fi | |||
-/bin/chmod 600 /etc/random-seed | |||
- | |||
# Before unmounting file systems write a reboot or halt record to wtmp. | |||
$command -w | |||
@@ -195,17 +114,6 @@ | |||
rm -f /var/lock/subsys/* | |||
fi | |||
-# Turn off swap: | |||
-echo "Turning off swap." | |||
-/sbin/swapoff -a | |||
-/bin/sync | |||
- | |||
-echo "Unmounting local file systems." | |||
-/bin/umount -v -a -t no,proc,sysfs | |||
- | |||
-echo "Remounting root filesystem read-only." | |||
-/bin/mount -v -n -o remount,ro / | |||
- | |||
# This never hurts: | |||
/bin/sync | |||
@@ -230,45 +138,10 @@ | |||
done | |||
fi | |||
-# Deactivate LVM volume groups: | |||
-if [ -r /etc/lvmtab -o -d /etc/lvm/backup ]; then | |||
- echo "Deactivating LVM volume groups:" | |||
- /sbin/vgchange -an --ignorelockingfailure | |||
-fi | |||
- | |||
# This never hurts again (especially since root-on-LVM always fails | |||
# to deactivate the / logical volume... but at least it was | |||
# remounted as read-only first) | |||
/bin/sync | |||
-# sleep 3 fixes problems with some hard drives that don't | |||
-# otherwise finish syncing before reboot or poweroff | |||
-/bin/sleep 3 | |||
- | |||
# This is to ensure all processes have completed on SMP machines: | |||
wait | |||
- | |||
-if [ -x /sbin/genpowerd ]; then | |||
- # See if this is a powerfail situation: | |||
- if /bin/egrep -q "FAIL|SCRAM" /etc/upsstatus 2> /dev/null ; then | |||
- # Signal UPS to shut off the inverter: | |||
- /sbin/genpowerd -k | |||
- if [ ! $? = 0 ]; then | |||
- echo | |||
- echo "There was an error signaling the UPS." | |||
- echo "Perhaps you need to edit /etc/genpowerd.conf to configure" | |||
- echo "the serial line and UPS type." | |||
- # Wasting 15 seconds of precious power: | |||
- /bin/sleep 15 | |||
- fi | |||
- fi | |||
-fi | |||
- | |||
-# Now halt (poweroff with APM or ACPI enabled kernels) or reboot. | |||
-if [ "$command" = "reboot" ]; then | |||
- echo "Rebooting." | |||
- /sbin/reboot | |||
-else | |||
- /sbin/poweroff | |||
-fi | |||
- | |||
diff -urNB rc.d-original/rc.6 rc.d/rc.6 | |||
--- rc.d-original/rc.6 2011-04-16 23:14:14.000000000 +0200 | |||
+++ rc.d/rc.6 2011-04-28 15:01:59.000000000 +0200 | |||
@@ -37,22 +37,6 @@ | |||
;; | |||
esac | |||
-# Save the system time to the hardware clock using hwclock --systohc. | |||
-if [ -x /sbin/hwclock ]; then | |||
- # Check for a broken motherboard RTC clock (where ioports for rtc are | |||
- # unknown) to prevent hwclock causing a hang: | |||
- if ! grep -q -w rtc /proc/ioports ; then | |||
- CLOCK_OPT="--directisa" | |||
- fi | |||
- if grep -q "^UTC" /etc/hardwareclock 2> /dev/null ; then | |||
- echo "Saving system time to the hardware clock (UTC)." | |||
- /sbin/hwclock $CLOCK_OPT --utc --systohc | |||
- else | |||
- echo "Saving system time to the hardware clock (localtime)." | |||
- /sbin/hwclock $CLOCK_OPT --localtime --systohc | |||
- fi | |||
-fi | |||
- | |||
# Run any local shutdown scripts: | |||
if [ -x /etc/rc.d/rc.local_shutdown ]; then | |||
/etc/rc.d/rc.local_shutdown stop | |||
@@ -98,66 +82,11 @@ | |||
sh /etc/rc.d/rc.messagebus stop | |||
fi | |||
-# Kill any processes (typically gam) that would otherwise prevent | |||
-# unmounting NFS volumes: | |||
-unset FUSER_DELAY | |||
-for dir in $(/bin/mount | grep 'type nfs' | cut -d ' ' -f 3 ) ; do | |||
- echo "Killing processes holding NFS mount $dir open..." | |||
- # Background this to prevent fuser from also blocking shutdown: | |||
- /usr/bin/fuser -k -m $dir & | |||
- FUSER_DELAY=5 | |||
-done | |||
-# If fuser was run, let it have some delay: | |||
-if [ ! -z "$FUSER_DELAY" ]; then | |||
- sleep $FUSER_DELAY | |||
-fi | |||
- | |||
-# Unmount any NFS, SMB, or CIFS filesystems: | |||
-echo "Unmounting remote filesystems." | |||
-/bin/umount -v -a -l -f -r -t nfs,smbfs,cifs | |||
- | |||
-# Try to shut down pppd: | |||
-PS="$(ps ax)" | |||
-if echo "$PS" | /bin/grep -q -w pppd ; then | |||
- if [ -x /usr/sbin/ppp-off ]; then | |||
- /usr/sbin/ppp-off | |||
- fi | |||
-fi | |||
- | |||
-# Bring down the networking system, but first make sure that this | |||
-# isn't a diskless client with the / partition mounted via NFS: | |||
-if ! /bin/mount | /bin/grep -q 'on / type nfs' ; then | |||
- if [ -x /etc/rc.d/rc.inet1 ]; then | |||
- . /etc/rc.d/rc.inet1 stop | |||
- fi | |||
-fi | |||
- | |||
-# In case dhcpcd might have been manually started on the command line, | |||
-# look for the .pid file, and shut dhcpcd down if it's found: | |||
-if /bin/ls /etc/dhcpc/*.pid 1> /dev/null 2> /dev/null ; then | |||
- /sbin/dhcpcd -k 1> /dev/null 2> /dev/null | |||
- # A little time for /etc/resolv.conf and/or other files to | |||
- # restore themselves. | |||
- sleep 2 | |||
-fi | |||
- | |||
-# Shut down PCMCIA devices: | |||
-if [ -x /etc/rc.d/rc.pcmcia ]; then | |||
- . /etc/rc.d/rc.pcmcia stop | |||
- # The cards might need a little extra time here to deactivate: | |||
- /bin/sleep 5 | |||
-fi | |||
- | |||
# Turn off process accounting: | |||
if [ -x /sbin/accton -a -r /var/log/pacct ]; then | |||
/sbin/accton off | |||
fi | |||
-# Terminate acpid before syslog: | |||
-if [ -x /etc/rc.d/rc.acpid -a -r /var/run/acpid.pid ]; then # quit | |||
- . /etc/rc.d/rc.acpid stop | |||
-fi | |||
- | |||
# Kill all processes. | |||
# INIT is supposed to handle this entirely now, but this didn't always | |||
# work correctly without this second pass at killing off the processes. | |||
@@ -177,16 +106,6 @@ | |||
fi | |||
fi | |||
-# Carry a random seed between reboots. | |||
-echo "Saving random seed from /dev/urandom in /etc/random-seed." | |||
-# Use the pool size from /proc, or 512 bytes: | |||
-if [ -r /proc/sys/kernel/random/poolsize ]; then | |||
- /bin/dd if=/dev/urandom of=/etc/random-seed count=1 bs=$(cat /proc/sys/kernel/random/poolsize) 2> /dev/null | |||
-else | |||
- /bin/dd if=/dev/urandom of=/etc/random-seed count=1 bs=512 2> /dev/null | |||
-fi | |||
-/bin/chmod 600 /etc/random-seed | |||
- | |||
# Before unmounting file systems write a reboot or halt record to wtmp. | |||
$command -w | |||
@@ -195,17 +114,6 @@ | |||
rm -f /var/lock/subsys/* | |||
fi | |||
-# Turn off swap: | |||
-echo "Turning off swap." | |||
-/sbin/swapoff -a | |||
-/bin/sync | |||
- | |||
-echo "Unmounting local file systems." | |||
-/bin/umount -v -a -t no,proc,sysfs | |||
- | |||
-echo "Remounting root filesystem read-only." | |||
-/bin/mount -v -n -o remount,ro / | |||
- | |||
# This never hurts: | |||
/bin/sync | |||
@@ -230,45 +138,10 @@ | |||
done | |||
fi | |||
-# Deactivate LVM volume groups: | |||
-if [ -r /etc/lvmtab -o -d /etc/lvm/backup ]; then | |||
- echo "Deactivating LVM volume groups:" | |||
- /sbin/vgchange -an --ignorelockingfailure | |||
-fi | |||
- | |||
# This never hurts again (especially since root-on-LVM always fails | |||
# to deactivate the / logical volume... but at least it was | |||
# remounted as read-only first) | |||
/bin/sync | |||
-# sleep 3 fixes problems with some hard drives that don't | |||
-# otherwise finish syncing before reboot or poweroff | |||
-/bin/sleep 3 | |||
- | |||
# This is to ensure all processes have completed on SMP machines: | |||
wait | |||
- | |||
-if [ -x /sbin/genpowerd ]; then | |||
- # See if this is a powerfail situation: | |||
- if /bin/egrep -q "FAIL|SCRAM" /etc/upsstatus 2> /dev/null ; then | |||
- # Signal UPS to shut off the inverter: | |||
- /sbin/genpowerd -k | |||
- if [ ! $? = 0 ]; then | |||
- echo | |||
- echo "There was an error signaling the UPS." | |||
- echo "Perhaps you need to edit /etc/genpowerd.conf to configure" | |||
- echo "the serial line and UPS type." | |||
- # Wasting 15 seconds of precious power: | |||
- /bin/sleep 15 | |||
- fi | |||
- fi | |||
-fi | |||
- | |||
-# Now halt (poweroff with APM or ACPI enabled kernels) or reboot. | |||
-if [ "$command" = "reboot" ]; then | |||
- echo "Rebooting." | |||
- /sbin/reboot | |||
-else | |||
- /sbin/poweroff | |||
-fi | |||
- | |||
diff -urNB rc.d-original/rc.M rc.d/rc.M | |||
--- rc.d-original/rc.M 2011-03-22 07:15:15.000000000 +0100 | |||
+++ rc.d/rc.M 2011-04-28 19:07:47.000000000 +0200 | |||
@@ -20,10 +20,6 @@ | |||
/sbin/ldconfig & | |||
fi | |||
-# Screen blanks after 15 minutes idle time, and powers down in one hour | |||
-# if the kernel supports APM or ACPI power management: | |||
-/bin/setterm -blank 15 -powersave powerdown -powerdown 60 | |||
- | |||
# Set the hostname. | |||
if [ -r /etc/HOSTNAME ]; then | |||
/bin/hostname $(cat /etc/HOSTNAME | cut -f1 -d .) | |||
@@ -47,31 +43,6 @@ | |||
# Save the contents of 'dmesg': | |||
/bin/dmesg -s 65536 > /var/log/dmesg | |||
-# Initialize PCMCIA devices: | |||
-# | |||
-# NOTE: This used to be started near the top of rc.S so that PCMCIA devices | |||
-# could be fsck'ed along with the other drives. This had some unfortunate | |||
-# side effects, however, since root isn't yet read-write, and /var might not | |||
-# even be mounted the .pid files can't be correctly written in /var/run and | |||
-# the pcmcia system can't be correctly shut down. If you want some PCMCIA | |||
-# partition to be mounted at boot (or when the card is inserted) then add | |||
-# the appropriate lines to /etc/pcmcia/scsi.opts. | |||
-# | |||
-# Note that the stuff in /etc/pcmcia/ is only for 2.4.x kernels using | |||
-# 16-bit PCMCIA cards (not 32-bit Cardbus cards!). For example, with a | |||
-# wireless card you might need to set options in /etc/pcmcia OR in | |||
-# /etc/rc.d/rc.wireless.conf, or even in /etc/rc.d/rc.inet1.conf (with | |||
-# extra options if needed for the encryption key, ESSID, etc.) | |||
-# | |||
-# Hopefully this situation will be unified in the future, but for now | |||
-# that's how it is... | |||
-# | |||
-if [ -x /etc/rc.d/rc.pcmcia ]; then | |||
- . /etc/rc.d/rc.pcmcia start | |||
- # The cards might need a little extra time here to initialize. | |||
- sleep 5 | |||
-fi | |||
- | |||
# Start the system logger. | |||
if [ -x /etc/rc.d/rc.syslog -a -x /usr/sbin/syslogd -a -d /var/log ]; then | |||
. /etc/rc.d/rc.syslog start | |||
@@ -83,38 +54,18 @@ | |||
/usr/bin/fc-cache -f & | |||
fi | |||
-# If we are returning from single-user mode we will need to restart | |||
-# udevd on systems that use udev: | |||
-if grep -wq sysfs /proc/mounts && grep -q tmpfs /proc/filesystems ; then | |||
- if ! grep -wq nohotplug /proc/cmdline ; then | |||
- if [ -x /etc/rc.d/rc.udev ]; then | |||
- /bin/sh /etc/rc.d/rc.udev start | |||
- fi | |||
- fi | |||
-fi | |||
- | |||
-# Initialize the networking hardware. | |||
-if [ -x /etc/rc.d/rc.inet1 ]; then | |||
- . /etc/rc.d/rc.inet1 | |||
-fi | |||
- | |||
-# Look for additional USB/SCSI/IEEE1394/etc devices on multiple LUNs: | |||
-if [ -x /etc/rc.d/rc.scanluns ]; then | |||
- . /etc/rc.d/rc.scanluns | |||
-fi | |||
- | |||
# Start networking daemons: | |||
if [ -x /etc/rc.d/rc.inet2 ]; then | |||
. /etc/rc.d/rc.inet2 | |||
fi | |||
# Mount any additional filesystem types that haven't already been mounted: | |||
-mount -a -v 2> /dev/null | grep -v "already mounted" | |||
+#mount -a -v 2> /dev/null | grep -v "already mounted" | |||
# Start the Control Script for automounter: | |||
-if [ -x /etc/rc.d/rc.autofs ]; then | |||
- sh /etc/rc.d/rc.autofs start | |||
-fi | |||
+#if [ -x /etc/rc.d/rc.autofs ]; then | |||
+# sh /etc/rc.d/rc.autofs start | |||
+#fi | |||
# Start the Network Time Protocol daemon: | |||
if [ -x /etc/rc.d/rc.ntpd ]; then | |||
@@ -134,17 +85,6 @@ | |||
chmod 755 / 2> /dev/null | |||
chmod 1777 /tmp /var/tmp | |||
-# Start APM or ACPI daemon. | |||
-# If APM is enabled in the kernel, start apmd: | |||
-if [ -e /proc/apm ]; then | |||
- if [ -x /usr/sbin/apmd ]; then | |||
- echo "Starting APM daemon: /usr/sbin/apmd" | |||
- /usr/sbin/apmd | |||
- fi | |||
-elif [ -x /etc/rc.d/rc.acpid ]; then # otherwise, start acpid: | |||
- . /etc/rc.d/rc.acpid start | |||
-fi | |||
- | |||
# Update any existing icon cache files: | |||
if find /usr/share/icons 2> /dev/null | grep -q icon-theme.cache ; then | |||
for theme_dir in /usr/share/icons/* ; do | |||
@@ -177,21 +117,6 @@ | |||
sh /etc/rc.d/rc.consolekit start | |||
fi | |||
-# Start HAL: | |||
-if [ -x /etc/rc.d/rc.hald ]; then | |||
- sh /etc/rc.d/rc.hald start | |||
-fi | |||
- | |||
-# Start Bluetooth: | |||
-if [ -x /etc/rc.d/rc.bluetooth ]; then | |||
- sh /etc/rc.d/rc.bluetooth start | |||
-fi | |||
- | |||
-# Start wicd: | |||
-if [ -x /etc/rc.d/rc.wicd ]; then | |||
- sh /etc/rc.d/rc.wicd start | |||
-fi | |||
- | |||
# These GTK+/pango files need to be kept up to date for | |||
# proper input method, pixbuf loaders, and font support. | |||
if [ -x /usr/bin/update-gtk-immodules ]; then | |||
@@ -228,36 +153,6 @@ | |||
/etc/rc.d/rc.atalk | |||
fi | |||
-# Start smartd, which monitors the status of S.M.A.R.T. compatible | |||
-# hard drives and reports any problems. Note some devices (which aren't | |||
-# smart, I guess ;) will hang if probed by smartd, so it's commented out | |||
-# by default. | |||
-#if [ -x /usr/sbin/smartd ]; then | |||
-# /usr/sbin/smartd | |||
-#fi | |||
- | |||
-# If we're using udev, make /dev/cdrom and any other optical drive symlinks | |||
-# if some udev rule hasn't made them already: | |||
-if grep -wq sysfs /proc/mounts && grep -q tmpfs /proc/filesystems; then | |||
- if ! grep -wq nohotplug /proc/cmdline ; then | |||
- if [ -x /lib/udev/rc.optical-symlinks -a -x /etc/rc.d/rc.udev ]; then | |||
- /bin/sh /lib/udev/rc.optical-symlinks | |||
- fi | |||
- fi | |||
-fi | |||
- | |||
-# Monitor the UPS with genpowerd. | |||
-# To use this, uncomment this section and edit your settings in | |||
-# /etc/genpowerd.conf (serial device, UPS type, etc). For more information, | |||
-# see "man genpowerd" or the extensive documentation in the | |||
-# /usr/doc/genpower-*/ directory. | |||
-# You'll also need to configure a similar block in /etc/rc.d/rc.6 if you want | |||
-# support for stopping the UPS's inverter after the machine halts. | |||
-#if [ -x /sbin/genpowerd ]; then | |||
-# echo "Starting genpowerd daemon..." | |||
-# /sbin/genpowerd | |||
-#fi | |||
- | |||
# Turn on process accounting. To enable process accounting, make sure the | |||
# option for BSD process accounting is enabled in your kernel, and then | |||
# create the file /var/log/pacct (touch /var/log/pacct). By default, process | |||
@@ -322,11 +217,6 @@ | |||
. /etc/rc.d/rc.sendmail start | |||
fi | |||
-# Load ALSA (sound) defaults: | |||
-if [ -x /etc/rc.d/rc.alsa ]; then | |||
- . /etc/rc.d/rc.alsa | |||
-fi | |||
- | |||
# Load a custom screen font if the user has an rc.font script. | |||
if [ -x /etc/rc.d/rc.font ]; then | |||
. /etc/rc.d/rc.font | |||
@@ -358,11 +248,6 @@ | |||
. /etc/rc.d/rc.samba start | |||
fi | |||
-# Start the GPM mouse server: | |||
-if [ -x /etc/rc.d/rc.gpm ]; then | |||
- . /etc/rc.d/rc.gpm start | |||
-fi | |||
- | |||
# If there are SystemV init scripts for this runlevel, run them. | |||
if [ -x /etc/rc.d/rc.sysvinit ]; then | |||
. /etc/rc.d/rc.sysvinit | |||
diff -urNB rc.d-original/rc.inet2 rc.d/rc.inet2 | |||
--- rc.d-original/rc.inet2 2007-09-18 00:07:32.000000000 +0200 | |||
+++ rc.d/rc.inet2 2011-04-28 19:09:27.000000000 +0200 | |||
@@ -16,26 +16,6 @@ | |||
# At this point, we are ready to talk to The World... | |||
-# Mount remote (NFS) filesystems: | |||
-if cat /etc/fstab | grep -v '^#' | grep -w nfs 1> /dev/null 2> /dev/null ; then | |||
- # Start rpc.portmap, /sbin/rpc.lockd, and /sbin/rpc.statd if we find NFS | |||
- # volumes defined in /etc/fstab since these will need to be running in order | |||
- # to mount them. If they are not running, attempting to mount an NFS | |||
- # partition will cause mount to hang, or at least result in unreliable | |||
- # operation. Keep this in mind if you plan to mount unlisted NFS | |||
- # partitions... | |||
- # If you have uncommented NFS partitions in your /etc/fstab, rc.rpc is run | |||
- # whether it is set as executable or not. If you don't want to run it, | |||
- # comment the NFS partitions out in /etc/fstab or erase/rename rc.rpc. | |||
- if [ -r /etc/rc.d/rc.rpc ]; then | |||
- sh /etc/rc.d/rc.rpc start | |||
- fi | |||
- echo "Mounting remote (NFS) file systems: /sbin/mount -a -t nfs" | |||
- /sbin/mount -a -t nfs # This may be our /usr runtime! | |||
- # Show the mounted volumes: | |||
- /sbin/mount -v -t nfs | |||
-fi | |||
- | |||
# If /etc/rc.d/rc.rpc is executable, run it to load rpc.portmap, rpc.lockd, | |||
# and rpc.statd. This might be needed to mount NFS partitions that are not | |||
# listed in /etc/fstab. Starting this twice won't hurt as the script will | |||
@@ -44,23 +24,6 @@ | |||
sh /etc/rc.d/rc.rpc start | |||
fi | |||
-# Mount remote CIFS filesystems. Note that where possible, using CIFS is | |||
-# preferred over SMBFS. SMBFS is no longer actively maintained. | |||
-if cat /etc/fstab | grep -v '^#' | grep -w cifs 1> /dev/null 2> /dev/null ; then | |||
- echo "Mounting remote CIFS file systems: /sbin/mount -a -t cifs" | |||
- /sbin/mount -a -t cifs | |||
- # Show the mounted volumes: | |||
- /sbin/mount -v -t cifs | |||
-fi | |||
- | |||
-# Mount remote SMB filesystems: | |||
-if cat /etc/fstab | grep -v '^#' | grep -w smbfs 1> /dev/null 2> /dev/null ; then | |||
- echo "Mounting remote SMBFS file systems: /sbin/mount -a -t smbfs" | |||
- /sbin/mount -a -t smbfs | |||
- # Show the mounted volumes: | |||
- /sbin/mount -v -t smbfs | |||
-fi | |||
- | |||
# Start the system logger if it is not already running (maybe because /usr | |||
# is on a network partition). | |||
if [ -x /etc/rc.d/rc.syslog -a -d /var/log -a ! -r /var/run/syslogd.pid ]; then | |||
diff -urNB rc.d-original/rc.syslog rc.d/rc.syslog | |||
--- rc.d-original/rc.syslog 2010-10-21 01:03:54.000000000 +0200 | |||
+++ rc.d/rc.syslog 2011-04-28 20:20:26.000000000 +0200 | |||
@@ -5,8 +5,9 @@ | |||
syslogd_start() { | |||
if [ -x /usr/sbin/syslogd -a -x /usr/sbin/klogd ]; then | |||
- echo -n "Starting sysklogd daemons: " | |||
- echo -n "/usr/sbin/syslogd " | |||
+# echo -n "Starting sysklogd daemons: " | |||
+ echo -n "Starting /usr/sbin/syslogd " | |||
+ echo | |||
/usr/sbin/syslogd | |||
# prevent syslogd/klogd race condition on SMP kernels | |||
if ps acx | grep -q udevd ; then | |||
@@ -16,10 +17,10 @@ | |||
else | |||
sleep 1 | |||
fi | |||
- echo "/usr/sbin/klogd -c 3 -x" | |||
+# echo "/usr/sbin/klogd -c 3 -x" | |||
# '-c 3' = display level 'error' or higher messages on console | |||
# '-x' = turn off broken EIP translation | |||
- /usr/sbin/klogd -c 3 -x | |||
+# /usr/sbin/klogd -c 3 -x | |||
fi | |||
} | |||
</pre> | |||
== Slackware package list == | |||
Here is the content of the file [http://notes.sagredo.eu/sites/notes.sagredo.eu/files/linux-vserver/slack_vserver/PKG_LIST PKG_LIST] | |||
<pre> | |||
# v. 2011.01.07 | |||
# some commented pkg to avoid duplicates (man will download both man and man-pages) | |||
#[A] | |||
a/aaa_base | |||
a/aaa_elflibs | |||
a/aaa_terminfo | |||
a/acl | |||
a/attr | |||
a/bash | |||
a/bin | |||
a/bzip2 | |||
a/coreutils | |||
a/cpio | |||
a/cxxlibs | |||
a/dcron | |||
a/dialog | |||
a/etc | |||
a/file | |||
a/findutils | |||
a/gawk | |||
a/gettext | |||
a/glibc-solibs | |||
a/glibc-zoneinfo | |||
a/grep | |||
a/gzip | |||
a/infozip | |||
a/kbd | |||
a/less | |||
a/logrotate | |||
a/openssl-solibs | |||
a/patch | |||
a/pkgtools | |||
a/procps | |||
a/quota | |||
a/sed | |||
a/shadow | |||
a/slocate | |||
a/sysklogd | |||
a/sysvinit | |||
# a/sysvinit-functions | |||
# a/sysvinit-scripts | |||
a/tar | |||
a/time | |||
a/tree | |||
a/utempter | |||
a/util-linux | |||
a/xz | |||
a/which | |||
#[AP] | |||
ap/at | |||
ap/diffutils | |||
ap/groff | |||
ap/lsof | |||
ap/man | |||
# ap/man-pages | |||
ap/most | |||
ap/nano | |||
ap/sudo | |||
ap/vim | |||
#[D] | |||
d/autoconf | |||
d/automake | |||
d/binutils | |||
d/bison | |||
d/flex | |||
d/gcc-4 | |||
d/gcc-g++ | |||
d/gettext-tools | |||
d/kernel-headers | |||
d/libtool | |||
d/m4 | |||
d/make | |||
d/perl | |||
d/pkg-config | |||
#[L] | |||
l/apr | |||
l/db42 | |||
l/db44 | |||
l/freetype | |||
l/gd- | |||
l/gdbm | |||
l/glibc | |||
# l/glibc-i18n | |||
l/libjpeg | |||
l/libmcrypt | |||
l/libpng | |||
l/lzo | |||
l/mpfr | |||
l/ncurses | |||
l/pcre | |||
l/popt | |||
l/readline | |||
l/v4l-utils | |||
l/libxslt | |||
l/t1lib | |||
l/zlib | |||
#[N] | |||
n/cyrus-sasl | |||
n/inetd | |||
n/iproute2 | |||
n/iputils | |||
n/libgcrypt | |||
n/mtr | |||
n/net-tools | |||
n/netwatch | |||
n/network-scripts | |||
n/ntp | |||
n/openssh | |||
n/openssl | |||
n/tcp_wrappers | |||
n/telnet | |||
n/traceroute | |||
n/wget | |||
</pre> | |||
== Post-installation tasks == | |||
Add the following entries to "/etc/rc.d/rc.local" on the host: | |||
<pre> | |||
/etc/init.d/util-vserver start | |||
/etc/init.d/vprocunhide start | |||
</pre> | |||
Search for the following entry in the file "/etc/rc.d/rc.S": | |||
<pre> | |||
# Mount Control Groups filesystem interface: | |||
if grep -wq cgroup /proc/filesystems ; then | |||
if [ -d /sys/fs/cgroup ]; then | |||
mount -t cgroup cgroup /sys/fs/cgroup | |||
else | |||
mkdir -p /dev/cgroup | |||
mount -t cgroup cgroup /dev/cgroup | |||
fi | |||
fi | |||
</pre> | |||
and change this to: | |||
<pre> | |||
# Mount Control Groups filesystem interface: | |||
#if grep -wq cgroup /proc/filesystems ; then | |||
# if [ -d /sys/fs/cgroup ]; then | |||
# mount -t cgroup cgroup /sys/fs/cgroup | |||
# else | |||
# mkdir -p /dev/cgroup | |||
# mount -t cgroup cgroup /dev/cgroup | |||
# fi | |||
#fi | |||
</pre> | |||
You will have to reboot your host afterwards. | |||
[[Category:Installation]] | |||
Latest revision as of 19:12, 21 October 2011
What follows was tested on a Slackware 13.37 and 13.1 guest. I assume you have a Linux-Vserver host working. If not, have a look at this page.
Download the patch and the installer script[edit]
tar xzf slack_vserver.tar.gz cd slack_vserver ls
- PKG_LIST is the package list to be installed in the guest
- slackware_pkg/ is the folder were the packages ("*.tgz" or "*.txz") to be installed are stored. This folder will be automatically created by these scripts.
- download_slack.sh is a script that you can use to download all the packages in the PKG_LIST list. If you use this scriptlet all the packages will be stored in the slackware_pkg sub-folder.
- make_slack_vserver.sh is a shell script that you have to adjust. It installs the guest.
- slackware-13.37.patch is the patch which modifies /etc/rc.d/rc.6 /etc/rc.d/rc.M and /etc/rc.d/rc.inet2. It must be applied after the creation of the guest. In the patch I switched off all the mounts and executables that are related to the hardware.
- rc is the startup script for the virtual server. It will be automatically copied in /etc/rc.d/init.d/rc
# more rc #!/bin/bash if [ "$1" == "3" ]; then /etc/rc.d/rc.M elif [ "$1" == "6" ]; then /etc/rc.d/rc.6 else echo "Invalid level." exit 1 fi
Download the slack packages[edit]
First of all select a minimal set of packages to be installed on the virtual server. This list of 109 packages is based on the Minimal System reported at http://slackwiki.org/Minimal_System without all hardware, kernel and multimedia related packages. The install leads to a guest of about 448M of size.
I assume that the packages to be installed are stored in the slackware_pkg folder. If not, adjust its location editing the make_slack_vserver.sh script.
You can download my minimal set of packages running the shell script download_slack_pkg.sh
#!/bin/bash
#
# v. 2011.01.07
# Put here your favourite Slackware repository
SRC="ftp://ftp.slackware.no/slackware/slackware-13.37/slackware/" # 32-bit
#SRC="ftp://ftp.slackware.no/slackware/slackware64-13.37/slackware64/" # 64-bit
LIST="../PKG_LIST"
cd slackware_pkg
if [ -f $LIST ]; then
while read line
do
wget "$SRC$line*.t?z"
done < $LIST
else
echo "Can't find $LIST file."
exit 1
fi
rm index.html*
Adjust the package PKG_LIST, enter your favorite ftp server and run from the command line
./download_slack_pkg.sh
Make the guest[edit]
Now let's create the guest and install the packages. As you know you must choose at least a "name", a "context" and an ip. In addition you have to modify most of the rc.* startup scripts removing all the hardware related daemons, and finally replace the /dev dir.
This is done running the script make_slack_vserver.sh:
#!/bin/bash
#
# v. 2011.04.28
# Author: Roberto Puzzanghera
#
# This script installs a Slackware guest into a linux-vserver host (http://linux-vserver.org)
#
# Comments are welcome :-)
# More info here: http://notes.sagredo.eu/node/7
if [ $# != 1 ]; then
echo "usage: $0 <server-name>"
exit 1
fi
# adjust this to where your things live
NAME=$1
HOSTNAME=$NAME.myserver.net
IP=10.0.0.149
INTERFACE=eth0:$IP/24
CONTEXT=1011
VERSION=13.37 # Slackware version
# where is the vservers dir? default is /vservers
VDIR="/vservers"
# the directory where you unpacked slack_vserver.tar.gz
# $PWD should work, otherwise put /path/to/slack_vserver
SETUP=$PWD
# the directory where you downloaded the slackware packages
PACKAGES="$SETUP/slackware_pkg"
# the path to rc script file (leave as is)
RC="$SETUP/rc"
################### end configuration
# sanity check
if [ ! -d "$VDIR" ]; then
echo
echo "Can't find VDIR dir: $VDIR"
echo "Exiting"
echo
exit 1
fi
if [ ! -d "$SETUP" ]; then
echo
echo "Can't find SETUP dir: $SETUP"
echo "Exiting"
echo
exit 1
fi
if [ ! -d "$PACKAGES" ]; then
echo
echo "Can't find PACKAGES dir: $PACKAGES"
echo "Exiting"
echo
exit 1
fi
if [ ! -f "$RC" ]; then
echo
echo "Can't find RC path: $RC"
echo "Exiting"
echo
exit 1
fi
# if everything is ok start the install
echo
read -p "press any key to make skeleton..."
vserver ${NAME} build -m skeleton \
--hostname ${HOSTNAME} \
--interface ${INTERFACE} \
--context $CONTEXT \
--flags lock,virt_mem,virt_uptime,virt_cpu,virt_load,sched_hard,hide_netif \
--initstyle sysv
echo "...done"
echo
read -p "press any key to move the /dev folder to a temp dir the /dev folder..."
mv $VDIR/$NAME/dev $VDIR/$NAME/dev2
echo
read -p "press any key to install packages..."
cd $PACKAGES
installpkg -root $VDIR/$NAME *.t?z;
echo "...done"
echo
echo
read -p "press any key to copy the rc script to /etc/rc.d/init.d..."
echo
echo "copying rc to /etc/rc.d/init.d/rc"
cp -p $RC $VDIR/$NAME/etc/rc.d/init.d/
echo "...done"
echo
echo "removing x flag to rc.inet1 rc.loop and rc.sshd"
chmod -x $VDIR/$NAME/etc/rc.d/rc.inet1 $VDIR/$NAME/etc/rc.d/rc.loop $VDIR/$NAME/etc/rc.d/rc.sshd
echo "...done"
echo
echo "trying to adjust HOSTNAME, hosts, resolv.conf, profile. Check later..."
cp /etc/resolv.conf $VDIR/$NAME/etc/
cp /etc/localtime $VDIR/$NAME/etc/
rm $VDIR/$NAME/etc/profile
cp /etc/profile $VDIR/$NAME/etc/
echo $HOSTNAME > $VDIR/$NAME/etc/HOSTNAME
echo "127.0.0.1 localhost" > $VDIR/$NAME/etc/hosts
echo "$IP $HOSTNAME $NAME" >> $VDIR/$NAME/etc/hosts
touch $VDIR/$NAME/etc/mtab
touch $VDIR/$NAME/etc/fstab
echo "...done"
echo
read -p "press any key to restore /dev2 to /dev"
rm -r $VDIR/$NAME/dev
mv $VDIR/$NAME/dev2 $VDIR/$NAME/dev
echo
echo -n "Do you want that I apply the patch for you y/n? [y] "
read VAR_PATCH
if [ "$VAR_PATCH" = 'y' ] || [ "$VAR_PATCH" = '' ]; then
cd $VDIR/$NAME/etc/rc.d
patch -p1 < $SETUP/linux-vserver_slackware-$VERSION.patch
echo "patch applyed."
echo
echo "You can start and enter the virtual server typing: "
echo
echo "vserver $NAME start"
echo "vserver $NAME enter"
else
echo
echo "DON'T FORGET to patch /etc/rc.d as follows: "
echo
echo "cd $VDIR/$NAME/etc/rc.d"
echo "patch -p1 < $SETUP/linux-vserver_slackware-$VERSION.patch"
fi
echo
echo "More info on http://notes.sagredo.eu/node/7"
echo
Apply the patch and start the guest[edit]
The script itsself can install the patch for you. Anyway this is how to apply the patch by yourself:
cd /vservers/vserver_name/etc/rc.d patch -p1 < /path/to/slack_vserver/slackware-13.37.patch
Now you can start the newly created virtual server:
vserver <vserver_name> start vserver <vserver_name> enter
Contact[edit]
Any comments/suggestions/questions to roberto dot puzzanghera at sagredo dot eu, [1] or the talk page of this wiki page.
Patch used[edit]
Patch for Slackware 13.37 guest on a Linux-Vserver host
========================================================
by Roberto Puzzanghera - http://notes.sagredo.eu
version: 2011.04.28
========================================================
diff -urNB rc.d-original/rc.0 rc.d/rc.0
--- rc.d-original/rc.0 2011-04-16 23:14:14.000000000 +0200
+++ rc.d/rc.0 2011-04-28 15:01:59.000000000 +0200
@@ -37,22 +37,6 @@
;;
esac
-# Save the system time to the hardware clock using hwclock --systohc.
-if [ -x /sbin/hwclock ]; then
- # Check for a broken motherboard RTC clock (where ioports for rtc are
- # unknown) to prevent hwclock causing a hang:
- if ! grep -q -w rtc /proc/ioports ; then
- CLOCK_OPT="--directisa"
- fi
- if grep -q "^UTC" /etc/hardwareclock 2> /dev/null ; then
- echo "Saving system time to the hardware clock (UTC)."
- /sbin/hwclock $CLOCK_OPT --utc --systohc
- else
- echo "Saving system time to the hardware clock (localtime)."
- /sbin/hwclock $CLOCK_OPT --localtime --systohc
- fi
-fi
-
# Run any local shutdown scripts:
if [ -x /etc/rc.d/rc.local_shutdown ]; then
/etc/rc.d/rc.local_shutdown stop
@@ -98,66 +82,11 @@
sh /etc/rc.d/rc.messagebus stop
fi
-# Kill any processes (typically gam) that would otherwise prevent
-# unmounting NFS volumes:
-unset FUSER_DELAY
-for dir in $(/bin/mount | grep 'type nfs' | cut -d ' ' -f 3 ) ; do
- echo "Killing processes holding NFS mount $dir open..."
- # Background this to prevent fuser from also blocking shutdown:
- /usr/bin/fuser -k -m $dir &
- FUSER_DELAY=5
-done
-# If fuser was run, let it have some delay:
-if [ ! -z "$FUSER_DELAY" ]; then
- sleep $FUSER_DELAY
-fi
-
-# Unmount any NFS, SMB, or CIFS filesystems:
-echo "Unmounting remote filesystems."
-/bin/umount -v -a -l -f -r -t nfs,smbfs,cifs
-
-# Try to shut down pppd:
-PS="$(ps ax)"
-if echo "$PS" | /bin/grep -q -w pppd ; then
- if [ -x /usr/sbin/ppp-off ]; then
- /usr/sbin/ppp-off
- fi
-fi
-
-# Bring down the networking system, but first make sure that this
-# isn't a diskless client with the / partition mounted via NFS:
-if ! /bin/mount | /bin/grep -q 'on / type nfs' ; then
- if [ -x /etc/rc.d/rc.inet1 ]; then
- . /etc/rc.d/rc.inet1 stop
- fi
-fi
-
-# In case dhcpcd might have been manually started on the command line,
-# look for the .pid file, and shut dhcpcd down if it's found:
-if /bin/ls /etc/dhcpc/*.pid 1> /dev/null 2> /dev/null ; then
- /sbin/dhcpcd -k 1> /dev/null 2> /dev/null
- # A little time for /etc/resolv.conf and/or other files to
- # restore themselves.
- sleep 2
-fi
-
-# Shut down PCMCIA devices:
-if [ -x /etc/rc.d/rc.pcmcia ]; then
- . /etc/rc.d/rc.pcmcia stop
- # The cards might need a little extra time here to deactivate:
- /bin/sleep 5
-fi
-
# Turn off process accounting:
if [ -x /sbin/accton -a -r /var/log/pacct ]; then
/sbin/accton off
fi
-# Terminate acpid before syslog:
-if [ -x /etc/rc.d/rc.acpid -a -r /var/run/acpid.pid ]; then # quit
- . /etc/rc.d/rc.acpid stop
-fi
-
# Kill all processes.
# INIT is supposed to handle this entirely now, but this didn't always
# work correctly without this second pass at killing off the processes.
@@ -177,16 +106,6 @@
fi
fi
-# Carry a random seed between reboots.
-echo "Saving random seed from /dev/urandom in /etc/random-seed."
-# Use the pool size from /proc, or 512 bytes:
-if [ -r /proc/sys/kernel/random/poolsize ]; then
- /bin/dd if=/dev/urandom of=/etc/random-seed count=1 bs=$(cat /proc/sys/kernel/random/poolsize) 2> /dev/null
-else
- /bin/dd if=/dev/urandom of=/etc/random-seed count=1 bs=512 2> /dev/null
-fi
-/bin/chmod 600 /etc/random-seed
-
# Before unmounting file systems write a reboot or halt record to wtmp.
$command -w
@@ -195,17 +114,6 @@
rm -f /var/lock/subsys/*
fi
-# Turn off swap:
-echo "Turning off swap."
-/sbin/swapoff -a
-/bin/sync
-
-echo "Unmounting local file systems."
-/bin/umount -v -a -t no,proc,sysfs
-
-echo "Remounting root filesystem read-only."
-/bin/mount -v -n -o remount,ro /
-
# This never hurts:
/bin/sync
@@ -230,45 +138,10 @@
done
fi
-# Deactivate LVM volume groups:
-if [ -r /etc/lvmtab -o -d /etc/lvm/backup ]; then
- echo "Deactivating LVM volume groups:"
- /sbin/vgchange -an --ignorelockingfailure
-fi
-
# This never hurts again (especially since root-on-LVM always fails
# to deactivate the / logical volume... but at least it was
# remounted as read-only first)
/bin/sync
-# sleep 3 fixes problems with some hard drives that don't
-# otherwise finish syncing before reboot or poweroff
-/bin/sleep 3
-
# This is to ensure all processes have completed on SMP machines:
wait
-
-if [ -x /sbin/genpowerd ]; then
- # See if this is a powerfail situation:
- if /bin/egrep -q "FAIL|SCRAM" /etc/upsstatus 2> /dev/null ; then
- # Signal UPS to shut off the inverter:
- /sbin/genpowerd -k
- if [ ! $? = 0 ]; then
- echo
- echo "There was an error signaling the UPS."
- echo "Perhaps you need to edit /etc/genpowerd.conf to configure"
- echo "the serial line and UPS type."
- # Wasting 15 seconds of precious power:
- /bin/sleep 15
- fi
- fi
-fi
-
-# Now halt (poweroff with APM or ACPI enabled kernels) or reboot.
-if [ "$command" = "reboot" ]; then
- echo "Rebooting."
- /sbin/reboot
-else
- /sbin/poweroff
-fi
-
diff -urNB rc.d-original/rc.6 rc.d/rc.6
--- rc.d-original/rc.6 2011-04-16 23:14:14.000000000 +0200
+++ rc.d/rc.6 2011-04-28 15:01:59.000000000 +0200
@@ -37,22 +37,6 @@
;;
esac
-# Save the system time to the hardware clock using hwclock --systohc.
-if [ -x /sbin/hwclock ]; then
- # Check for a broken motherboard RTC clock (where ioports for rtc are
- # unknown) to prevent hwclock causing a hang:
- if ! grep -q -w rtc /proc/ioports ; then
- CLOCK_OPT="--directisa"
- fi
- if grep -q "^UTC" /etc/hardwareclock 2> /dev/null ; then
- echo "Saving system time to the hardware clock (UTC)."
- /sbin/hwclock $CLOCK_OPT --utc --systohc
- else
- echo "Saving system time to the hardware clock (localtime)."
- /sbin/hwclock $CLOCK_OPT --localtime --systohc
- fi
-fi
-
# Run any local shutdown scripts:
if [ -x /etc/rc.d/rc.local_shutdown ]; then
/etc/rc.d/rc.local_shutdown stop
@@ -98,66 +82,11 @@
sh /etc/rc.d/rc.messagebus stop
fi
-# Kill any processes (typically gam) that would otherwise prevent
-# unmounting NFS volumes:
-unset FUSER_DELAY
-for dir in $(/bin/mount | grep 'type nfs' | cut -d ' ' -f 3 ) ; do
- echo "Killing processes holding NFS mount $dir open..."
- # Background this to prevent fuser from also blocking shutdown:
- /usr/bin/fuser -k -m $dir &
- FUSER_DELAY=5
-done
-# If fuser was run, let it have some delay:
-if [ ! -z "$FUSER_DELAY" ]; then
- sleep $FUSER_DELAY
-fi
-
-# Unmount any NFS, SMB, or CIFS filesystems:
-echo "Unmounting remote filesystems."
-/bin/umount -v -a -l -f -r -t nfs,smbfs,cifs
-
-# Try to shut down pppd:
-PS="$(ps ax)"
-if echo "$PS" | /bin/grep -q -w pppd ; then
- if [ -x /usr/sbin/ppp-off ]; then
- /usr/sbin/ppp-off
- fi
-fi
-
-# Bring down the networking system, but first make sure that this
-# isn't a diskless client with the / partition mounted via NFS:
-if ! /bin/mount | /bin/grep -q 'on / type nfs' ; then
- if [ -x /etc/rc.d/rc.inet1 ]; then
- . /etc/rc.d/rc.inet1 stop
- fi
-fi
-
-# In case dhcpcd might have been manually started on the command line,
-# look for the .pid file, and shut dhcpcd down if it's found:
-if /bin/ls /etc/dhcpc/*.pid 1> /dev/null 2> /dev/null ; then
- /sbin/dhcpcd -k 1> /dev/null 2> /dev/null
- # A little time for /etc/resolv.conf and/or other files to
- # restore themselves.
- sleep 2
-fi
-
-# Shut down PCMCIA devices:
-if [ -x /etc/rc.d/rc.pcmcia ]; then
- . /etc/rc.d/rc.pcmcia stop
- # The cards might need a little extra time here to deactivate:
- /bin/sleep 5
-fi
-
# Turn off process accounting:
if [ -x /sbin/accton -a -r /var/log/pacct ]; then
/sbin/accton off
fi
-# Terminate acpid before syslog:
-if [ -x /etc/rc.d/rc.acpid -a -r /var/run/acpid.pid ]; then # quit
- . /etc/rc.d/rc.acpid stop
-fi
-
# Kill all processes.
# INIT is supposed to handle this entirely now, but this didn't always
# work correctly without this second pass at killing off the processes.
@@ -177,16 +106,6 @@
fi
fi
-# Carry a random seed between reboots.
-echo "Saving random seed from /dev/urandom in /etc/random-seed."
-# Use the pool size from /proc, or 512 bytes:
-if [ -r /proc/sys/kernel/random/poolsize ]; then
- /bin/dd if=/dev/urandom of=/etc/random-seed count=1 bs=$(cat /proc/sys/kernel/random/poolsize) 2> /dev/null
-else
- /bin/dd if=/dev/urandom of=/etc/random-seed count=1 bs=512 2> /dev/null
-fi
-/bin/chmod 600 /etc/random-seed
-
# Before unmounting file systems write a reboot or halt record to wtmp.
$command -w
@@ -195,17 +114,6 @@
rm -f /var/lock/subsys/*
fi
-# Turn off swap:
-echo "Turning off swap."
-/sbin/swapoff -a
-/bin/sync
-
-echo "Unmounting local file systems."
-/bin/umount -v -a -t no,proc,sysfs
-
-echo "Remounting root filesystem read-only."
-/bin/mount -v -n -o remount,ro /
-
# This never hurts:
/bin/sync
@@ -230,45 +138,10 @@
done
fi
-# Deactivate LVM volume groups:
-if [ -r /etc/lvmtab -o -d /etc/lvm/backup ]; then
- echo "Deactivating LVM volume groups:"
- /sbin/vgchange -an --ignorelockingfailure
-fi
-
# This never hurts again (especially since root-on-LVM always fails
# to deactivate the / logical volume... but at least it was
# remounted as read-only first)
/bin/sync
-# sleep 3 fixes problems with some hard drives that don't
-# otherwise finish syncing before reboot or poweroff
-/bin/sleep 3
-
# This is to ensure all processes have completed on SMP machines:
wait
-
-if [ -x /sbin/genpowerd ]; then
- # See if this is a powerfail situation:
- if /bin/egrep -q "FAIL|SCRAM" /etc/upsstatus 2> /dev/null ; then
- # Signal UPS to shut off the inverter:
- /sbin/genpowerd -k
- if [ ! $? = 0 ]; then
- echo
- echo "There was an error signaling the UPS."
- echo "Perhaps you need to edit /etc/genpowerd.conf to configure"
- echo "the serial line and UPS type."
- # Wasting 15 seconds of precious power:
- /bin/sleep 15
- fi
- fi
-fi
-
-# Now halt (poweroff with APM or ACPI enabled kernels) or reboot.
-if [ "$command" = "reboot" ]; then
- echo "Rebooting."
- /sbin/reboot
-else
- /sbin/poweroff
-fi
-
diff -urNB rc.d-original/rc.M rc.d/rc.M
--- rc.d-original/rc.M 2011-03-22 07:15:15.000000000 +0100
+++ rc.d/rc.M 2011-04-28 19:07:47.000000000 +0200
@@ -20,10 +20,6 @@
/sbin/ldconfig &
fi
-# Screen blanks after 15 minutes idle time, and powers down in one hour
-# if the kernel supports APM or ACPI power management:
-/bin/setterm -blank 15 -powersave powerdown -powerdown 60
-
# Set the hostname.
if [ -r /etc/HOSTNAME ]; then
/bin/hostname $(cat /etc/HOSTNAME | cut -f1 -d .)
@@ -47,31 +43,6 @@
# Save the contents of 'dmesg':
/bin/dmesg -s 65536 > /var/log/dmesg
-# Initialize PCMCIA devices:
-#
-# NOTE: This used to be started near the top of rc.S so that PCMCIA devices
-# could be fsck'ed along with the other drives. This had some unfortunate
-# side effects, however, since root isn't yet read-write, and /var might not
-# even be mounted the .pid files can't be correctly written in /var/run and
-# the pcmcia system can't be correctly shut down. If you want some PCMCIA
-# partition to be mounted at boot (or when the card is inserted) then add
-# the appropriate lines to /etc/pcmcia/scsi.opts.
-#
-# Note that the stuff in /etc/pcmcia/ is only for 2.4.x kernels using
-# 16-bit PCMCIA cards (not 32-bit Cardbus cards!). For example, with a
-# wireless card you might need to set options in /etc/pcmcia OR in
-# /etc/rc.d/rc.wireless.conf, or even in /etc/rc.d/rc.inet1.conf (with
-# extra options if needed for the encryption key, ESSID, etc.)
-#
-# Hopefully this situation will be unified in the future, but for now
-# that's how it is...
-#
-if [ -x /etc/rc.d/rc.pcmcia ]; then
- . /etc/rc.d/rc.pcmcia start
- # The cards might need a little extra time here to initialize.
- sleep 5
-fi
-
# Start the system logger.
if [ -x /etc/rc.d/rc.syslog -a -x /usr/sbin/syslogd -a -d /var/log ]; then
. /etc/rc.d/rc.syslog start
@@ -83,38 +54,18 @@
/usr/bin/fc-cache -f &
fi
-# If we are returning from single-user mode we will need to restart
-# udevd on systems that use udev:
-if grep -wq sysfs /proc/mounts && grep -q tmpfs /proc/filesystems ; then
- if ! grep -wq nohotplug /proc/cmdline ; then
- if [ -x /etc/rc.d/rc.udev ]; then
- /bin/sh /etc/rc.d/rc.udev start
- fi
- fi
-fi
-
-# Initialize the networking hardware.
-if [ -x /etc/rc.d/rc.inet1 ]; then
- . /etc/rc.d/rc.inet1
-fi
-
-# Look for additional USB/SCSI/IEEE1394/etc devices on multiple LUNs:
-if [ -x /etc/rc.d/rc.scanluns ]; then
- . /etc/rc.d/rc.scanluns
-fi
-
# Start networking daemons:
if [ -x /etc/rc.d/rc.inet2 ]; then
. /etc/rc.d/rc.inet2
fi
# Mount any additional filesystem types that haven't already been mounted:
-mount -a -v 2> /dev/null | grep -v "already mounted"
+#mount -a -v 2> /dev/null | grep -v "already mounted"
# Start the Control Script for automounter:
-if [ -x /etc/rc.d/rc.autofs ]; then
- sh /etc/rc.d/rc.autofs start
-fi
+#if [ -x /etc/rc.d/rc.autofs ]; then
+# sh /etc/rc.d/rc.autofs start
+#fi
# Start the Network Time Protocol daemon:
if [ -x /etc/rc.d/rc.ntpd ]; then
@@ -134,17 +85,6 @@
chmod 755 / 2> /dev/null
chmod 1777 /tmp /var/tmp
-# Start APM or ACPI daemon.
-# If APM is enabled in the kernel, start apmd:
-if [ -e /proc/apm ]; then
- if [ -x /usr/sbin/apmd ]; then
- echo "Starting APM daemon: /usr/sbin/apmd"
- /usr/sbin/apmd
- fi
-elif [ -x /etc/rc.d/rc.acpid ]; then # otherwise, start acpid:
- . /etc/rc.d/rc.acpid start
-fi
-
# Update any existing icon cache files:
if find /usr/share/icons 2> /dev/null | grep -q icon-theme.cache ; then
for theme_dir in /usr/share/icons/* ; do
@@ -177,21 +117,6 @@
sh /etc/rc.d/rc.consolekit start
fi
-# Start HAL:
-if [ -x /etc/rc.d/rc.hald ]; then
- sh /etc/rc.d/rc.hald start
-fi
-
-# Start Bluetooth:
-if [ -x /etc/rc.d/rc.bluetooth ]; then
- sh /etc/rc.d/rc.bluetooth start
-fi
-
-# Start wicd:
-if [ -x /etc/rc.d/rc.wicd ]; then
- sh /etc/rc.d/rc.wicd start
-fi
-
# These GTK+/pango files need to be kept up to date for
# proper input method, pixbuf loaders, and font support.
if [ -x /usr/bin/update-gtk-immodules ]; then
@@ -228,36 +153,6 @@
/etc/rc.d/rc.atalk
fi
-# Start smartd, which monitors the status of S.M.A.R.T. compatible
-# hard drives and reports any problems. Note some devices (which aren't
-# smart, I guess ;) will hang if probed by smartd, so it's commented out
-# by default.
-#if [ -x /usr/sbin/smartd ]; then
-# /usr/sbin/smartd
-#fi
-
-# If we're using udev, make /dev/cdrom and any other optical drive symlinks
-# if some udev rule hasn't made them already:
-if grep -wq sysfs /proc/mounts && grep -q tmpfs /proc/filesystems; then
- if ! grep -wq nohotplug /proc/cmdline ; then
- if [ -x /lib/udev/rc.optical-symlinks -a -x /etc/rc.d/rc.udev ]; then
- /bin/sh /lib/udev/rc.optical-symlinks
- fi
- fi
-fi
-
-# Monitor the UPS with genpowerd.
-# To use this, uncomment this section and edit your settings in
-# /etc/genpowerd.conf (serial device, UPS type, etc). For more information,
-# see "man genpowerd" or the extensive documentation in the
-# /usr/doc/genpower-*/ directory.
-# You'll also need to configure a similar block in /etc/rc.d/rc.6 if you want
-# support for stopping the UPS's inverter after the machine halts.
-#if [ -x /sbin/genpowerd ]; then
-# echo "Starting genpowerd daemon..."
-# /sbin/genpowerd
-#fi
-
# Turn on process accounting. To enable process accounting, make sure the
# option for BSD process accounting is enabled in your kernel, and then
# create the file /var/log/pacct (touch /var/log/pacct). By default, process
@@ -322,11 +217,6 @@
. /etc/rc.d/rc.sendmail start
fi
-# Load ALSA (sound) defaults:
-if [ -x /etc/rc.d/rc.alsa ]; then
- . /etc/rc.d/rc.alsa
-fi
-
# Load a custom screen font if the user has an rc.font script.
if [ -x /etc/rc.d/rc.font ]; then
. /etc/rc.d/rc.font
@@ -358,11 +248,6 @@
. /etc/rc.d/rc.samba start
fi
-# Start the GPM mouse server:
-if [ -x /etc/rc.d/rc.gpm ]; then
- . /etc/rc.d/rc.gpm start
-fi
-
# If there are SystemV init scripts for this runlevel, run them.
if [ -x /etc/rc.d/rc.sysvinit ]; then
. /etc/rc.d/rc.sysvinit
diff -urNB rc.d-original/rc.inet2 rc.d/rc.inet2
--- rc.d-original/rc.inet2 2007-09-18 00:07:32.000000000 +0200
+++ rc.d/rc.inet2 2011-04-28 19:09:27.000000000 +0200
@@ -16,26 +16,6 @@
# At this point, we are ready to talk to The World...
-# Mount remote (NFS) filesystems:
-if cat /etc/fstab | grep -v '^#' | grep -w nfs 1> /dev/null 2> /dev/null ; then
- # Start rpc.portmap, /sbin/rpc.lockd, and /sbin/rpc.statd if we find NFS
- # volumes defined in /etc/fstab since these will need to be running in order
- # to mount them. If they are not running, attempting to mount an NFS
- # partition will cause mount to hang, or at least result in unreliable
- # operation. Keep this in mind if you plan to mount unlisted NFS
- # partitions...
- # If you have uncommented NFS partitions in your /etc/fstab, rc.rpc is run
- # whether it is set as executable or not. If you don't want to run it,
- # comment the NFS partitions out in /etc/fstab or erase/rename rc.rpc.
- if [ -r /etc/rc.d/rc.rpc ]; then
- sh /etc/rc.d/rc.rpc start
- fi
- echo "Mounting remote (NFS) file systems: /sbin/mount -a -t nfs"
- /sbin/mount -a -t nfs # This may be our /usr runtime!
- # Show the mounted volumes:
- /sbin/mount -v -t nfs
-fi
-
# If /etc/rc.d/rc.rpc is executable, run it to load rpc.portmap, rpc.lockd,
# and rpc.statd. This might be needed to mount NFS partitions that are not
# listed in /etc/fstab. Starting this twice won't hurt as the script will
@@ -44,23 +24,6 @@
sh /etc/rc.d/rc.rpc start
fi
-# Mount remote CIFS filesystems. Note that where possible, using CIFS is
-# preferred over SMBFS. SMBFS is no longer actively maintained.
-if cat /etc/fstab | grep -v '^#' | grep -w cifs 1> /dev/null 2> /dev/null ; then
- echo "Mounting remote CIFS file systems: /sbin/mount -a -t cifs"
- /sbin/mount -a -t cifs
- # Show the mounted volumes:
- /sbin/mount -v -t cifs
-fi
-
-# Mount remote SMB filesystems:
-if cat /etc/fstab | grep -v '^#' | grep -w smbfs 1> /dev/null 2> /dev/null ; then
- echo "Mounting remote SMBFS file systems: /sbin/mount -a -t smbfs"
- /sbin/mount -a -t smbfs
- # Show the mounted volumes:
- /sbin/mount -v -t smbfs
-fi
-
# Start the system logger if it is not already running (maybe because /usr
# is on a network partition).
if [ -x /etc/rc.d/rc.syslog -a -d /var/log -a ! -r /var/run/syslogd.pid ]; then
diff -urNB rc.d-original/rc.syslog rc.d/rc.syslog
--- rc.d-original/rc.syslog 2010-10-21 01:03:54.000000000 +0200
+++ rc.d/rc.syslog 2011-04-28 20:20:26.000000000 +0200
@@ -5,8 +5,9 @@
syslogd_start() {
if [ -x /usr/sbin/syslogd -a -x /usr/sbin/klogd ]; then
- echo -n "Starting sysklogd daemons: "
- echo -n "/usr/sbin/syslogd "
+# echo -n "Starting sysklogd daemons: "
+ echo -n "Starting /usr/sbin/syslogd "
+ echo
/usr/sbin/syslogd
# prevent syslogd/klogd race condition on SMP kernels
if ps acx | grep -q udevd ; then
@@ -16,10 +17,10 @@
else
sleep 1
fi
- echo "/usr/sbin/klogd -c 3 -x"
+# echo "/usr/sbin/klogd -c 3 -x"
# '-c 3' = display level 'error' or higher messages on console
# '-x' = turn off broken EIP translation
- /usr/sbin/klogd -c 3 -x
+# /usr/sbin/klogd -c 3 -x
fi
}
Slackware package list[edit]
Here is the content of the file PKG_LIST
# v. 2011.01.07 # some commented pkg to avoid duplicates (man will download both man and man-pages) #[A] a/aaa_base a/aaa_elflibs a/aaa_terminfo a/acl a/attr a/bash a/bin a/bzip2 a/coreutils a/cpio a/cxxlibs a/dcron a/dialog a/etc a/file a/findutils a/gawk a/gettext a/glibc-solibs a/glibc-zoneinfo a/grep a/gzip a/infozip a/kbd a/less a/logrotate a/openssl-solibs a/patch a/pkgtools a/procps a/quota a/sed a/shadow a/slocate a/sysklogd a/sysvinit # a/sysvinit-functions # a/sysvinit-scripts a/tar a/time a/tree a/utempter a/util-linux a/xz a/which #[AP] ap/at ap/diffutils ap/groff ap/lsof ap/man # ap/man-pages ap/most ap/nano ap/sudo ap/vim #[D] d/autoconf d/automake d/binutils d/bison d/flex d/gcc-4 d/gcc-g++ d/gettext-tools d/kernel-headers d/libtool d/m4 d/make d/perl d/pkg-config #[L] l/apr l/db42 l/db44 l/freetype l/gd- l/gdbm l/glibc # l/glibc-i18n l/libjpeg l/libmcrypt l/libpng l/lzo l/mpfr l/ncurses l/pcre l/popt l/readline l/v4l-utils l/libxslt l/t1lib l/zlib #[N] n/cyrus-sasl n/inetd n/iproute2 n/iputils n/libgcrypt n/mtr n/net-tools n/netwatch n/network-scripts n/ntp n/openssh n/openssl n/tcp_wrappers n/telnet n/traceroute n/wget
Post-installation tasks[edit]
Add the following entries to "/etc/rc.d/rc.local" on the host:
/etc/init.d/util-vserver start /etc/init.d/vprocunhide start
Search for the following entry in the file "/etc/rc.d/rc.S":
# Mount Control Groups filesystem interface:
if grep -wq cgroup /proc/filesystems ; then
if [ -d /sys/fs/cgroup ]; then
mount -t cgroup cgroup /sys/fs/cgroup
else
mkdir -p /dev/cgroup
mount -t cgroup cgroup /dev/cgroup
fi
fi
and change this to:
# Mount Control Groups filesystem interface: #if grep -wq cgroup /proc/filesystems ; then # if [ -d /sys/fs/cgroup ]; then # mount -t cgroup cgroup /sys/fs/cgroup # else # mkdir -p /dev/cgroup # mount -t cgroup cgroup /dev/cgroup # fi #fi
You will have to reboot your host afterwards.