#! /bin/sh # # initscripts postinst # set -e case "$1" in configure) PREV_VER=$2 ;; abort-upgrade|abort-remove|abort-deconfigure) exit 0 ;; esac umask 022 # # Function like update-rc.d but simpler & faster. # Usage: updatercd basename start|stop NN runlevel . # # Heuristic: use the real update-rc.d if file-rc or insserv is # detected, or if the /etc/rc2.d directory is not present. # updatercd() { [ -f /etc/init.d/$1 ] || return 0 if \ [ -d /usr/share/file-rc/. ] \ || [ -d /usr/lib/file-rc/. ] \ || [ -d /usr/share/insserv/. ] \ || [ ! -d /etc/rc2.d/. ] then # Funniness on next line is because we are running with set -e update-rc.d "$@" >/dev/null && return 0 || return $? fi base=$1 shift tmp="$(echo /etc/rc?.d/[SK]??$base)" case "$tmp" in "/etc/rc?.d/[SK]??$base") : ;; *) return ;; esac while [ "$1" != "" ] do if [ "$1" = stop ] then tlet=K else tlet=S fi case "$2" in ?) lev=0$2 ;; *) lev=$2 ;; esac shift 2 while [ "$1" != "." ] do cd /etc/rc$1.d ln -sf ../init.d/$base $tlet$lev$base shift done shift done } chrooted() { if [ -r /proc/1/root ]; then return 1 fi return 0 } # # Initialize rcS default file. # if [ ! -f /etc/default/rcS ] then cp -p /usr/share/initscripts/default.rcS /etc/default/rcS fi # # In 2.86.ds1-7 the "single" script was moved. # We have to remove the old links _before_ we install new ones. # if dpkg --compare-versions "$PREV_VER" lt "2.86.ds1-7" then update-rc.d -f single remove >/dev/null 2>&1 || : fi # In 2.86.ds1-16, the mtab.sh and hostname.sh scripts were moved. if dpkg --compare-versions "$PREV_VER" lt "2.86.ds1-16" then update-rc.d -f mtab.sh remove >/dev/null 2>&1 || : update-rc.d -f hostname.sh remove >/dev/null 2>&1 || : fi # In 2.86.ds1-21, the sendsigs script were moved, and in 2.86.ds1-35 # it was moved back. if dpkg --compare-versions "$PREV_VER" lt "2.86.ds1-35" then update-rc.d -f sendsigs remove >/dev/null 2>&1 || : fi # # Okay, we could do this with update-rc.d, but that would probably # be pretty slow. This way we win some speed. # DO NOT FOLLOW THIS EXAMPLE IN OTHER PACKAGES. # # Links in runlevel S # updatercd mountkernfs.sh start 2 S . updatercd hostname.sh start 2 S . updatercd mountdevsubfs.sh start 4 S . updatercd bootlogd start 5 S . updatercd checkroot.sh start 10 S . updatercd mtab.sh start 12 S . updatercd checkfs.sh start 30 S . updatercd mountall.sh start 35 S . updatercd mountall-bootclean.sh start 36 S . updatercd mountoverflowtmp start 37 S . stop 63 0 6 . updatercd mountnfs.sh start 45 S . updatercd mountnfs-bootclean.sh start 46 S . updatercd bootmisc.sh start 55 S . updatercd urandom start 55 S . start 30 0 6 . # # Links in runlevels other than S # updatercd halt start 90 0 . updatercd reboot start 90 6 . updatercd umountroot start 60 0 6 . updatercd umountfs start 40 0 6 . updatercd umountnfs.sh start 31 0 6 . updatercd sendsigs start 20 0 6 . updatercd killprocs start 30 1 . updatercd single start 90 1 . updatercd rc.local start 99 2 3 4 5 . updatercd rmnologin start 99 2 3 4 5 . updatercd stop-bootlogd-single start 99 S . updatercd stop-bootlogd start 99 2 3 4 5 . # # Remove scripts that were left behind by older glibc (<< 2.3.2.ds1-12) # versions. We have the same functionality in mount{kern,devsub}fs.sh # # # In 2.86.ds1-10 the "mountvirtfs" script was replaced by # mountkernfs.sh and mountdevsubfs.sh. It was removed completely in # 2.86.ds1-16. # for F in mountkernfs devpts.sh mountvirtfs do rm -f /etc/init.d/$F update-rc.d $F remove >/dev/null 2>&1 || : done # # Create /var/run and /var/lock on the root partition to make sure # they are available when RAMRUN or RAMLOCK is enabled. # If mount fail (like in a vserver environment), just clean up and ignore # it. The admins enabling RAMRUN and RAMLOCK will have to create the # directories themselves in this case. # if dpkg --compare-versions "$PREV_VER" lt "2.86.ds1-22" && ! chrooted then # We need to quickly bind / to another location so we can make them # just in case /var is a mountpoint or a symlink to one. mkdir -p /.root if mount -n --bind / /.root ; then if [ -L /.root/var ] && [ ! -d /.root/var ] ; then # No use trying if /var is a relative symlink. It is not # going to work. : else mkdir -p /.root/var/run /.root/var/lock fi umount /.root fi rmdir /.root fi # # When installing for the first time or upgrading from version before 2.86.ds1-27, # a reboot is needed to make the /lib/init/rw/ tmpfs available. Flag this # using notify-reboot-required. Not mounting it here as it creates problem # for debootstrap, vservers, pbuilder and cowbuilder. # if dpkg --compare-versions "$PREV_VER" lt "2.86.ds1-27" \ && [ -x /usr/share/update-notifier/notify-reboot-required ]; then /usr/share/update-notifier/notify-reboot-required fi # # Create initial log files # [ "$PREV_VER" ] || chmod 755 /var/log/fsck || : for F in /var/log/dmesg /var/log/boot /var/log/fsck/checkroot /var/log/fsck/checkfs do if [ ! -f "$F" ] && touch "$F" >/dev/null 2>&1 then echo "(Nothing has been logged yet.)" >| "$F" chown root:adm "$F" chmod 640 "$F" fi done # # Set up nologin symlink so that dynamic-login-disabling will work # (when DELAYLOGIN is set to "yes") # if [ ! -L /etc/nologin ] && [ ! -e /etc/nologin ] then rm -f /var/lib/initscripts/nologin ln -s /var/lib/initscripts/nologin /etc/nologin fi # # Set up motd stuff, putting variable file in /var/run/ # if [ ! -f /etc/motd.tail ] then if [ -f /etc/motd ] then sed 1d /etc/motd > /etc/motd.tail [ -s /etc/motd.tail ] || rm -f /etc/motd.tail fi fi if [ ! -f /var/run/motd ] then if [ -f /etc/motd ] then cat /etc/motd > /var/run/motd else :>/var/run/motd fi fi if [ ! -L /etc/motd ] then [ -f /etc/default/rcS ] && . /etc/default/rcS if [ "$EDITMOTD" = no ] then cat /var/run/motd > /etc/motd.static ln -sf motd.static /etc/motd else ln -sf /var/run/motd /etc/motd fi fi # # Mount kernel virtual filesystems...not. # This causes problems in pbuilder. # # #if [ -x /etc/init.d/mountkernfs.sh ] #then # if which invoke-rc.d >/dev/null 2>&1 # then # invoke-rc.d mountkernfs.sh start || : # else # /etc/init.d/mountkernfs.sh start # fi #fi # # Create /dev/pts, /dev/shm directories # if [ "$(uname -s)" = Linux ] then # # Only create /dev/{pts,shm} if /dev is on the # root file system. If some package has mounted a # seperate /dev (ramfs from udev, devfs) it is # responsible for the presence of those subdirs. # if ! mountpoint -q /dev then [ -d /dev/pts ] || { mkdir --mode=755 /dev/pts ; chown root:root /dev/pts ; } [ -d /dev/shm ] || { mkdir --mode=755 /dev/shm ; chown root:root /dev/shm ; } fi fi # # Create /etc/rc.local on first time install and when upgrading from # versions before "2.86.ds1-16" # if dpkg --compare-versions "$PREV_VER" lt "2.86.ds1-16" then if [ ! -e /etc/rc.local ]; then cat << EOF > /etc/rc.local #!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. exit 0 EOF # make sure it's enabled by default. chmod 755 /etc/rc.local fi fi :