> Does checkroot.sh need to change at all with respect to what it does to > /etc/mtab?
For example, something like the following, which checks /etc/mtab is a symlink on Linux and attempts to create one to /proc/mounts if the conditions are correct. Just in case initscripts postinst maintainer scripts cannot create the symlink, because possibly the package was upgraded/installed offline and /proc was not mounted. Also clear out devfs stuff, which is afaik no longer supported. Kel. --- --- a/debian/initscripts/etc/init.d/checkroot.sh +++ b/debian/initscripts/etc/init.d/checkroot.sh @@ -39,7 +39,6 @@ do_start () { # device node, # 2) Swap that is on a md device or a file that may be on a md # device, - # 3) The mount parameters for a devfs filesystem. # exec 9<&0 </etc/fstab @@ -52,7 +51,6 @@ do_start () { rootcheck=no swap_on_lv=no swap_on_file=no - devfs= while read DEV MTPT FSTYPE OPTS DUMP PASS JUNK do @@ -75,11 +73,6 @@ do_start () { [ "$FSTYPE" = "swap" ] && swap_on_file=yes ;; *) - # Devfs definition ? - if [ "$FSTYPE" = "devfs" ] && [ "$MTPT" = "/dev" ] && mountpoint -q /dev - then - devfs="-t $FSTYPE $DEV $MTPT" - fi ;; esac [ "$MTPT" != "/" ] && continue @@ -339,42 +332,17 @@ but requested that the system be restart fi # - # We only create/modify /etc/mtab if the location where it is - # stored is writable. If /etc/mtab is a symlink into /proc/ - # then it is not writable. - # - INIT_MTAB_FILE=no - MTAB_PATH="$(readlink -f /etc/mtab || :)" - case "$MTAB_PATH" in - /proc/*) - ;; - /*) - if touch "$MTAB_PATH" >/dev/null 2>&1 - then - :> "$MTAB_PATH" - rm -f ${MTAB_PATH}~ - INIT_MTAB_FILE=yes - fi - ;; - "") - [ -L /etc/mtab ] && MTAB_PATH="$(readlink /etc/mtab)" - if [ "$MTAB_PATH" ] + # If /etc/mtab is not a symlink, attempt to symlink it to /proc/mounts + # on Linux. See #494001 + # + if [ Linux = "$KERNEL" ] && [ ! -L /etc/mtab ] && [ -f /proc/mounts ] + then + if touch /etc/mtab >/dev/null 2>&1 then - log_failure_msg "Cannot initialize ${MTAB_PATH}." + rm -f /etc/mtab && ln -s /proc/mounts /etc/mtab else - log_failure_msg "Cannot initialize /etc/mtab." + log_warning_msg "cannot symlink /etc/mtab to /proc/mounts" fi - ;; - *) - log_failure_msg "Illegal mtab location '${MTAB_PATH}'." - ;; - esac - - if [ "$INIT_MTAB_FILE" = yes ] - then - [ "$roottype" != none ] && - mount -f -o $rootopts -t $roottype $fstabroot / - [ "$devfs" ] && mount -f $devfs fi # ---