Openwrt/package/base-files/files/etc/preinit
Geoff Levand 525d86686e udev: Update udev package from udev-106 to udev-142
Update the init scripts have to use udevadm where appropriate.
The udev package no longer provides separate udev utilities
like udevtrigger and udevsettle.  These have been incorporated
into the udev admin program udevadm.

Replace the udevextras sub package with config options to the udev
package.

Update the preinit script to check for '/lib/udev/devices', and
copy it to '/dev/ if it is found, then to conditionaly setup
/dev the old way with mknod etc.  Udev now recommends using
the directory '/lib/udev/devices' to initialize the '/dev'
directory at startup.

Signed-off-by: Geoff Levand <geoffrey.levand@am.sony.com>

SVN-Revision: 17378
2009-08-24 20:19:26 +00:00

94 lines
2.4 KiB
Bash
Executable File

#!/bin/sh
# Copyright (C) 2006 OpenWrt.org
export PATH=/bin:/sbin:/usr/bin:/usr/sbin
. /etc/diag.sh
failsafe_ip() {
ifconfig $ifname 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255 up
}
failsafe() {
[ -n "$ifname" ] && grep "$ifname" /proc/net/dev >/dev/null && {
failsafe_ip
netmsg 192.168.1.255 "Entering Failsafe!"
telnetd -l /bin/login.sh <> /dev/null 2>&1
}
lock /tmp/.failsafe
ash --login
}
mount proc /proc -t proc
mount sysfs /sys -t sysfs
size=$(awk '/MemTotal:/ {l=5242880;mt=($2*1024);print((s=mt/2)<l)&&(mt>l)?mt-l:s}' /proc/meminfo)
mount tmpfs /tmp -t tmpfs -o size=$size,nosuid,nodev,mode=1777
if grep devfs /proc/filesystems > /dev/null; then
mount devfs /dev -t devfs
M0=/dev/pty/m0
M1=/dev/pty/m1
HOTPLUG=/sbin/hotplug-call
elif [ -x /sbin/hotplug2 ]; then
mount -t tmpfs tmpfs /dev -o size=512K
mknod /dev/console c 5 1
/sbin/hotplug2 --set-worker /lib/hotplug2/worker_fork.so --set-rules-file /etc/hotplug2-init.rules --no-persistent --set-coldplug-cmd /sbin/udevtrigger
/sbin/hotplug2 --set-worker /lib/hotplug2/worker_fork.so --set-rules-file /etc/hotplug2-init.rules --persistent &
M0=/dev/ptmx
M1=/dev/ptmx
HOTPLUG=
elif [ -x /sbin/udevd ]; then
mount -n -t tmpfs -o mode=0755 udev /dev
[ -d /lib/udev/devices ] && cp -af /lib/udev/devices/* /dev/
[ -c /dev/console ] || mknod -m 0600 /dev/console c 5 1
[ -c /dev/null ] || mknod -m 0666 /dev/null c 1 3
/sbin/udevd --daemon --resolve-names=never
/sbin/udevadm trigger
/sbin/udevadm settle
M0=/dev/pty/ptmx
M1=/dev/pty/ptmx
HOTPLUG=
fi
[ -d /dev/pts ] || mkdir -p /dev/pts
[ -d /dev/shm ] || mkdir -p /dev/shm
mount devpts /dev/pts -t devpts
# the shell really doesn't like having stdin/out closed
# that's why we use /dev/pty/m0 and m1 as replacement
# for /dev/console if there's no serial console available
dd if=/dev/console of=/dev/null bs=1 count=0 >/dev/null 2>/dev/null && {
M0=/dev/console
M1=/dev/console
}
exec <$M0 >$M1 2>&0
echo "- preinit -"
echo "Press CTRL-C for failsafe"
trap 'FAILSAFE=true' INT
trap 'FAILSAFE=true' USR1
[ -e /etc/preinit.arch ] && . /etc/preinit.arch
set_state preinit
echo "$HOTPLUG" > /proc/sys/kernel/hotplug
export FAILSAFE
eval ${FAILSAFE:+failsafe}
lock -w /tmp/.failsafe
if [ -z "$INITRAMFS" ]; then
mount_root
[ -f /sysupgrade.tgz ] && {
echo "- config restore -"
cd /
mv sysupgrade.tgz /tmp
tar xzf /tmp/sysupgrade.tgz
rm -f /tmp/sysupgrade.tgz
sync
}
echo "- init -"
exec /sbin/init
fi