Difference between revisions of "Installation on Slackware 13"

From Linux-VServer

Jump to: navigation, search
(Download the slack packages)
(+cat)
 
(6 intermediate revisions by one user not shown)
Line 1: Line 1:
What follows was tested on a Slackware 13.37 and 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 12: Line 12:
  
 
* [http://www.linux-vserver.org/Installation_on_Slackware_13#Slackware_package_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.37.patch] is the patch which modify ''rc.6'' ''rc.M'' 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 239: Line 239:
  
 
== 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 ==
Line 993: Line 993:
 
n/wget
 
n/wget
 
</pre>
 
</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