From b99e58d227e9633c767977de85db7305374720d4 Mon Sep 17 00:00:00 2001 From: Alejandro Mery Date: Mon, 4 May 2009 15:05:50 -0400 Subject: [PATCH] init: extended to handle UUID=, LABEL= and nfs:host:path as root= --- initramfs/etc_rc.d_rc.sysinit.sh | 16 ++++++++++++ initramfs/etc_rc.d_rc.trymount.sh | 41 ++++++++++++++++++++++++------- 2 files changed, 48 insertions(+), 9 deletions(-) diff --git a/initramfs/etc_rc.d_rc.sysinit.sh b/initramfs/etc_rc.d_rc.sysinit.sh index 71ed5a6..9735bc8 100644 --- a/initramfs/etc_rc.d_rc.sysinit.sh +++ b/initramfs/etc_rc.d_rc.sysinit.sh @@ -42,9 +42,25 @@ for x in $(cat /proc/cmdline | tr -d ";\"'"); do esac done +root_method=device +case "$root" in +nfs:*) root="${root#nfs:}" + root_method=nfs + ;; +UUID=*|LABEL=*) + root_method=find + ;; +/dev/*) + ;; +*) + root="/dev/$root" + ;; +esac + cat > /etc/conf/idunn < /tmp/vol_id.$$ - . /tmp/vol_id.$$ - rm -f /tmp/vol_id.$$ + root_type= + root_tag= + root_options="$root_mode" - if [ -n "$ID_FS_TYPE" ]; then - modprobe -q "$ID_FS_TYPE" - check mount -t "$ID_FS_TYPE" -o "$root_mode" "$root" "$rootfs" + case "$root_method" in + nfs) + root_type="$root_method" + root_options="$root_options,nolock,intr,tcp" + ;; + find) # UUID= or LABEL= + root_tag="$root" + root=$(blkid -l -o device -t "$root_tag") + [ -z "$root" ] || root_type=$(blkid -l -o value -t TYPE "$root") + [ -z "$root_type" ] || root_tag="$root_tag, $root_type" + ;; + device) + root_type=$(blkid -l -o value -t TYPE "$root") + ;; + esac + + if [ -z "$root" ]; then + title "Mounting $root_tag at $rootfs." + elif [ -z "$root_tag" ]; then + title "Mounting $root ($root_type) at $rootfs." + else + title "Mounting $root ($root_tag) at $rootfs." + fi + + if [ -n "$root_type" ]; then + modprobe -q "$root_type" + check mount -t "$root_type" -o "$root_options" "$root" "$rootfs" else check false fi - status + status else [ -z "$verbose" ] || cat <<-EOT >&2