diff options
author | Thomas Deutschmann <whissi@gentoo.org> | 2020-07-23 22:00:12 +0200 |
---|---|---|
committer | Thomas Deutschmann <whissi@gentoo.org> | 2020-07-23 22:00:12 +0200 |
commit | 0048f44c081dce2e296b48c71a208abf2a815c84 (patch) | |
tree | 65a5a5e098b297c6c2b4931931ebdf5c7837ce10 | |
parent | kmod: remove hardcoded $BROOT value (diff) | |
download | genkernel-0048f44c081dce2e296b48c71a208abf2a815c84.tar.gz genkernel-0048f44c081dce2e296b48c71a208abf2a815c84.tar.bz2 genkernel-0048f44c081dce2e296b48c71a208abf2a815c84.zip |
defaults/linuxrc: Support devices with symlinks
/dev/vg/foo can be a symlink to ../dm-1. This commit will allow
to use such a value for devices, i.e. ROOT=/dev/vg/foo.
Signed-off-by: Thomas Deutschmann <whissi@gentoo.org>
-rw-r--r-- | defaults/initrd.scripts | 24 | ||||
-rw-r--r-- | defaults/linuxrc | 5 |
2 files changed, 20 insertions, 9 deletions
diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts index 6dc588f7..3bede8ae 100644 --- a/defaults/initrd.scripts +++ b/defaults/initrd.scripts @@ -905,31 +905,39 @@ findnfsmount() { } find_real_device() { - local DEVICE="${1}" - case "${DEVICE}" in + local device="${1}" + local real_device= + local candidate= + case "${device}" in UUID\=*|LABEL\=*|PARTLABEL=*|PARTUUID\=*) - local REAL_DEVICE="" local retval=1 if [ ${retval} -ne 0 ] then - REAL_DEVICE=$(findfs "${DEVICE}" 2>/dev/null) + candidate=$(findfs "${device}" 2>/dev/null) retval=$? fi if [ ${retval} -ne 0 ] then - REAL_DEVICE=$(blkid -o device -l -t "${DEVICE}" 2>/dev/null) + candidate=$(blkid -o device -l -t "${device}" 2>/dev/null) retval=$? fi - if [ ${retval} -eq 0 ] && [ -n "${REAL_DEVICE}" ] + if [ ${retval} -eq 0 ] && [ -n "${candidate}" ] then - DEVICE="${REAL_DEVICE}" + real_device="${candidate}" fi ;; + *) + candidate=$(readlink -f "${device}") + if [ -b "${candidate}" ] + then + real_device="${candidate}" + fi esac - printf "%s" "${DEVICE}" + + printf "%s" "${real_device}" } check_loop() { diff --git a/defaults/linuxrc b/defaults/linuxrc index 5354d09b..f1357f67 100644 --- a/defaults/linuxrc +++ b/defaults/linuxrc @@ -783,15 +783,18 @@ do fi ;; *) - if [ -b "${REAL_ROOT}" ] + ROOT_DEV=$(readlink -f "${REAL_ROOT}") + if [ -b "${ROOT_DEV}" ] then got_good_root=1 + REAL_ROOT=${ROOT_DEV} echo good_msg "Root device detected as ${REAL_ROOT}!" break fi ;; esac + unset ROOT_DEV if [ "${got_good_root}" != '1' ] then |