Files
poky/meta/packages/udev/udev-124/init
Yu Ke 1c803f3ffb Fix the boot process udev warning
Phenomena: there is udev warning in boot process
        tar: can't open '/etc/dev.tar': Read-only file system

The reason is that the init script /etc/rcS.d/S04udev will try to tar the /dev as cache to speed up udev at next boot time. Unfortunately, S04udev is too early and the filesystem is not writable yet.

To fix it, this patch split the cache action to another init script, and register it as /etc/rcS.d/S36, which is after the S35mountall, and the filesystem is already writable.

Signed-off-by: Yu Ke <ke.yu@intel.com>
2010-06-09 12:04:51 +01:00

1.6 KiB

#!/bin/sh -e

BEGIN INIT INFO

Provides: udev

Required-Start: mountvirtfs

Required-Stop:

Default-Start: S

Default-Stop:

Short-Description: Start udevd, populate /dev and load drivers.

END INIT INFO

export TZ=/etc/localtime

[ -d /sys/class ] || exit 1 [ -r /proc/mounts ] || exit 1 [ -x /sbin/udevd ] || exit 1 [ -f /etc/udev/udev.conf ] && . /etc/udev/udev.conf

kill_udevd() { if [ -x /sbin/pidof ]; then pid=/sbin/pidof -x udevd [ -n "$pid" ] && kill $pid fi }

export ACTION=add

propagate /dev from /sys

echo -n "Starting udev"

mount the tmpfs on /dev, if not already done

LANG=C awk "$2 == "/dev" && $4 == "tmpfs" { exit 1 }" /proc/mounts && { mount -n -o mode=0755 -t tmpfs none "/dev" mkdir -m 0755 /dev/pts mkdir -m 0755 /dev/shm }

if [ -e /etc/dev.tar ]; then (cd /; tar xf /etc/dev.tar) not_first_boot=1 fi

make_extra_nodes

kill_udevd > "/dev/null" 2>&1

    # trigger the sorted events
    echo -e '\000\000\000\000' > /proc/sys/kernel/hotplug
    /sbin/udevd -d

    /sbin/udevadm control env STARTUP=1
	if [ "$not_first_boot" != "" ];then
		/sbin/udevadm trigger --subsystem-nomatch=tty --subsystem-nomatch=mem --subsystem-nomatch=vc --subsystem-nomatch=vtconsole --subsystem-nomatch=misc --subsystem-nomatch=dcon --subsystem-nomatch=pci_bus  --subsystem-nomatch=graphics  --subsystem-nomatch=backlight --subsystem-nomatch=video4linux  --subsystem-nomatch=platform
		(/sbin/udevadm settle --timeout=3; /sbin/udevadm control env STARTUP=)&
	else
		/sbin/udevadm trigger
		/sbin/udevadm settle
	fi

echo exit 0