remove "< <(" syntax
bash seems to want /dev/fd in that case. dracut is sometimes called in environments, where /proc and /dev are not mounted.master
parent
aa23dcd8ae
commit
dba2055979
|
|
@ -313,9 +313,9 @@ get_fs_env() {
|
||||||
# $ get_maj_min /dev/sda2
|
# $ get_maj_min /dev/sda2
|
||||||
# 8:2
|
# 8:2
|
||||||
get_maj_min() {
|
get_maj_min() {
|
||||||
local _maj _min
|
local _maj _min _majmin
|
||||||
read _maj _min < <(stat -L -c '%t %T' "$1" 2>/dev/null)
|
_majmin="$(stat -L -c '%t:%T' "$1" 2>/dev/null)"
|
||||||
printf "%s" "$((0x$_maj)):$((0x$_min))"
|
printf "%s" "$((0x${_majmin%:*})):$((0x${_majmin#*:}))"
|
||||||
}
|
}
|
||||||
|
|
||||||
# find_block_device <mountpoint>
|
# find_block_device <mountpoint>
|
||||||
|
|
@ -333,10 +333,11 @@ find_block_device() {
|
||||||
_find_mpt="$1"
|
_find_mpt="$1"
|
||||||
if [[ $use_fstab != yes ]]; then
|
if [[ $use_fstab != yes ]]; then
|
||||||
[[ -d $_find_mpt/. ]]
|
[[ -d $_find_mpt/. ]]
|
||||||
|
findmnt -e -v -n -o 'MAJ:MIN,SOURCE' --target "$_find_mpt" | { \
|
||||||
while read _majmin _dev; do
|
while read _majmin _dev; do
|
||||||
if [[ -b $_dev ]]; then
|
if [[ -b $_dev ]]; then
|
||||||
if ! [[ $_majmin ]] || [[ $_majmin == 0:* ]]; then
|
if ! [[ $_majmin ]] || [[ $_majmin == 0:* ]]; then
|
||||||
read _majmin < <(get_maj_min $_dev)
|
_majmin=$(get_maj_min $_dev)
|
||||||
fi
|
fi
|
||||||
if [[ $_majmin ]]; then
|
if [[ $_majmin ]]; then
|
||||||
echo $_majmin
|
echo $_majmin
|
||||||
|
|
@ -349,17 +350,18 @@ find_block_device() {
|
||||||
echo $_dev
|
echo $_dev
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
done < <(findmnt -e -v -n -o 'MAJ:MIN,SOURCE' --target "$_find_mpt")
|
done; return 1; } && return 0
|
||||||
fi
|
fi
|
||||||
# fall back to /etc/fstab
|
# fall back to /etc/fstab
|
||||||
|
|
||||||
|
findmnt -e --fstab -v -n -o 'MAJ:MIN,SOURCE' --target "$_find_mpt" | { \
|
||||||
while read _majmin _dev; do
|
while read _majmin _dev; do
|
||||||
if ! [[ $_dev ]]; then
|
if ! [[ $_dev ]]; then
|
||||||
_dev="$_majmin"
|
_dev="$_majmin"
|
||||||
unset _majmin
|
unset _majmin
|
||||||
fi
|
fi
|
||||||
if [[ -b $_dev ]]; then
|
if [[ -b $_dev ]]; then
|
||||||
[[ $_majmin ]] || read _majmin < <(get_maj_min $_dev)
|
[[ $_majmin ]] || _majmin=$(get_maj_min $_dev)
|
||||||
if [[ $_majmin ]]; then
|
if [[ $_majmin ]]; then
|
||||||
echo $_majmin
|
echo $_majmin
|
||||||
else
|
else
|
||||||
|
|
@ -371,7 +373,7 @@ find_block_device() {
|
||||||
echo $_dev
|
echo $_dev
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
done < <(findmnt -e --fstab -v -n -o 'MAJ:MIN,SOURCE' --target "$_find_mpt")
|
done; return 1; } && return 0
|
||||||
|
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
@ -388,20 +390,22 @@ find_mp_fstype() {
|
||||||
local _fs
|
local _fs
|
||||||
|
|
||||||
if [[ $use_fstab != yes ]]; then
|
if [[ $use_fstab != yes ]]; then
|
||||||
|
findmnt -e -v -n -o 'FSTYPE' --target "$1" | { \
|
||||||
while read _fs; do
|
while read _fs; do
|
||||||
[[ $_fs ]] || continue
|
[[ $_fs ]] || continue
|
||||||
[[ $_fs = "autofs" ]] && continue
|
[[ $_fs = "autofs" ]] && continue
|
||||||
echo -n $_fs
|
echo -n $_fs
|
||||||
return 0
|
return 0
|
||||||
done < <(findmnt -e -v -n -o 'FSTYPE' --target "$1")
|
done; return 1; } && return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
findmnt --fstab -e -v -n -o 'FSTYPE' --target "$1" | { \
|
||||||
while read _fs; do
|
while read _fs; do
|
||||||
[[ $_fs ]] || continue
|
[[ $_fs ]] || continue
|
||||||
[[ $_fs = "autofs" ]] && continue
|
[[ $_fs = "autofs" ]] && continue
|
||||||
echo -n $_fs
|
echo -n $_fs
|
||||||
return 0
|
return 0
|
||||||
done < <(findmnt --fstab -e -v -n -o 'FSTYPE' --target "$1")
|
done; return 1; } && return 0
|
||||||
|
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
@ -420,20 +424,22 @@ find_dev_fstype() {
|
||||||
[[ "$_find_dev" = /dev* ]] || _find_dev="/dev/block/$_find_dev"
|
[[ "$_find_dev" = /dev* ]] || _find_dev="/dev/block/$_find_dev"
|
||||||
|
|
||||||
if [[ $use_fstab != yes ]]; then
|
if [[ $use_fstab != yes ]]; then
|
||||||
|
findmnt -e -v -n -o 'FSTYPE' --source "$_find_dev" | { \
|
||||||
while read _fs; do
|
while read _fs; do
|
||||||
[[ $_fs ]] || continue
|
[[ $_fs ]] || continue
|
||||||
[[ $_fs = "autofs" ]] && continue
|
[[ $_fs = "autofs" ]] && continue
|
||||||
echo -n $_fs
|
echo -n $_fs
|
||||||
return 0
|
return 0
|
||||||
done < <(findmnt -e -v -n -o 'FSTYPE' --source "$_find_dev")
|
done; return 1; } && return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
findmnt --fstab -e -v -n -o 'FSTYPE' --source "$_find_dev" | { \
|
||||||
while read _fs; do
|
while read _fs; do
|
||||||
[[ $_fs ]] || continue
|
[[ $_fs ]] || continue
|
||||||
[[ $_fs = "autofs" ]] && continue
|
[[ $_fs = "autofs" ]] && continue
|
||||||
echo -n $_fs
|
echo -n $_fs
|
||||||
return 0
|
return 0
|
||||||
done < <(findmnt --fstab -e -v -n -o 'FSTYPE' --source "$_find_dev")
|
done; return 1; } && return 0
|
||||||
|
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
|
@ -474,12 +480,12 @@ check_block_and_slaves() {
|
||||||
"$1" $2 && return
|
"$1" $2 && return
|
||||||
check_vol_slaves "$@" && return 0
|
check_vol_slaves "$@" && return 0
|
||||||
if [[ -f /sys/dev/block/$2/../dev ]]; then
|
if [[ -f /sys/dev/block/$2/../dev ]]; then
|
||||||
check_block_and_slaves $1 $(cat "/sys/dev/block/$2/../dev") && return 0
|
check_block_and_slaves $1 $(<"/sys/dev/block/$2/../dev") && return 0
|
||||||
fi
|
fi
|
||||||
[[ -d /sys/dev/block/$2/slaves ]] || return 1
|
[[ -d /sys/dev/block/$2/slaves ]] || return 1
|
||||||
for _x in /sys/dev/block/$2/slaves/*/dev; do
|
for _x in /sys/dev/block/$2/slaves/*/dev; do
|
||||||
[[ -f $_x ]] || continue
|
[[ -f $_x ]] || continue
|
||||||
check_block_and_slaves $1 $(cat "$_x") && return 0
|
check_block_and_slaves $1 $(<"$_x") && return 0
|
||||||
done
|
done
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
@ -492,12 +498,12 @@ check_block_and_slaves_all() {
|
||||||
fi
|
fi
|
||||||
check_vol_slaves "$@" && return 0
|
check_vol_slaves "$@" && return 0
|
||||||
if [[ -f /sys/dev/block/$2/../dev ]]; then
|
if [[ -f /sys/dev/block/$2/../dev ]]; then
|
||||||
check_block_and_slaves_all $1 $(cat "/sys/dev/block/$2/../dev") && _ret=0
|
check_block_and_slaves_all $1 $(<"/sys/dev/block/$2/../dev") && _ret=0
|
||||||
fi
|
fi
|
||||||
[[ -d /sys/dev/block/$2/slaves ]] || return 1
|
[[ -d /sys/dev/block/$2/slaves ]] || return 1
|
||||||
for _x in /sys/dev/block/$2/slaves/*/dev; do
|
for _x in /sys/dev/block/$2/slaves/*/dev; do
|
||||||
[[ -f $_x ]] || continue
|
[[ -f $_x ]] || continue
|
||||||
check_block_and_slaves_all $1 $(cat "$_x") && _ret=0
|
check_block_and_slaves_all $1 $(<"$_x") && _ret=0
|
||||||
done
|
done
|
||||||
return $_ret
|
return $_ret
|
||||||
}
|
}
|
||||||
|
|
@ -1478,7 +1484,8 @@ dracut_kernel_post() {
|
||||||
done < "$DRACUT_KERNEL_LAZY_HASHDIR/lazylist.dep"
|
done < "$DRACUT_KERNEL_LAZY_HASHDIR/lazylist.dep"
|
||||||
fi
|
fi
|
||||||
) &
|
) &
|
||||||
while read a ; do _pid=$a;done < <(jobs -p)
|
_pid=$(jobs -p | while read a ; do printf ":$a";done)
|
||||||
|
_pid=${_pid##*:}
|
||||||
|
|
||||||
if [[ $DRACUT_INSTALL ]]; then
|
if [[ $DRACUT_INSTALL ]]; then
|
||||||
xargs -r modinfo -k $kernel -F firmware < "$DRACUT_KERNEL_LAZY_HASHDIR/lazylist.dep" \
|
xargs -r modinfo -k $kernel -F firmware < "$DRACUT_KERNEL_LAZY_HASHDIR/lazylist.dep" \
|
||||||
|
|
@ -1522,7 +1529,7 @@ dracut_kernel_post() {
|
||||||
[[ $DRACUT_KERNEL_LAZY_HASHDIR ]] && rm -fr -- "$DRACUT_KERNEL_LAZY_HASHDIR"
|
[[ $DRACUT_KERNEL_LAZY_HASHDIR ]] && rm -fr -- "$DRACUT_KERNEL_LAZY_HASHDIR"
|
||||||
}
|
}
|
||||||
|
|
||||||
module_is_host_only() { (
|
module_is_host_only() {
|
||||||
local _mod=$1
|
local _mod=$1
|
||||||
_mod=${_mod##*/}
|
_mod=${_mod##*/}
|
||||||
_mod=${_mod%.ko}
|
_mod=${_mod%.ko}
|
||||||
|
|
@ -1541,7 +1548,6 @@ module_is_host_only() { (
|
||||||
modinfo -F filename "$_mod" &>/dev/null || return 0
|
modinfo -F filename "$_mod" &>/dev/null || return 0
|
||||||
|
|
||||||
return 1
|
return 1
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
find_kernel_modules_by_path () {
|
find_kernel_modules_by_path () {
|
||||||
|
|
|
||||||
23
dracut.sh
23
dracut.sh
|
|
@ -245,15 +245,14 @@ dropindirs_sort()
|
||||||
local -a files
|
local -a files
|
||||||
local f d
|
local f d
|
||||||
|
|
||||||
readarray -t files < <(
|
|
||||||
for d in "$@"; do
|
for d in "$@"; do
|
||||||
for i in "$d/"*"$suffix"; do
|
for i in "$d/"*"$suffix"; do
|
||||||
if [[ -e "$i" ]]; then
|
if [[ -e "$i" ]]; then
|
||||||
printf "%s\n" "${i##*/}"
|
printf "%s\n" "${i##*/}"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
done | sort -Vu
|
done | sort -Vu | {
|
||||||
)
|
readarray -t files
|
||||||
|
|
||||||
for f in "${files[@]}"; do
|
for f in "${files[@]}"; do
|
||||||
for d in "$@"; do
|
for d in "$@"; do
|
||||||
|
|
@ -263,6 +262,7 @@ dropindirs_sort()
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
verbosity_mod_l=0
|
verbosity_mod_l=0
|
||||||
|
|
@ -907,31 +907,26 @@ if [[ $hostonly ]]; then
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
_get_fs_type() { (
|
_get_fs_type() {
|
||||||
[[ $1 ]] || return
|
[[ $1 ]] || return
|
||||||
if [[ -b /dev/block/$1 ]] && ID_FS_TYPE=$(get_fs_env "/dev/block/$1"); then
|
if [[ -b /dev/block/$1 ]] && ID_FS_TYPE=$(get_fs_env "/dev/block/$1"); then
|
||||||
printf "%s\n" "$(readlink -f "/dev/block/$1")" "$ID_FS_TYPE"
|
host_fs_types["$(readlink -f "/dev/block/$1")"]="$ID_FS_TYPE"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
if [[ -b $1 ]] && ID_FS_TYPE=$(get_fs_env "$1"); then
|
if [[ -b $1 ]] && ID_FS_TYPE=$(get_fs_env "$1"); then
|
||||||
printf "%s\n" "$(readlink -f "$1")" "$ID_FS_TYPE"
|
host_fs_types["$(readlink -f "$1")"]="$ID_FS_TYPE"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
if fstype=$(find_dev_fstype "$1"); then
|
if fstype=$(find_dev_fstype "$1"); then
|
||||||
printf "%s\n" "$1" "$fstype"
|
host_fs_types["$1"]="$fstype"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
return 1
|
return 1
|
||||||
) }
|
}
|
||||||
|
|
||||||
for dev in "${host_devs[@]}"; do
|
for dev in ${host_devs[@]}; do
|
||||||
while read key; do
|
|
||||||
read val
|
|
||||||
host_fs_types["$key"]="$val"
|
|
||||||
done < <(
|
|
||||||
_get_fs_type "$dev"
|
_get_fs_type "$dev"
|
||||||
check_block_and_slaves_all _get_fs_type "$(get_maj_min "$dev")"
|
check_block_and_slaves_all _get_fs_type "$(get_maj_min "$dev")"
|
||||||
)
|
|
||||||
done
|
done
|
||||||
|
|
||||||
[[ -d $udevdir ]] \
|
[[ -d $udevdir ]] \
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue