From efaf6fda01872fbe31fbb7c5bfa2e00950dfc6e7 Mon Sep 17 00:00:00 2001 From: Colin Guthrie <colin@mageia.org> Date: Sun, 6 May 2012 14:39:19 +0100 Subject: [PATCH 506/514] rootfs-block: Support lilo style device numbers. Lilo supplies root=900 rather than root=/dev/md0. Similarly it would say root=801 rather than root=/dev/sda1. This patch simply interprets that number and creates appropriate udev rules to create the /dev/root symlink as needed. --- modules.d/95rootfs-block/block-genrules.sh | 11 ++++++++++- modules.d/95rootfs-block/parse-block.sh | 4 ++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/modules.d/95rootfs-block/block-genrules.sh b/modules.d/95rootfs-block/block-genrules.sh index 446ddf2b..187793e6 100755 --- a/modules.d/95rootfs-block/block-genrules.sh +++ b/modules.d/95rootfs-block/block-genrules.sh @@ -1,7 +1,16 @@ #!/bin/sh # shellcheck disable=SC2154 -if [ "${root%%:*}" = "block" ]; then +if [ -n "$rootdevnum" ]; then + major=$(( 0x$rootdevnum / 256 )) + minor=$(( 0x$rootdevnum - ( $major * 256 ) )) + { + printf 'ACTION=="add|change", ENV{MAJOR}=="%d", ENV{MINOR}=="%d", SYMLINK+="root"\n' \ + $major $minor + } >> /etc/udev/rules.d/99-root.rules + + wait_for_dev /dev/root +elif [ "${root%%:*}" = "block" ]; then { printf 'KERNEL=="%s", SYMLINK+="root"\n' \ "${root#block:/dev/}" diff -up ./modules.d/95rootfs-block/parse-block.sh.tv ./modules.d/95rootfs-block/parse-block.sh diff --git a/modules.d/95rootfs-block/parse-block.sh b/modules.d/95rootfs-block/parse-block.sh index 2905a1e0..34ced98e 100755 --- a/modules.d/95rootfs-block/parse-block.sh +++ b/modules.d/95rootfs-block/parse-block.sh @@ -10,6 +10,11 @@ case "${root#block:}" in # shellcheck disable=SC2034 rootok=1 ;; + [1-9][0-9][0-9]) + rootdevnum=$root + root=block:/dev/root + rootok=1 + ;; esac [ "${root%%:*}" = "block" ] && wait_for_dev "${root#block:}" -- 2.13.5