mountvirtfs does not mkdir /var/run and /var/lock
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
sysvinit (Ubuntu) |
Invalid
|
Undecided
|
Unassigned | ||
Bug Description
Here's the full problem.
If /var is made to be a separate partition, and therefore /var is an empty directory on the root partition, mounting /var/run fails, which in turns causes ifup lo to fail later because /var/run is now a directory on the new /var partition and isn't wiped from boot to boot, causing a stale network state file to still be there, and lo not to come up, which in turn breaks a lot of things like portmapper, nfs and others.
As far as I can tell, the fix is simply to do what the file in the comment already says, but doesn't do for some reason. Mmmh, I think I see why, it's because it's a bit difficult since / is likely still read only at the time.
If you don't like this, you could put that mkdir at unmount time after /var is umounted, and before the system reboots
--- mountvirtfs.orig 2007-11-30 18:55:55.000000000 -0800
+++ mountvirtfs 2007-11-30 19:35:30.000000000 -0800
@@ -42,6 +42,14 @@
# Mount /var/run and /var/lock as tmpfs.
# /var may be on another drive so create /var/run if we need to
+ if [ ! -d /var/run -o ! -d /var/lock ]; then
+ # unfortunately, / is still likely still read only for now
+ if ! mkdir -p /var/run /var/lock 2>/dev/null; then
+ mount -n -o remount,rw /
+ mkdir -p /var/run /var/lock
+ mount -n -o remount,ro /
+ fi
+ fi
domount tmpfs /var/run "-o mode=0755"
domount tmpfs /var/lock "-o mode=1777"
The problem occured at least on dapper, but as far as I can tell, gutsy has the same problem.
You can't make a directory there because the filesystem is read-only at that point.
Those directories are already made on shutdown in /etc/init. d/umountroot