Difference between revisions of "Installation on Slackware 13"

From Linux-VServer

Jump to: navigation, search
(Make the guest)
(+cat)
 
(25 intermediate revisions by 2 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 11: Line 11:
 
</pre>
 
</pre>
  
* [http://notes.sagredo.eu/sites/notes.sagredo.eu/files/linux-vserver/PKG_LIST PKG_LIST] is the package list to be installed in the guest
+
* [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 (txz) to be installed are stored.
+
* 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 PKG_LIST. If you use this scriptlet all the package will be stored in the slackware_pkg sub-folder.
+
* [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 the shell script that you have to adjust. It installs the guest.
+
* [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.1.patch] is the patch which modify ''rc.0'' ''rc.6'' ''rc.M rc.K'' and ''rc.inet2''. It must be applyed after the creation of the guest. In the patch I switched off all the mounts and executable that are related to the hardware.
+
* [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''
 
* ''rc'' is the startup script for the virtual server. It will be automatically copied in ''/etc/rc.d/init.d/rc''
 
<pre>
 
<pre>
Line 34: Line 34:
 
== Download the slack packages ==
 
== Download the slack packages ==
  
First of all select a minimal set of packages to be installed on the virtual server. [http://notes.sagredo.eu/sites/notes.sagredo.eu/files/linux-vserver/PKG_LIST This list] of '''108 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'''.
+
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.
 
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.
Line 45: Line 45:
 
# Put here your favourite Slackware repository
 
# Put here your favourite Slackware repository
  
SRC="ftp://ftp.slackware.no/slackware/slackware-13.1/slackware/"      # 32-bit
+
SRC="ftp://ftp.slackware.no/slackware/slackware-13.37/slackware/"      # 32-bit
#SRC="ftp://ftp.slackware.no/slackware/slackware64-13.1/slackware64/"  # 64-bit
+
#SRC="ftp://ftp.slackware.no/slackware/slackware64-13.37/slackware64/"  # 64-bit
  
 
LIST="../PKG_LIST"
 
LIST="../PKG_LIST"
Line 65: Line 65:
 
</pre>
 
</pre>
  
Adjust the package [http://notes.sagredo.eu/sites/notes.sagredo.eu/files/linux-vserver/PKG_LIST PKG_LIST], enter your favorite ftp server and run from the command line
+
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>
 
<pre>
 
./download_slack_pkg.sh
 
./download_slack_pkg.sh
Line 78: Line 78:
 
#!/bin/bash
 
#!/bin/bash
 
#
 
#
# v. 2011.01.07
+
# v. 2011.04.28
# Put here your favourite Slackware repository
+
# Author: Roberto Puzzanghera
 
+
SRC="ftp://ftp.slackware.no/slackware/slackware-13.1/slackware/"      # 32-bit
+
#SRC="ftp://ftp.slackware.no/slackware/slackware64-13.1/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*
+
root@myaruba:/backup/linux-vserver_setup/slack_vserver# ls
+
PKG_LIST  download_slack_pkg.sh*  make_slack_vserver.sh*  rc*  slackware-13.1.patch  slackware_pkg/  version
+
root@myaruba:/backup/linux-vserver_setup/slack_vserver# more make_slack_vserver.sh
+
#!/bin/bash
+
 
#
 
#
# v. 2011.01.07
+
# 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
 
+
 
if [ $# != 1 ]; then
 
if [ $# != 1 ]; then
 
   echo "usage: $0 <server-name>"
 
   echo "usage: $0 <server-name>"
 
   exit 1
 
   exit 1
 
fi
 
fi
 
+
 
# adjust this to where your things live
 
# adjust this to where your things live
 
NAME=$1
 
NAME=$1
 
HOSTNAME=$NAME.myserver.net
 
HOSTNAME=$NAME.myserver.net
IP=10.0.0.147
+
IP=10.0.0.149
 
INTERFACE=eth0:$IP/24
 
INTERFACE=eth0:$IP/24
CONTEXT=1010
+
CONTEXT=1011
 
+
VERSION=13.37 # Slackware version
 +
 
# where is the vservers dir? default is /vservers
 
# where is the vservers dir? default is /vservers
 
VDIR="/vservers"
 
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
 
# $PWD should work, otherwise put /path/to/slack_vserver
 
SETUP=$PWD
 
SETUP=$PWD
 
+
 
# the directory where you downloaded the slackware packages
 
# the directory where you downloaded the slackware packages
 
PACKAGES="$SETUP/slackware_pkg"
 
PACKAGES="$SETUP/slackware_pkg"
 
+
 
# the path to rc script file (leave as is)
 
# the path to rc script file (leave as is)
 
RC="$SETUP/rc"
 
RC="$SETUP/rc"
 
+
 
################### end configuration
 
################### end configuration
 
+
 
# sanity check
 
# sanity check
 
+
 
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
 
+
 
# 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 \
Line 176: Line 156:
 
         --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 the 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"
echo ""
 
 
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..."
 
cp /etc/resolv.conf $VDIR/$NAME/etc/
 
cp /etc/resolv.conf $VDIR/$NAME/etc/
Line 210: 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 ""
+
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 "done; DON'T FORGET to patch /etc/rc.d as follows: "
+
echo -n "Do you want that I apply the patch for you y/n? [y] "
echo ""
+
read VAR_PATCH
echo "cd $VDIR/$NAME/etc/rc.d"
+
echo "patch -p1 < $SETUP/slackware-13.1.patch"
+
if [ "$VAR_PATCH" = 'y' ] || [ "$VAR_PATCH" = '' ]; then
echo ""
+
        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>
+
'''Note''' that ''/etc/resolv.conf /etc/localtime /etc/profile'' are copied form the host.
+
 
+
Run it to install the guest and all the packages you downloaded.
+
<pre>
+
./make_slack_vserver.sh
+
 
</pre>
 
</pre>
  
 
== Apply the patch and start the guest ==
 
== Apply the patch and start the guest ==
  
Once you have installed the guest apply the [http://www.linux-vserver.org/Installation_on_Slackware_13#Patch_used patch] and if everything is ok 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.1.patch
+
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>
 
== Hints ==
 
My patch has been tested with Slackware 13.1, but I suppose that this solution will work also in future version with some small adjustment. In any case, if the patch doesn't work with your version of Slackware try to replace ''rc.0 rc.6 rc.K rc.M rc.inet2'' with these ([http://notes.sagredo.eu/sites/notes.sagredo.eu/files/linux-vserver/rc.d-patched.tar.gz download here]). In addition remember to
 
 
* leave ''/etc/rc.d/init.d/rc'' script as is. This is a very essential script which is started firstly and runs ''rc.M'' on startup or ''rc.6'' on shutdown
 
* ''chmod -x rc.inet1''. The network is brought up configuring the guest by ''/etc/vservers''
 
* ''chmod -x'' all hardware related services like ''rc.acpid rc.alsa rc.pcmcia rc.wireless rc.gpm rc.bluetooth rc.hald''
 
* delete all mounts and other hardware related commands in ''rc.0 rc.6 rc.K rc.M rc.inet2''
 
  
 
== Contact ==
 
== Contact ==
Any comments/suggestions/questions to ''roberto dot puzzanghera at sagredo dot eu'', [http://notes.sagredo.eu]
+
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 ==
 
== Patch used ==
 
<pre>
 
<pre>
Patch for Slackware 13.1 guest on a Linux-Vserver host
+
Patch for Slackware 13.37 guest on a Linux-Vserver host
======================================================
+
========================================================
 
by Roberto Puzzanghera - http://notes.sagredo.eu
 
by Roberto Puzzanghera - http://notes.sagredo.eu
version: 2010.12.28
+
version: 2011.04.28
  
======================================================
+
========================================================
  
diff -urNB rc.d-original/rc.0 rc.d-patched/rc.0
+
diff -urNB rc.d-original/rc.0 rc.d/rc.0
--- rc.d-original/rc.0 2010-03-20 01:14:07.000000000 +0100
+
--- rc.d-original/rc.0 2011-04-16 23:14:14.000000000 +0200
+++ rc.d-patched/rc.0 2010-12-28 17:37:41.000000000 +0100
+
+++ rc.d/rc.0 2011-04-28 15:01:59.000000000 +0200
 
@@ -37,22 +37,6 @@
 
@@ -37,22 +37,6 @@
 
  ;;
 
  ;;
Line 292: Line 276:
 
  if [ -x /etc/rc.d/rc.local_shutdown ]; then
 
  if [ -x /etc/rc.d/rc.local_shutdown ]; then
 
   /etc/rc.d/rc.local_shutdown stop
 
   /etc/rc.d/rc.local_shutdown stop
@@ -98,18 +82,6 @@
+
@@ -98,66 +82,11 @@
 
   sh /etc/rc.d/rc.messagebus stop
 
   sh /etc/rc.d/rc.messagebus stop
 
  fi
 
  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:
 
-# Unmount any NFS, SMB, or CIFS filesystems:
 
-echo "Unmounting remote filesystems."
 
-echo "Unmounting remote filesystems."
-/bin/umount -v -a -r -t nfs,smbfs,cifs
+
-/bin/umount -v -a -l -f -r -t nfs,smbfs,cifs
 
-
 
-
 
-# Try to shut down pppd:
 
-# Try to shut down pppd:
Line 308: Line 306:
 
-fi
 
-fi
 
-
 
-
# Bring down the networking system, but first make sure that this
+
-# Bring down the networking system, but first make sure that this
# isn't a diskless client with the / partition mounted via NFS:
+
-# isn't a diskless client with the / partition mounted via NFS:
if ! /bin/mount | /bin/grep -q 'on / type nfs' ; then
+
-if ! /bin/mount | /bin/grep -q 'on / type nfs' ; then
@@ -127,13 +99,6 @@
+
- if [ -x /etc/rc.d/rc.inet1 ]; then
  sleep 2
+
-    . /etc/rc.d/rc.inet1 stop
  fi
+
-  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:
 
-# Shut down PCMCIA devices:
 
-if [ -x /etc/rc.d/rc.pcmcia ]; then
 
-if [ -x /etc/rc.d/rc.pcmcia ]; then
Line 325: Line 333:
 
  if [ -x /sbin/accton -a -r /var/log/pacct ]; then
 
  if [ -x /sbin/accton -a -r /var/log/pacct ]; then
 
   /sbin/accton off
 
   /sbin/accton off
@@ -181,23 +146,6 @@
+
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/*
 
   rm -f /var/lock/subsys/*
 
  fi
 
  fi
Line 333: Line 368:
 
-/sbin/swapoff -a
 
-/sbin/swapoff -a
 
-/bin/sync
 
-/bin/sync
-
 
-# Umount any LVM volumes:
 
-if /bin/mount | /bin/grep -q '^/dev/mapper/' ; then
 
-  echo "Unmounting LVM volumes."
 
-  /bin/umount -v $(/bin/mount | /bin/grep '^/dev/mapper/' | /bin/cut -d ' ' -f 3 | /bin/tac)
 
-fi
 
 
-
 
-
 
-echo "Unmounting local file systems."
 
-echo "Unmounting local file systems."
Line 349: Line 378:
 
  /bin/sync
 
  /bin/sync
 
   
 
   
@@ -222,45 +170,5 @@
+
@@ -230,45 +138,10 @@
 
   done
 
   done
 
  fi
 
  fi
Line 359: Line 388:
 
-fi
 
-fi
 
-
 
-
-# This never hurts again (especially since root-on-LVM always fails
+
# This never hurts again (especially since root-on-LVM always fails
-# to deactivate the / logical volume...  but at least it was
+
# to deactivate the / logical volume...  but at least it was
-# remounted as read-only first)
+
# remounted as read-only first)
-/bin/sync
+
/bin/sync
-
+
 
-# sleep 3 fixes problems with some hard drives that don't
 
-# sleep 3 fixes problems with some hard drives that don't
 
-# otherwise finish syncing before reboot or poweroff
 
-# otherwise finish syncing before reboot or poweroff
Line 395: Line 424:
 
-fi
 
-fi
 
-
 
-
diff -urNB rc.d-original/rc.6 rc.d-patched/rc.6
+
diff -urNB rc.d-original/rc.6 rc.d/rc.6
--- rc.d-original/rc.6 2010-03-20 01:14:07.000000000 +0100
+
--- rc.d-original/rc.6 2011-04-16 23:14:14.000000000 +0200
+++ rc.d-patched/rc.6 2010-12-28 17:37:41.000000000 +0100
+
+++ rc.d/rc.6 2011-04-28 15:01:59.000000000 +0200
 
@@ -37,22 +37,6 @@
 
@@ -37,22 +37,6 @@
 
  ;;
 
  ;;
Line 421: Line 450:
 
  if [ -x /etc/rc.d/rc.local_shutdown ]; then
 
  if [ -x /etc/rc.d/rc.local_shutdown ]; then
 
   /etc/rc.d/rc.local_shutdown stop
 
   /etc/rc.d/rc.local_shutdown stop
@@ -98,18 +82,6 @@
+
@@ -98,66 +82,11 @@
 
   sh /etc/rc.d/rc.messagebus stop
 
   sh /etc/rc.d/rc.messagebus stop
 
  fi
 
  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:
 
-# Unmount any NFS, SMB, or CIFS filesystems:
 
-echo "Unmounting remote filesystems."
 
-echo "Unmounting remote filesystems."
-/bin/umount -v -a -r -t nfs,smbfs,cifs
+
-/bin/umount -v -a -l -f -r -t nfs,smbfs,cifs
 
-
 
-
 
-# Try to shut down pppd:
 
-# Try to shut down pppd:
Line 437: Line 480:
 
-fi
 
-fi
 
-
 
-
# Bring down the networking system, but first make sure that this
+
-# Bring down the networking system, but first make sure that this
# isn't a diskless client with the / partition mounted via NFS:
+
-# isn't a diskless client with the / partition mounted via NFS:
if ! /bin/mount | /bin/grep -q 'on / type nfs' ; then
+
-if ! /bin/mount | /bin/grep -q 'on / type nfs' ; then
@@ -127,13 +99,6 @@
+
- if [ -x /etc/rc.d/rc.inet1 ]; then
  sleep 2
+
-    . /etc/rc.d/rc.inet1 stop
  fi
+
-  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:
 
-# Shut down PCMCIA devices:
 
-if [ -x /etc/rc.d/rc.pcmcia ]; then
 
-if [ -x /etc/rc.d/rc.pcmcia ]; then
Line 454: Line 507:
 
  if [ -x /sbin/accton -a -r /var/log/pacct ]; then
 
  if [ -x /sbin/accton -a -r /var/log/pacct ]; then
 
   /sbin/accton off
 
   /sbin/accton off
@@ -181,23 +146,6 @@
+
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/*
 
   rm -f /var/lock/subsys/*
 
  fi
 
  fi
Line 462: Line 542:
 
-/sbin/swapoff -a
 
-/sbin/swapoff -a
 
-/bin/sync
 
-/bin/sync
-
 
-# Umount any LVM volumes:
 
-if /bin/mount | /bin/grep -q '^/dev/mapper/' ; then
 
-  echo "Unmounting LVM volumes."
 
-  /bin/umount -v $(/bin/mount | /bin/grep '^/dev/mapper/' | /bin/cut -d ' ' -f 3 | /bin/tac)
 
-fi
 
 
-
 
-
 
-echo "Unmounting local file systems."
 
-echo "Unmounting local file systems."
Line 478: Line 552:
 
  /bin/sync
 
  /bin/sync
 
   
 
   
@@ -222,45 +170,5 @@
+
@@ -230,45 +138,10 @@
 
   done
 
   done
 
  fi
 
  fi
Line 488: Line 562:
 
-fi
 
-fi
 
-
 
-
-# This never hurts again (especially since root-on-LVM always fails
+
# This never hurts again (especially since root-on-LVM always fails
-# to deactivate the / logical volume...  but at least it was
+
# to deactivate the / logical volume...  but at least it was
-# remounted as read-only first)
+
# remounted as read-only first)
-/bin/sync
+
/bin/sync
-
+
 
-# sleep 3 fixes problems with some hard drives that don't
 
-# sleep 3 fixes problems with some hard drives that don't
 
-# otherwise finish syncing before reboot or poweroff
 
-# otherwise finish syncing before reboot or poweroff
Line 524: Line 598:
 
-fi
 
-fi
 
-
 
-
diff -urNB rc.d-original/rc.K rc.d-patched/rc.K
+
diff -urNB rc.d-original/rc.M rc.d/rc.M
--- rc.d-original/rc.K 2008-12-02 21:31:48.000000000 +0100
+
--- rc.d-original/rc.M 2011-03-22 07:15:15.000000000 +0100
+++ rc.d-patched/rc.K 2010-12-28 17:37:41.000000000 +0100
+
+++ rc.d/rc.M 2011-04-28 19:07:47.000000000 +0200
@@ -57,22 +57,6 @@
+
  /etc/rc.d/rc.nfsd stop
+
fi
+
+
-# Unmount any NFS, SMB, or CIFS filesystems:
+
-echo "Unmounting remote filesystems."
+
-umount -a -r -t nfs,smbfs,cifs
+
-
+
-# 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:
+
-  sleep 5
+
-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.
+
echo
+
echo "Sending all processes the SIGHUP signal."
+
diff -urNB rc.d-original/rc.M rc.d-patched/rc.M
+
--- rc.d-original/rc.M 2010-02-07 04:01:28.000000000 +0100
+
+++ rc.d-patched/rc.M 2010-12-28 17:37:41.000000000 +0100
+
 
@@ -20,10 +20,6 @@
 
@@ -20,10 +20,6 @@
 
   /sbin/ldconfig &
 
   /sbin/ldconfig &
Line 564: Line 612:
 
  if [ -r /etc/HOSTNAME ]; then
 
  if [ -r /etc/HOSTNAME ]; then
 
   /bin/hostname $(cat /etc/HOSTNAME | cut -f1 -d .)
 
   /bin/hostname $(cat /etc/HOSTNAME | cut -f1 -d .)
@@ -36,31 +32,6 @@
+
@@ -47,31 +43,6 @@
 
  # Save the contents of 'dmesg':
 
  # Save the contents of 'dmesg':
 
  /bin/dmesg -s 65536 > /var/log/dmesg
 
  /bin/dmesg -s 65536 > /var/log/dmesg
Line 596: Line 644:
 
  if [ -x /etc/rc.d/rc.syslog -a -x /usr/sbin/syslogd -a -d /var/log ]; then
 
  if [ -x /etc/rc.d/rc.syslog -a -x /usr/sbin/syslogd -a -d /var/log ]; then
 
   . /etc/rc.d/rc.syslog start
 
   . /etc/rc.d/rc.syslog start
@@ -72,26 +43,11 @@
+
@@ -83,38 +54,18 @@
 
   /usr/bin/fc-cache -f &
 
   /usr/bin/fc-cache -f &
 
  fi
 
  fi
Line 610: Line 658:
 
-fi
 
-fi
 
-
 
-
# Initialize the networking hardware.
+
-# Initialize the networking hardware.
if [ -x /etc/rc.d/rc.inet1 ]; then
+
-if [ -x /etc/rc.d/rc.inet1 ]; then
  . /etc/rc.d/rc.inet1
+
. /etc/rc.d/rc.inet1
fi
+
-fi
+
-
 
-# Look for additional USB/SCSI/IEEE1394/etc devices on multiple LUNs:
 
-# Look for additional USB/SCSI/IEEE1394/etc devices on multiple LUNs:
 
-if [ -x /etc/rc.d/rc.scanluns ]; then
 
-if [ -x /etc/rc.d/rc.scanluns ]; then
Line 623: Line 671:
 
  if [ -x /etc/rc.d/rc.inet2 ]; then
 
  if [ -x /etc/rc.d/rc.inet2 ]; then
 
   . /etc/rc.d/rc.inet2
 
   . /etc/rc.d/rc.inet2
@@ -118,17 +74,6 @@
+
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 755 / 2> /dev/null
 
  chmod 1777 /tmp /var/tmp
 
  chmod 1777 /tmp /var/tmp
Line 641: Line 705:
 
  if find /usr/share/icons 2> /dev/null | grep -q icon-theme.cache ; then
 
  if find /usr/share/icons 2> /dev/null | grep -q icon-theme.cache ; then
 
   for theme_dir in /usr/share/icons/* ; do
 
   for theme_dir in /usr/share/icons/* ; do
@@ -161,11 +106,6 @@
+
@@ -177,21 +117,6 @@
   sh /etc/rc.d/rc.hald start
+
   sh /etc/rc.d/rc.consolekit start
 
  fi
 
  fi
 
   
 
   
 +
-# Start HAL:
 +
-if [ -x /etc/rc.d/rc.hald ]; then
 +
-  sh /etc/rc.d/rc.hald start
 +
-fi
 +
-
 
-# Start Bluetooth:
 
-# Start Bluetooth:
 
-if [ -x /etc/rc.d/rc.bluetooth ]; then
 
-if [ -x /etc/rc.d/rc.bluetooth ]; then
Line 650: Line 719:
 
-fi
 
-fi
 
-
 
-
# Start wicd:
+
-# Start wicd:
if [ -x /etc/rc.d/rc.wicd ]; then
+
-if [ -x /etc/rc.d/rc.wicd ]; then
  sh /etc/rc.d/rc.wicd start
+
sh /etc/rc.d/rc.wicd start
@@ -207,36 +147,6 @@
+
-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
 
   /etc/rc.d/rc.atalk
 
  fi
 
  fi
Line 690: Line 764:
 
  # option for BSD process accounting is enabled in your kernel, and then
 
  # 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
 
  # create the file /var/log/pacct (touch /var/log/pacct).  By default, process
@@ -301,11 +211,6 @@
+
@@ -322,11 +217,6 @@
 
   . /etc/rc.d/rc.sendmail start
 
   . /etc/rc.d/rc.sendmail start
 
  fi
 
  fi
Line 702: Line 776:
 
  if [ -x /etc/rc.d/rc.font ]; then
 
  if [ -x /etc/rc.d/rc.font ]; then
 
   . /etc/rc.d/rc.font
 
   . /etc/rc.d/rc.font
@@ -337,11 +242,6 @@
+
@@ -358,11 +248,6 @@
 
   . /etc/rc.d/rc.samba start
 
   . /etc/rc.d/rc.samba start
 
  fi
 
  fi
Line 714: Line 788:
 
  if [ -x /etc/rc.d/rc.sysvinit ]; then
 
  if [ -x /etc/rc.d/rc.sysvinit ]; then
 
   . /etc/rc.d/rc.sysvinit
 
   . /etc/rc.d/rc.sysvinit
diff -urNB rc.d-original/rc.inet2 rc.d-patched/rc.inet2
+
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-original/rc.inet2 2007-09-18 00:07:32.000000000 +0200
+++ rc.d-patched/rc.inet2 2010-12-28 17:37:41.000000000 +0100
+
+++ rc.d/rc.inet2 2011-04-28 19:09:27.000000000 +0200
@@ -15,27 +15,6 @@
+
@@ -16,26 +16,6 @@
+
 
  # At this point, we are ready to talk to The World...
 
  # At this point, we are ready to talk to The World...
 
   
 
   
-
+
 
-# Mount remote (NFS) filesystems:
 
-# Mount remote (NFS) filesystems:
 
-if cat /etc/fstab | grep -v '^#' | grep -w nfs 1> /dev/null 2> /dev/null ; then
 
-if cat /etc/fstab | grep -v '^#' | grep -w nfs 1> /dev/null 2> /dev/null ; then
Line 745: Line 818:
 
  # and rpc.statd.  This might be needed to mount NFS partitions that are not
 
  # 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
 
  # 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>
 
</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 20: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.

Contents

[edit] Download the patch and the installer script

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

[edit] Download the slack packages

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

[edit] Make the guest

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

[edit] 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:

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

[edit] Contact

Any comments/suggestions/questions to roberto dot puzzanghera at sagredo dot eu, [1] or the talk page of this wiki page.

[edit] Patch used

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
 }

[edit] Slackware package list

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

[edit] Post-installation tasks

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.

Personal tools