dracut: Make host only mode more resilient to missing swaps.
This patch set allows swap devices to disappear without cocking up a
host-only initramfs boot.
master
Harald Hoyer 2015-06-02 11:54:07 +02:00
commit dfec3c2d8b
3 changed files with 15 additions and 3 deletions

View File

@ -1224,7 +1224,9 @@ if [[ $hostonly ]]; then
done < /etc/crypttab
fi

push_host_devs "$(readlink -f "$dev")"
_dev="$(readlink -f "$dev")"
push_host_devs "$_dev"
push swap_devs "$_dev"
break
done < /etc/fstab
done < /proc/swaps
@ -1335,7 +1337,7 @@ export initdir dracutbasedir \
omit_drivers mdadmconf lvmconf root_dev \
use_fstab fstab_lines libdirs fscks nofscks ro_mnt \
stdloglvl sysloglvl fileloglvl kmsgloglvl logfile \
debug host_fs_types host_devs sshkey add_fstab \
debug host_fs_types host_devs swap_devs sshkey add_fstab \
DRACUT_VERSION udevdir prefix filesystems drivers \
systemdutildir systemdsystemunitdir systemdsystemconfdir \
host_modalias host_modules hostonly_cmdline loginstall \

View File

@ -37,6 +37,8 @@ esac

if ! getarg noresume; then
if [ -n "$resume" ]; then
wait_for_dev /dev/resume

{
printf "KERNEL==\"%s\", ACTION==\"add|change\", SYMLINK+=\"resume\"\n" \
${resume#/dev/};
@ -65,7 +67,7 @@ if ! getarg noresume; then
printf -- '%s\n' ' RUN+="/sbin/initqueue --finished --unique --name 00resume echo %M:%m > /sys/power/resume"'
} >> /etc/udev/rules.d/99-resume.rules

printf '[ -e "%s" ] && { ln -s "%s" /dev/resume; rm -f -- "$job" "%s/initqueue/timeout/resume.sh"; }\n' \
printf '[ -e "%s" ] && { ln -s "%s" /dev/resume 2> /dev/null; rm -f -- "$job" "%s/initqueue/timeout/resume.sh"; }\n' \
"$resume" "$resume" "$hookdir" >> $hookdir/initqueue/settled/resume.sh

{

View File

@ -103,6 +103,14 @@ install() {

for _dev in ${host_devs[@]}; do
[[ "$_dev" == "$root_dev" ]] && continue

# We only actually wait for real devs - swap is only needed
# for resume and udev rules generated when parsing resume=
# argument take care of the waiting for us
for _dev2 in ${swap_devs[@]}; do
[[ "$_dev" == "$_dev2" ]] && continue 2
done

_pdev=$(get_persistent_dev $_dev)

case "$_pdev" in