[arch-dev-public] [RFCv2] Rewrite early RTC device creation
Dan McGee
dpmcgee at gmail.com
Wed Jun 9 08:30:15 EDT 2010
On Wed, Jun 9, 2010 at 2:43 AM, Thomas Bächler <thomas at archlinux.org> wrote:
> 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 files 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:
> --
Looks great now, thanks Thomas. (And also Andres for the feedback)
-Dan
More information about the arch-dev-public
mailing list