Difference between revisions of "Installation on Slackware 13"
From Linux-VServer
(→Patch used) |
(+cat) |
||
(35 intermediate revisions by 3 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:// | + | * [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 | + | * [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 | + | * [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. | + | * [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> | ||
# more rc | # more rc | ||
− | if [ $1 | + | #!/bin/bash |
− | + | ||
+ | if [ "$1" == "3" ]; then | ||
/etc/rc.d/rc.M | /etc/rc.d/rc.M | ||
− | + | elif [ "$1" == "6" ]; then | |
− | + | ||
− | + | ||
/etc/rc.d/rc.6 | /etc/rc.d/rc.6 | ||
− | + | else | |
− | + | echo "Invalid level." | |
− | echo " | + | exit 1 |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
fi | fi | ||
</pre> | </pre> | ||
Line 50: | 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. This list of ''' | + | First of all select a minimal set of packages to be installed on the virtual server. [http://linux-vserver.org/Installation_on_Slackware_13#Slackware_package_list This list] of '''109 packages''' is based on the Minimal System reported at [http://slackwiki.org/Minimal_System http://slackwiki.org/Minimal_System] without all hardware, kernel and multimedia related packages. The install leads to '''a guest of about 448M of size'''. |
− | I assume that the packages to be installed are stored in the slackware_pkg folder. If not, adjust its location editing the make_slack_vserver.sh script. | + | 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 | You can download my minimal set of packages running the shell script download_slack_pkg.sh | ||
Line 58: | Line 42: | ||
#!/bin/bash | #!/bin/bash | ||
# | # | ||
+ | # v. 2011.01.07 | ||
# Put here your favourite Slackware repository | # Put here your favourite Slackware repository | ||
− | + | ||
− | SRC="ftp://ftp.slackware.no/slackware/slackware-13. | + | SRC="ftp://ftp.slackware.no/slackware/slackware-13.37/slackware/" # 32-bit |
− | #"ftp://ftp.slackware.no/slackware/slackware64-13. | + | #SRC="ftp://ftp.slackware.no/slackware/slackware64-13.37/slackware64/" # 64-bit |
− | + | ||
LIST="../PKG_LIST" | LIST="../PKG_LIST" | ||
− | + | ||
cd slackware_pkg | cd slackware_pkg | ||
− | + | ||
if [ -f $LIST ]; then | if [ -f $LIST ]; then | ||
− | while read line | + | while read line |
− | do | + | do |
wget "$SRC$line*.t?z" | wget "$SRC$line*.t?z" | ||
done < $LIST | done < $LIST | ||
Line 76: | Line 61: | ||
exit 1 | exit 1 | ||
fi | fi | ||
− | + | ||
rm index.html* | rm index.html* | ||
</pre> | </pre> | ||
− | Adjust the package 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 93: | Line 78: | ||
#!/bin/bash | #!/bin/bash | ||
# | # | ||
+ | # v. 2011.04.28 | ||
+ | # Author: Roberto Puzzanghera | ||
+ | # | ||
+ | # This script installs a Slackware guest into a linux-vserver host (http://linux-vserver.org) | ||
+ | # | ||
+ | # Comments are welcome :-) | ||
# More info here: http://notes.sagredo.eu/node/7 | # More info here: http://notes.sagredo.eu/node/7 | ||
Line 103: | Line 94: | ||
NAME=$1 | NAME=$1 | ||
HOSTNAME=$NAME.myserver.net | HOSTNAME=$NAME.myserver.net | ||
− | IP=10.0.0. | + | IP=10.0.0.149 |
INTERFACE=eth0:$IP/24 | INTERFACE=eth0:$IP/24 | ||
− | CONTEXT= | + | CONTEXT=1011 |
+ | VERSION=13.37 # Slackware version | ||
# where is the vservers dir? default is /vservers | # where is the vservers dir? default is /vservers | ||
− | VDIR=" | + | VDIR="/vservers" |
# the directory where you unpacked slack_vserver.tar.gz | # the directory where you unpacked slack_vserver.tar.gz | ||
Line 125: | Line 117: | ||
if [ ! -d "$VDIR" ]; then | if [ ! -d "$VDIR" ]; then | ||
− | echo | + | echo |
echo "Can't find VDIR dir: $VDIR" | echo "Can't find VDIR dir: $VDIR" | ||
echo "Exiting" | echo "Exiting" | ||
− | echo | + | echo |
exit 1 | exit 1 | ||
fi | fi | ||
if [ ! -d "$SETUP" ]; then | if [ ! -d "$SETUP" ]; then | ||
− | echo | + | echo |
echo "Can't find SETUP dir: $SETUP" | echo "Can't find SETUP dir: $SETUP" | ||
echo "Exiting" | echo "Exiting" | ||
− | echo | + | echo |
exit 1 | exit 1 | ||
fi | fi | ||
if [ ! -d "$PACKAGES" ]; then | if [ ! -d "$PACKAGES" ]; then | ||
− | echo | + | echo |
echo "Can't find PACKAGES dir: $PACKAGES" | echo "Can't find PACKAGES dir: $PACKAGES" | ||
echo "Exiting" | echo "Exiting" | ||
− | echo | + | echo |
exit 1 | exit 1 | ||
fi | fi | ||
if [ ! -f "$RC" ]; then | if [ ! -f "$RC" ]; then | ||
− | echo | + | echo |
echo "Can't find RC path: $RC" | echo "Can't find RC path: $RC" | ||
echo "Exiting" | echo "Exiting" | ||
− | echo | + | echo |
exit 1 | exit 1 | ||
fi | fi | ||
Line 155: | Line 147: | ||
# if everything is ok start the install | # if everything is ok start the install | ||
− | echo | + | echo |
read -p "press any key to make skeleton..." | read -p "press any key to make skeleton..." | ||
vserver ${NAME} build -m skeleton \ | vserver ${NAME} build -m skeleton \ | ||
--hostname ${HOSTNAME} \ | --hostname ${HOSTNAME} \ | ||
--interface ${INTERFACE} \ | --interface ${INTERFACE} \ | ||
+ | --context $CONTEXT \ | ||
--flags lock,virt_mem,virt_uptime,virt_cpu,virt_load,sched_hard,hide_netif \ | --flags lock,virt_mem,virt_uptime,virt_cpu,virt_load,sched_hard,hide_netif \ | ||
--initstyle sysv | --initstyle sysv | ||
echo "...done" | echo "...done" | ||
− | echo | + | echo |
− | read -p "press any key to move to a temp dir the /dev folder..." | + | read -p "press any key to move the /dev folder to a temp dir the /dev folder..." |
mv $VDIR/$NAME/dev $VDIR/$NAME/dev2 | mv $VDIR/$NAME/dev $VDIR/$NAME/dev2 | ||
− | echo | + | echo |
read -p "press any key to install packages..." | read -p "press any key to install packages..." | ||
cd $PACKAGES | cd $PACKAGES | ||
installpkg -root $VDIR/$NAME *.t?z; | installpkg -root $VDIR/$NAME *.t?z; | ||
echo "...done" | echo "...done" | ||
− | echo | + | echo |
− | echo | + | echo |
read -p "press any key to copy 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" | ||
− | |||
cp -p $RC $VDIR/$NAME/etc/rc.d/init.d/ | cp -p $RC $VDIR/$NAME/etc/rc.d/init.d/ | ||
− | echo "done" | + | echo "...done" |
− | echo | + | echo |
− | echo "removing x flag to rc.inet1 and rc.sshd" | + | echo "removing x flag to rc.inet1 rc.loop and rc.sshd" |
− | chmod -x $VDIR/$NAME/etc/rc.d/rc.inet1 $VDIR/$NAME/etc/rc.d/rc.sshd | + | chmod -x $VDIR/$NAME/etc/rc.d/rc.inet1 $VDIR/$NAME/etc/rc.d/rc.loop $VDIR/$NAME/etc/rc.d/rc.sshd |
− | echo "done" | + | echo "...done" |
− | echo | + | echo |
echo "trying to adjust HOSTNAME, hosts, resolv.conf, profile. Check later..." | echo "trying to adjust HOSTNAME, hosts, resolv.conf, profile. Check later..." | ||
Line 197: | 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" | ||
Line 206: | Line 198: | ||
mv $VDIR/$NAME/dev2 $VDIR/$NAME/dev | mv $VDIR/$NAME/dev2 $VDIR/$NAME/dev | ||
− | echo "" | + | echo |
− | + | 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/ | + | 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> | </pre> | ||
== Apply the patch and start the guest == | == Apply the patch and start the guest == | ||
− | + | The script itsself can install the patch for you. Anyway this is how to apply the patch by yourself: | |
<pre> | <pre> | ||
cd /vservers/vserver_name/etc/rc.d | cd /vservers/vserver_name/etc/rc.d | ||
− | patch -p1 < /path/to/slack_vserver/slackware-13. | + | patch -p1 < /path/to/slack_vserver/slackware-13.37.patch |
+ | </pre> | ||
+ | Now you can start the newly created virtual server: | ||
+ | <pre> | ||
vserver <vserver_name> start | vserver <vserver_name> start | ||
vserver <vserver_name> enter | vserver <vserver_name> enter | ||
</pre> | </pre> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== Contact == | == 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. | + | 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: | + | version: 2011.04.28 |
− | ====================================================== | + | ======================================================== |
− | diff -urNB rc.d-original/rc.0 rc.d | + | diff -urNB rc.d-original/rc.0 rc.d/rc.0 |
− | --- rc.d-original/rc.0 | + | --- rc.d-original/rc.0 2011-04-16 23:14:14.000000000 +0200 |
− | +++ rc.d | + | +++ rc.d/rc.0 2011-04-28 15:01:59.000000000 +0200 |
@@ -37,22 +37,6 @@ | @@ -37,22 +37,6 @@ | ||
;; | ;; | ||
Line 279: | 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, | + | @@ -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 295: | Line 306: | ||
-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: | -# Shut down PCMCIA devices: | ||
-if [ -x /etc/rc.d/rc.pcmcia ]; then | -if [ -x /etc/rc.d/rc.pcmcia ]; then | ||
Line 312: | 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 | ||
− | @@ - | + | 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 320: | Line 368: | ||
-/sbin/swapoff -a | -/sbin/swapoff -a | ||
-/bin/sync | -/bin/sync | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
- | - | ||
-echo "Unmounting local file systems." | -echo "Unmounting local file systems." | ||
Line 336: | Line 378: | ||
/bin/sync | /bin/sync | ||
− | @@ - | + | @@ -230,45 +138,10 @@ |
done | done | ||
fi | fi | ||
Line 346: | Line 388: | ||
-fi | -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 | -# 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 382: | Line 424: | ||
-fi | -fi | ||
- | - | ||
− | diff -urNB rc.d-original/rc.6 rc.d | + | diff -urNB rc.d-original/rc.6 rc.d/rc.6 |
− | --- rc.d-original/rc.6 | + | --- rc.d-original/rc.6 2011-04-16 23:14:14.000000000 +0200 |
− | +++ rc.d | + | +++ rc.d/rc.6 2011-04-28 15:01:59.000000000 +0200 |
@@ -37,22 +37,6 @@ | @@ -37,22 +37,6 @@ | ||
;; | ;; | ||
Line 408: | 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, | + | @@ -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 424: | Line 480: | ||
-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: | -# Shut down PCMCIA devices: | ||
-if [ -x /etc/rc.d/rc.pcmcia ]; then | -if [ -x /etc/rc.d/rc.pcmcia ]; then | ||
Line 441: | 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 | ||
− | @@ - | + | 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 449: | Line 542: | ||
-/sbin/swapoff -a | -/sbin/swapoff -a | ||
-/bin/sync | -/bin/sync | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
- | - | ||
-echo "Unmounting local file systems." | -echo "Unmounting local file systems." | ||
Line 465: | Line 552: | ||
/bin/sync | /bin/sync | ||
− | @@ - | + | @@ -230,45 +138,10 @@ |
done | done | ||
fi | fi | ||
Line 475: | Line 562: | ||
-fi | -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 | -# 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 511: | Line 598: | ||
-fi | -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 | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | diff -urNB rc.d-original/rc.M rc.d | + | |
− | --- rc.d-original/rc.M | + | |
− | +++ rc.d | + | |
@@ -20,10 +20,6 @@ | @@ -20,10 +20,6 @@ | ||
/sbin/ldconfig & | /sbin/ldconfig & | ||
Line 551: | 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 .) | ||
− | @@ - | + | @@ -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 583: | 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 | ||
− | @@ - | + | @@ -83,38 +54,18 @@ |
/usr/bin/fc-cache -f & | /usr/bin/fc-cache -f & | ||
fi | fi | ||
Line 597: | Line 658: | ||
-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: | -# 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 610: | 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 | ||
− | @@ - | + | 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 628: | 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 | ||
− | @@ - | + | @@ -177,21 +117,6 @@ |
− | sh /etc/rc.d/rc. | + | 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 637: | Line 719: | ||
-fi | -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 | /etc/rc.d/rc.atalk | ||
fi | fi | ||
Line 677: | 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 | ||
− | @@ - | + | @@ -322,11 +217,6 @@ |
. /etc/rc.d/rc.sendmail start | . /etc/rc.d/rc.sendmail start | ||
fi | fi | ||
Line 689: | 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 | ||
− | @@ - | + | @@ -358,11 +248,6 @@ |
. /etc/rc.d/rc.samba start | . /etc/rc.d/rc.samba start | ||
fi | fi | ||
Line 701: | 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 | + | 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 | + | +++ 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... | # 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 732: | 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.