[Pkg-sysvinit-devel] Bug#549260: insserv: no longer unmounts (root) filesystem on shutdown/reboot

Steven Chamberlain steven at pyro.eu.org
Mon Dec 13 21:52:18 UTC 2010


Hi,

I just reproduced this bug on a Debian lenny machine.  For some silly 
reason I decided to do the following:

# apt-get install insserv

# insserv
insserv: warning: current start runlevel(s) (0) of script `halt' 
overwrites defaults (empty).
insserv: warning: current start runlevel(s) (0 6) of script `umountfs' 
overwrites defaults (empty).
insserv: warning: current start runlevel(s) (6) of script `reboot' 
overwrites defaults (empty).
insserv: warning: current start runlevel(s) (0 6) of script `sendsigs' 
overwrites defaults (empty).
insserv: warning: current start runlevel(s) (0 6) of script `umountroot' 
overwrites defaults (empty).
insserv: warning: current start runlevel(s) (0 6) of script 
`umountnfs.sh' overwrites defaults (empty).

# ls /etc/rc0.d
K01acct
K01apcupsd
K01arpwatch
K01atd
K01edac
K01etc-setserial
K01exim4
K01fancontrol
K01ipmievd
K01mdadm
K01mrd6
K01nfs-kernel-server
K01ntp
K01openbsd-inetd
K01radvd
K01rng-tools
K01rsync
K01setserial
K01smartmontools
K01tftpd-hpa
K01vz
K01watchdog
K01wd_keepalive
K01xinetd
K02nfs-common
K03rsyslog
K03syslog-ng
K04hwclock.sh
K05mountoverflowtmp
README
S01halt
S01sendsigs
S01umountfs
S01umountnfs.sh
S01umountroot
S07mdadm-raid
S09cryptdisks-early
S10ifupdown
S10lvm2
S11cryptdisks
S16networking
S16urandom
S17portmap


It's lucky I checked to see what the result was of running insserv, 
before rebooting or shutting down the machine.  I suspect it would have 
caused a RAID desync followed by a fsck and who knows what else.

Adding Required-Start: $all to /etc/init.d/{halt,reboot} and re-running 
insserv *appeared* to fix the most obvious issue.  But I think I know 
why that's wrong;  the other initscripts should instead have the 
appropriate Required-Stop entries to make sure they get run before their 
dependencies (eg. local/remote filesystems, syslog).  And then it would 
be *implied* that 'halt' or 'reboot' must run last.

But some initscripts in lenny perhaps predate dependency-based booting 
so not all of them have the appropriate entries there.  This means that 
the ordering of my startup scripts is probably messed up now too. 
Fortunately I keep backups.

I checked, and upgrading to the squeeze versions of insserv, sysvinit, 
sysv-rc and initscripts does correctly rename the contents of 
/etc/rc{0,6}.d from S* to K*.  To completely fix the mess I made by 
running 'insserv' without arguments on a lenny system, I think a full 
'apt-get dist-upgrade' to squeeze might work.  In fact it may be a good 
time for me to upgrade to squeeze anyway.

I think the advice here would be 'DON'T RUN INSSERV WITHOUT ARGUMENTS! 
At least on a lenny install'.  But how many Linux commands ultimately 
lead to data loss / filesystem corruption by running them without any 
arguments, especially without using something like a '--force' option?

Regards,
-- 
Steven Chamberlain
steven at pyro.eu.org





More information about the Pkg-sysvinit-devel mailing list