From 37b55308f19b7743673842581469b8379ec8525b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20B=C3=A4chler?= Date: Wed, 9 Jun 2010 09:41:40 +0200 Subject: Rewrite early RTC device creation Creating the RTC device will result in an error if devtmpfs is used, as it already exists after loading the module. The new code skips the mknod if the device is already present. Additionally to rtc-cmos, we now also try to load rtc and genrtc, as some custom kernels use the "old" misc RTC device instead of the newer RTC class. In this case, the created device is also different. This should fix FS#18078. --- rc.sysinit | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/rc.sysinit b/rc.sysinit index 61b04c9..6d4c917 100755 --- a/rc.sysinit +++ b/rc.sysinit @@ -56,12 +56,20 @@ fi if [ -n "$HWCLOCK_PARAMS" ]; then # enable rtc access - /sbin/modprobe rtc-cmos >/dev/null 2>&1 - RTC_MAJOR=$(/bin/grep -w rtc /proc/devices 2>/dev/null) - RTC_MAJOR="${RTC_MAJOR%% *}" - if [ -n "$RTC_MAJOR" ]; then - /bin/mknod /dev/rtc0 c $RTC_MAJOR 0 - /bin/ln -s /dev/rtc0 /dev/rtc + /sbin/modprobe -q rtc-cmos + # some custom kernels use rtc/genrtc, try to load those too + /sbin/modprobe -q rtc + /sbin/modprobe -q genrtc + # If devtmpfs is used, the required RTC device already exists now + # Otherwise, create whatever device is available + if [ ! -c /dev/rtc -a ! -c /dev/rtc0 ]; then + if [ -f /sys/class/rtc/rtc0/dev ]; then + IFS=: read -r major minor < /sys/class/rtc/rtc0/dev + /bin/mknod /dev/rtc0 c $major $minor + elif [ -f /sys/class/misc/rtc/dev ]; then + IFS=: read -r major minor < /sys/class/misc/rtc/dev + /bin/mknod /dev/rtc c $major $minor + fi fi # Do a clock set here for a few reasons: -- cgit v1.2.3