Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
appliance: Remove cruft and run udevd directly.
This commit removes a lot of cruft from old RHEL which was required to
start udev.  Instead we run the daemon directly.

Also it removes the fallback path which created some device nodes in
/dev by hand.  This likely did not work.  This also removes the
dependency on MAKEDEV which is long gone from most distros.

This is required for Ubuntu, since the /etc/init.d/udev script didn't
actually work.  The most common symptom was that /dev/virtio-ports/*
was not created because udev didn't process the cold start events.
  • Loading branch information
rwmjones committed Oct 14, 2013
1 parent c9f9801 commit ec6f9ee
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 42 deletions.
54 changes: 13 additions & 41 deletions appliance/init
Expand Up @@ -36,49 +36,21 @@ mkdir -p /run/lock
# devtmpfs is required since udev 176
mount -t devtmpfs /dev /dev

if [ ! -L /etc/init.d/udev -a -x /etc/init.d/udev ]; then
if type service >/dev/null 2>&1; then
service udev start
else
/etc/init.d/udev start
fi
elif [ -x /sbin/start_udev ] && /sbin/start_udev; then
:
else
# Find udevd and run it directly.
for f in /sbin/udevd /lib/udev/udevd \
/lib/systemd/systemd-udevd /usr/lib/systemd/systemd-udevd \
/usr/lib/udev/udevd; do
if [ -x "$f" ]; then UDEVD="$f"; fi
done
if [ -n "$UDEVD" ]; then
echo -e '\000\000\000\000' > /proc/sys/kernel/hotplug
$UDEVD --daemon
udevadm trigger
udevadm settle --timeout=600
else
echo No udevd, creating /dev manually.
mount -t tmpfs none /dev
mkdir /dev/pts /dev/shm /dev/mapper
mount -t devpts -o gid=5,mode=620 /dev/pts /dev/pts
# Must do each MAKEDEV individually, because if one device fails,
# MAKEDEV will quit without creating the rest (RHBZ#507374).
for dev in mem null port zero core full ram tty console fd \
hda hdb hdc hdd sda sdb sdc sdd loop sd; do
MAKEDEV $dev ||:
done
mknod /dev/ptmx c 5 2; chmod 0666 /dev/ptmx
mknod /dev/random c 1 8; chmod 0666 /dev/random
mknod /dev/urandom c 1 9; chmod 0444 /dev/urandom
ln -sf /proc/self/fd/0 /dev/stdin
ln -sf /proc/self/fd/1 /dev/stdout
ln -sf /proc/self/fd/2 /dev/stderr

modprobe virtio_pci
modprobe virtio_net
fi
# Find udevd and run it directly.
for f in /sbin/udevd /lib/udev/udevd \
/lib/systemd/systemd-udevd /usr/lib/systemd/systemd-udevd \
/usr/lib/udev/udevd; do
if [ -x "$f" ]; then UDEVD="$f"; fi
done
if [ -z "$UDEVD" ]; then
echo "udev not found! Things will probably not work ..."
fi

echo -e '\000\000\000\000' > /proc/sys/kernel/hotplug
$UDEVD --daemon
udevadm trigger
udevadm settle --timeout=600

if grep -sq selinux=1 /proc/cmdline; then
mount -t selinuxfs none /sys/fs/selinux
fi
Expand Down
1 change: 0 additions & 1 deletion appliance/packagelist.in
Expand Up @@ -41,7 +41,6 @@
kernel
libcap
libldm /* only Fedora has this for now, but we should add it to others later*/
MAKEDEV
nilfs-utils
ntfsprogs
ntfs-3g
Expand Down

0 comments on commit ec6f9ee

Please sign in to comment.