[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