Difference between revisions of "Installation on Slackware 14"
From Linux-VServer
(→Download the packages) |
|||
Line 28: | Line 28: | ||
#!/bin/bash | #!/bin/bash | ||
# | # | ||
− | # v. | + | # v. 2013.12.29 |
+ | # Now the script parses comments in the package list (thanks to Mark Colclough) | ||
VERSION="14.1" # Slackware version | VERSION="14.1" # Slackware version | ||
Line 43: | Line 44: | ||
SETUP=$PWD | SETUP=$PWD | ||
− | # the directory where you | + | # the directory where you want to download the slackware packages |
PACKAGES="${SETUP}/slackware${ARCH}-${VERSION}_pkg" | PACKAGES="${SETUP}/slackware${ARCH}-${VERSION}_pkg" | ||
# create the folder where the pkg will be downloaded | # create the folder where the pkg will be downloaded | ||
if [ ! -d "$PACKAGES" ]; then | if [ ! -d "$PACKAGES" ]; then | ||
− | + | mkdir -p $PACKAGES | |
fi | fi | ||
Line 61: | Line 62: | ||
if [ -f $LIST ]; then | if [ -f $LIST ]; then | ||
while read LINE | while read LINE | ||
− | do | + | do |
+ | [ "$LINE" ] || continue | ||
+ | [ "${LINE#\#}" = "$LINE" ] || continue | ||
wget "${SRC}slackware${ARCH}/${LINE}*.t?z" | wget "${SRC}slackware${ARCH}/${LINE}*.t?z" | ||
done < $LIST | done < $LIST | ||
else | else | ||
− | + | echo "Can't find $LIST file." | |
− | + | exit 1 | |
fi | fi | ||
− | |||
− | |||
# download packages from the patches folder | # download packages from the patches folder | ||
Line 76: | Line 77: | ||
if [ -f ${LIST} ]; then | if [ -f ${LIST} ]; then | ||
while read LINE | while read LINE | ||
− | + | do | |
− | + | IFS='/' read -ra PKG <<< "$LINE" | |
− | PKG_LEN=${#PKG[@]} | + | [ "${PKG#\#}" = "${PKG}" ] || continue |
+ | PKG_LEN=${#PKG[@]} | ||
if [ $PKG_LEN == 2 ]; then | if [ $PKG_LEN == 2 ]; then | ||
− | + | wget "${SRC}patches/packages/${PKG[1]}*.t?z" | |
− | + | fi | |
done < $LIST | done < $LIST | ||
else | else | ||
− | + | echo "Can't find $LIST file." | |
exit 1 | exit 1 | ||
fi | fi | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</pre> | </pre> | ||
Revision as of 14:31, 29 December 2013
The purpose of this note is to setup a guest based on Slackware. What follows was tested on Slackware 14.1, 14.0, 13.37 and 13.1** (both 32b and 64b). I will assume that you have a Linux-Vserver box working.
Contents |
Download
wget http://notes.sagredo.eu/sites/notes.sagredo.eu/files/linux-vserver/slack_vserver.tar.gz tar xzf slack_vserver.tar.gz cd slack_vserver ls
You have downloaded the following files:
- PKG_LIST is the package list to be installed in the guest
- download_slack_pkg.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[64]-version_pkg sub-folder.
- make_slack_vserver.sh is the shell script that you have to adjust. It installs the guest.
- rc is the startup script for the virtual server. It will be automatically copied in /etc/rc.d* /init.d/rc
- linux-vserver_slackware-14.1.patch is the patch which modify rc.0, rc.6 rc.M, rc.S, rc.inet2 and rc.syslog. It must be applyed after the creation of the vserver process. In the patch I switched off all the mounts and executable that are related to the hardware.
Download the packages
First of all select a minimal set of packages to be installed on the virtual server. This list of 110 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. This set fits with the installation of a complete virtual web server including apache, apache-tomcat, php, mysql, postgresql, qmail and related, ftp, named.
I assume that the packages to be installed are stored in the slackware{$ARCH}-{$VERSION}_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. It can create a folder like slackware{$ARCH}-{$VERSION}_pkg for you, where $ARCH has to be "64" if you want to download 64b packages or empty otherwise, while $VERSION is the Slackware version, so it's something like "14.1".
#!/bin/bash # # v. 2013.12.29 # Now the script parses comments in the package list (thanks to Mark Colclough) VERSION="14.1" # Slackware version ARCH="64" # you can put 64 for 64b cpu just to separate 64/32 download folders # Put here your favourite Slackware repository SRC="ftp://ftp.slackware.no/slackware/slackware${ARCH}-${VERSION}/" # put here your pkg list LIST="${PWD}/PKG_LIST" # the directory where you unpacked slack_vserver.tar.gz # $PWD should work, otherwise put /path/to/slack_vserver SETUP=$PWD # the directory where you want to download the slackware packages PACKAGES="${SETUP}/slackware${ARCH}-${VERSION}_pkg" # create the folder where the pkg will be downloaded if [ ! -d "$PACKAGES" ]; then mkdir -p $PACKAGES fi # create the "patches" sub-folder if [ ! -d "${PACKAGES}/patches" ]; then mkdir -p "${PACKAGES}/patches" fi # download cd $PACKAGES if [ -f $LIST ]; then while read LINE do [ "$LINE" ] || continue [ "${LINE#\#}" = "$LINE" ] || continue wget "${SRC}slackware${ARCH}/${LINE}*.t?z" done < $LIST else echo "Can't find $LIST file." exit 1 fi # download packages from the patches folder cd ${PACKAGES}/patches if [ -f ${LIST} ]; then while read LINE do IFS='/' read -ra PKG <<< "$LINE" [ "${PKG#\#}" = "${PKG}" ] || continue PKG_LEN=${#PKG[@]} if [ $PKG_LEN == 2 ]; then wget "${SRC}patches/packages/${PKG[1]}*.t?z" fi done < $LIST else echo "Can't find $LIST file." exit 1 fi
NB: this script tries also to overwrite the packages downloaded from the /slackware folder with the updates belonging to the /patches dir.
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 adjusting and running the script make_slack_vserver.sh:
#!/bin/bash # # v. 2012.09.29 # 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 # adjust this to where your things live NAME=test HOSTNAME=$NAME.domain.com IP=10.0.0.34 INTERFACE=eth0:$IP/24 CONTEXT=34000 VERSION=14.1 # Slackware version ARCH=64 # you can put 64 for 64b cpu just to separate 64/32 download folders # where is the vservers dir? default is /vservers VDIR="/usr/local/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${ARCH}-${VERSION}_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; upgradepkg patches/*.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 if [ ! -f "${SETUP}/linux-vserver_slackware-${VERSION}.patch" ]; then echo echo "Can't find any PATCH here: ${SETUP}/linux-vserver_slackware-${VERSION}.patch" echo "Exiting" echo exit 1 fi 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
Note that /etc/resolv.conf /etc/localtime /etc/profile are copied form the host.
Edit the script inserting at least the NAME, the IP and the CONTEXT. The packages' location should be ok if you downloaded them using my script.
./make_slack_vserver.sh
Apply the patch
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-14.0.patch
Inside the tarball you can find the old patch for Slackware 13.1 and 13.37, if you like.
Post installation tasks
Put this inside your rc.local:
/usr/local/etc/rc.d/init.d/vprocunhide start
Start the new server
vserver <vserver_name> start vserver <vserver_name> enter
Patch applayed
Patch for Slackware 14.1 guest on a Linux-Vserver host ======================================================== by Roberto Puzzanghera - http://notes.sagredo.eu version: 2013.11.08 ======================================================== diff -ruN rc.d-original/rc.0 rc.d/rc.0 --- rc.d-original/rc.0 2013-09-23 01:43:20.000000000 +0200 +++ rc.d/rc.0 2013-11-08 22:15:10.000000000 +0100 @@ -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,24 +82,6 @@ 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 @@ -131,45 +97,11 @@ 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 - -# Stop udev: -if [ -x /etc/rc.d/rc.udev ]; then - sh /etc/rc.d/rc.udev force-stop -fi - # Kill all remaining processes. if [ ! "$1" = "fast" ]; then echo "Sending all processes the SIGTERM signal." @@ -187,16 +119,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 4096 bits: -if [ -r /proc/sys/kernel/random/poolsize ]; then - /bin/dd if=/dev/urandom of=/etc/random-seed count=1 bs=$(expr $(cat /proc/sys/kernel/random/poolsize) / 8) 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 @@ -205,80 +127,5 @@ 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 - -# Close any volumes opened by cryptsetup: -if [ -f /etc/crypttab -a -x /sbin/cryptsetup ]; then - cat /etc/crypttab | grep -v "^#" | grep -v "^$" | while read line; do - # NOTE: we only support LUKS formatted volumes (except for swap)! - LUKS=$(echo $line | tr '\t' ' ' | tr -s ' ' | cut -f1 -d' ') - DEV=$(echo $line | tr '\t' ' ' | tr -s ' ' | cut -f2 -d' ') - OPTS=$(echo $line | tr '\t' ' ' | tr -s ' ' | cut -f4 -d' ') - if /sbin/cryptsetup isLuks $DEV 2>/dev/null ; then - echo "Locking LUKS crypt volume '${LUKS}':" - /sbin/cryptsetup luksClose ${LUKS} - elif echo $OPTS | grep -wq swap ; then - # If any of the volumes was used as encrypted swap, - # then run mkswap on the underlying device - - # in case other Linux installations on this computer should use it: - echo "Erasing encrypted swap '${LUKS}' and restoring normal swap on ${DEV}:" - /sbin/cryptsetup remove ${LUKS} - mkswap $DEV - fi - 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 -ruN rc.d-original/rc.6 rc.d/rc.6 --- rc.d-original/rc.6 2013-09-23 01:43:20.000000000 +0200 +++ rc.d/rc.6 2013-11-08 22:15:10.000000000 +0100 @@ -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,24 +82,6 @@ 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 @@ -131,45 +97,11 @@ 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 - -# Stop udev: -if [ -x /etc/rc.d/rc.udev ]; then - sh /etc/rc.d/rc.udev force-stop -fi - # Kill all remaining processes. if [ ! "$1" = "fast" ]; then echo "Sending all processes the SIGTERM signal." @@ -187,16 +119,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 4096 bits: -if [ -r /proc/sys/kernel/random/poolsize ]; then - /bin/dd if=/dev/urandom of=/etc/random-seed count=1 bs=$(expr $(cat /proc/sys/kernel/random/poolsize) / 8) 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 @@ -205,80 +127,5 @@ 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 - -# Close any volumes opened by cryptsetup: -if [ -f /etc/crypttab -a -x /sbin/cryptsetup ]; then - cat /etc/crypttab | grep -v "^#" | grep -v "^$" | while read line; do - # NOTE: we only support LUKS formatted volumes (except for swap)! - LUKS=$(echo $line | tr '\t' ' ' | tr -s ' ' | cut -f1 -d' ') - DEV=$(echo $line | tr '\t' ' ' | tr -s ' ' | cut -f2 -d' ') - OPTS=$(echo $line | tr '\t' ' ' | tr -s ' ' | cut -f4 -d' ') - if /sbin/cryptsetup isLuks $DEV 2>/dev/null ; then - echo "Locking LUKS crypt volume '${LUKS}':" - /sbin/cryptsetup luksClose ${LUKS} - elif echo $OPTS | grep -wq swap ; then - # If any of the volumes was used as encrypted swap, - # then run mkswap on the underlying device - - # in case other Linux installations on this computer should use it: - echo "Erasing encrypted swap '${LUKS}' and restoring normal swap on ${DEV}:" - /sbin/cryptsetup remove ${LUKS} - mkswap $DEV - fi - 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 -ruN rc.d-original/rc.inet2 rc.d/rc.inet2 --- rc.d-original/rc.inet2 2012-08-15 00:53:35.000000000 +0200 +++ rc.d/rc.inet2 2013-11-08 22:22:26.000000000 +0100 @@ -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 -ruN rc.d-original/rc.S rc.d/rc.S --- rc.d-original/rc.S 2013-10-28 06:06:39.000000000 +0100 +++ rc.d/rc.S 2013-11-08 22:19:49.000000000 +0100 @@ -48,31 +48,6 @@ fi fi -# Mount Control Groups filesystem interface: -if grep -wq cgroup /proc/filesystems ; then - if [ -d /sys/fs/cgroup ]; then - # See linux-*/Documentation/cgroups/cgroups.txt (section 1.6) - # Check if we have some tools to autodetect the available cgroup controllers - if [ -x /usr/bin/lssubsys -a -x /usr/bin/tr -a -x /usr/bin/sed ]; then - # Mount a tmpfs as the cgroup filesystem root - mount -t tmpfs -o mode=0755 cgroup_root /sys/fs/cgroup - # Autodetect available controllers and mount them in subfolders - controllers="$(lssubsys -a 2>/dev/null | tr '\n' ' ' | sed s/.$//)" - for i in $controllers; do - mkdir /sys/fs/cgroup/$i - mount -t cgroup -o $i $i /sys/fs/cgroup/$i - done - unset i controllers - else - # We can't use autodetection so fall back mounting them all together - mount -t cgroup cgroup /sys/fs/cgroup - fi - else - mkdir -p /dev/cgroup - mount -t cgroup cgroup /dev/cgroup - fi -fi - # Initialize the Logical Volume Manager. # This won't start unless we find /etc/lvmtab (LVM1) or # /etc/lvm/backup/ (LVM2). This is created by /sbin/vgscan, so to diff -ruN rc.d-original/rc.syslog rc.d/rc.syslog --- rc.d-original/rc.syslog 2013-06-22 22:49:03.000000000 +0200 +++ rc.d/rc.syslog 2013-11-08 22:29:16.000000000 +0100 @@ -5,7 +5,7 @@ syslogd_start() { if [ -x /usr/sbin/syslogd -a -x /usr/sbin/klogd ]; then - echo -n "Starting sysklogd daemons: " +# echo -n "Starting sysklogd daemons: " echo -n "/usr/sbin/syslogd " /usr/sbin/syslogd # prevent syslogd/klogd race condition on SMP kernels @@ -16,10 +16,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 }
Contact
Comments and criticism can be addressed to roberto dot puzzanghera at sagredo dot eu (http://sagredo.eu)