mirror of
https://git.yoctoproject.org/poky
synced 2026-04-26 09:32:14 +02:00
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>
1.6 KiB
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