Bug 130574

Summary: /etc/rc.d/rc.sysinit starts udev even when it is not really available
Product: [Fedora] Fedora Reporter: Michal Jaegermann <michal>
Component: initscriptsAssignee: Bill Nottingham <notting>
Status: CLOSED RAWHIDE QA Contact: Brock Organ <borgan>
Severity: medium Docs Contact:
Priority: medium    
Version: 3CC: ckloiber, rvokal
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2004-10-14 04:44:15 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 123268    

Description Michal Jaegermann 2004-08-22 01:04:59 UTC
Description of problem:

In the current version of startup there is the following code:


if [ -f /etc/udev/udev.conf ];then
        . /etc/udev/udev.conf
fi

if [ "$USE_UDEV" = "yes" -a "$UDEV_RAMFS" = "yes" ]; then
        [ -x /sbin/start_udev ] && /sbin/start_udev
fi

So far, so good but if 'initrd' image was done without udev
(for whatever reasons; a flag '--noudev' was used, for example,
or anything else) then this will run /sbin/start_udev when
really there is no such thing.  See bug #130573 for an example
of side-effects.

A check that something is indeed mounted on $udev_root, as
defined in /etc/udev/udev.conf, is missing here.  It will have
to peek into /proc/mounts but if /proc is not mounted yet then
/sbin/start_udev will fail too.

Version-Release number of selected component (if applicable):
initscripts-7.66-1

How reproducible:
Always

Comment 1 Michal Jaegermann 2004-08-24 20:52:15 UTC
Even if the current rawhide version of udev is changing a default
configuration to UDEV_RAMFS=no then it seems to me that a check
like that should be employed:

--- /etc/rc.d/rc.sysinit~	2004-08-20 09:57:15.000000000 -0600
+++ /etc/rc.d/rc.sysinit	2004-08-24 14:30:05.563598249 -0600
@@ -34,7 +34,13 @@ if [ -f /etc/udev/udev.conf ];then
 fi
 
 if [ "$USE_UDEV" = "yes" -a "$UDEV_RAMFS" = "yes" ]; then
-	[ -x /sbin/start_udev ] && /sbin/start_udev
+	if [ "$UDEV_KEEP_DEV" = "yes" ] ; then
+		[ -r /proc/mounts ] && \
+		    grep -q " ${udev_root%/} " /proc/mounts && \
+		    [ -x /sbin/start_udev ] && /sbin/start_udev
+	else
+	    	[ -x /sbin/start_udev ] && /sbin/start_udev
+	fi
 fi
 
 # Check SELinux status

(although a logic in /sbin/start_udev seems to be somewhat
convoluted).  Alternatively something like a patch attached to
bug #130808 seems to be needed; or maybe both so initscripts
may not presume that /sbin/start_udev is always correct.

Comment 2 Chris Kloiber 2004-08-25 18:12:35 UTC
I've found it's currently impossible to use MD or LVM devices thanks
to this. It only seems to work whan there is no software raid or LVM
on the system. udev is currently being started on the real rootfs when
it's mounted ro, so no device entries are being created.

Comment 3 Bill Nottingham 2004-10-14 04:44:15 UTC
This is 'fixed' now in the way that udev is used.