diff options
author | Harald Hoyer <harald@redhat.com> | 2008-09-16 10:23:22 +0200 |
---|---|---|
committer | Bill Nottingham <notting@redhat.com> | 2008-09-16 20:13:24 -0400 |
commit | e99add4a34459654609147c8989d41cb450d0117 (patch) | |
tree | 25c1d7688504df9bfd2d570d1d04f06c8f523d8c /rc.d/rc.sysinit | |
parent | 0e44773240e01476b2709f9d206b86d5dfecffcf (diff) | |
download | initscripts-e99add4a34459654609147c8989d41cb450d0117.tar initscripts-e99add4a34459654609147c8989d41cb450d0117.tar.gz initscripts-e99add4a34459654609147c8989d41cb450d0117.tar.bz2 initscripts-e99add4a34459654609147c8989d41cb450d0117.tar.xz initscripts-e99add4a34459654609147c8989d41cb450d0117.zip |
https://bugzilla.redhat.com/show_bug.cgi?id=433702
Changes to init scripts to better support stateless:
--rc.sysinit--
- don't update mtab in a r/o root
- mount on sys and /dev/pts returns EBUSY on a readonly root
- [ -n $CLIENTSTATE ] is always returning true, causing an unnecessary timeout
--network--
- /etc/mtab may not have any mount information in the readonly-root
cause, but the root mount is likely to be a network mount. Without
this, nfs hangs the reboot process.
--halt--
- don't try and update a read-only mtab
--rwtab--
- /var/empty/sshd/etc/localtime needs to be overwritten by sshd at
startup
- /var/lib/random-seed is written to at shutdown; this fixes the
error but doesn't return the functionality lost in a r/o /var/lib.
Diffstat (limited to 'rc.d/rc.sysinit')
-rwxr-xr-x | rc.d/rc.sysinit | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/rc.d/rc.sysinit b/rc.d/rc.sysinit index 8e274c7c..52e1ca5a 100755 --- a/rc.d/rc.sysinit +++ b/rc.d/rc.sysinit @@ -514,7 +514,7 @@ if [ "$READONLY" = "yes" -o "$TEMPORARY_STATE" = "yes" ]; then /bin/true elif [ x$state_mount_dev != x ] && mount $state_mount_dev $mountopts "$STATE_MOUNT" > /dev/null 2>&1; then /bin/true - elif [ -n "$CLIENTSTATE" ]; then + elif [ ! -z "$CLIENTSTATE" ]; then # No local storage was found. Make a final attempt to find # state on an NFS server. @@ -642,23 +642,29 @@ if [ -n "$SELINUX_STATE" -a "$READONLY" != "yes" ]; then fi fi -# Clear mtab -(> /etc/mtab) &> /dev/null +if [ "$READONLY" != "yes" ] ; then + # Clear mtab + (> /etc/mtab) &> /dev/null -# Remove stale backups -rm -f /etc/mtab~ /etc/mtab~~ + # Remove stale backups + rm -f /etc/mtab~ /etc/mtab~~ -# Enter mounted filesystems into /etc/mtab -mount -f / -mount -f /proc >/dev/null 2>&1 -mount -f /sys >/dev/null 2>&1 -mount -f /dev/pts >/dev/null 2>&1 -mount -f /proc/bus/usb >/dev/null 2>&1 + # Enter mounted filesystems into /etc/mtab + mount -f / + mount -f /proc >/dev/null 2>&1 + mount -f /sys >/dev/null 2>&1 + mount -f /dev/pts >/dev/null 2>&1 + mount -f /proc/bus/usb >/dev/null 2>&1 +fi # Mount all other filesystems (except for NFS and /proc, which is already # mounted). Contrary to standard usage, # filesystems are NOT unmounted in single user mode. -action $"Mounting local filesystems: " mount -a -t nonfs,nfs4,smbfs,ncpfs,cifs,gfs,gfs2 -O no_netdev +if [ "$READONLY" != "yes" ] ; then + action $"Mounting local filesystems: " mount -a -t nonfs,nfs4,smbfs,ncpfs,cifs,gfs,gfs2 -O no_netdev +else + action $"Mounting local filesystems: " mount -a -n -t nfs4,smbfs,ncpfs,cifs,gfs,gfs2 -O no_netdev +fi # Update quotas if necessary if [ X"$_RUN_QUOTACHECK" = X1 -a -x /sbin/quotacheck ]; then |