9f28177407
- Update to dracut mainline version 041. Half of the patches got integrated mainline. Some others have been merged together when it made sense some have been left out, but are still in the repository as they need some special treating and mainline discussion whether/how they get added. These are also not urgently needed, but are debugging patches. I broke the rule here to mention every added/deleted/modified patch as every patch is touched and every 2nd got removed (mainline integrated). I also re-ordered the patches in the PatchXY: area for easier merging them and get them discussed and posted mainline easier, topic by topic. OBS-URL: https://build.opensuse.org/request/show/293267 OBS-URL: https://build.opensuse.org/package/show/Base:System/dracut?expand=0&rev=214
74 lines
3.1 KiB
Diff
74 lines
3.1 KiB
Diff
From 7f4dea242398cc369ff3fecd599faa00d81a522c Mon Sep 17 00:00:00 2001
|
|
From: Julian Wolf <juwolf@suse.de>
|
|
Date: Tue, 19 Aug 2014 16:23:59 +0200
|
|
Subject: 90crypt: Fixed crypttab_contains() to also work with device path in
|
|
/etc/crypttab
|
|
|
|
blkid is not available when this function is called, so block_uuid.map is put into
|
|
the initrd, mapping block devices from /etc/crypttab to UUIDs.
|
|
|
|
This fixes a bug where udev rules were created by mistake as crypttab_contains()
|
|
returned false for devices specified by path in /etc/crypttab which resulted in
|
|
error messages during boot.
|
|
|
|
Signed-off-by: Julian Wolf <juwolf@suse.de>
|
|
---
|
|
modules.d/90crypt/crypt-lib.sh | 9 +++++++++
|
|
modules.d/90crypt/module-setup.sh | 4 ++++
|
|
2 files changed, 13 insertions(+)
|
|
|
|
Index: dracut-041/modules.d/90crypt/crypt-lib.sh
|
|
===================================================================
|
|
--- dracut-041.orig/modules.d/90crypt/crypt-lib.sh 2015-01-31 12:54:52.000000000 +0100
|
|
+++ dracut-041/modules.d/90crypt/crypt-lib.sh 2015-03-24 15:17:12.866590774 +0100
|
|
@@ -5,11 +5,20 @@
|
|
# check if the crypttab contains an entry for a LUKS UUID
|
|
crypttab_contains() {
|
|
local luks="$1"
|
|
+ local _uuid _line
|
|
local l d rest
|
|
if [ -f /etc/crypttab ]; then
|
|
while read l d rest; do
|
|
strstr "${l##luks-}" "${luks##luks-}" && return 0
|
|
strstr "$d" "${luks##luks-}" && return 0
|
|
+ if [ -e /usr/lib/dracut/modules.d/90crypt/block_uuid.map ]; then
|
|
+ # search for line starting with $d
|
|
+ _line=$(sed -n "\,^$d .*$,{p}" /usr/lib/dracut/modules.d/90crypt/block_uuid.map)
|
|
+ [ -z "$_line" ] && continue
|
|
+ # get second column with uuid
|
|
+ _uuid="$(echo $_line | sed 's,^.* \(.*$\),\1,')"
|
|
+ strstr "$_uuid" "${luks##luks-}" && return 0
|
|
+ fi
|
|
done < /etc/crypttab
|
|
fi
|
|
return 1
|
|
Index: dracut-041/modules.d/90crypt/module-setup.sh
|
|
===================================================================
|
|
--- dracut-041.orig/modules.d/90crypt/module-setup.sh 2015-01-31 12:54:52.000000000 +0100
|
|
+++ dracut-041/modules.d/90crypt/module-setup.sh 2015-03-24 15:17:12.866590774 +0100
|
|
@@ -63,6 +63,7 @@
|
|
inst_hook cleanup 30 "$moddir/crypt-cleanup.sh"
|
|
fi
|
|
|
|
+ > /tmp/dracut_block_uuid.map
|
|
if [[ $hostonly ]] && [[ -f /etc/crypttab ]]; then
|
|
# filter /etc/crypttab for the devices we need
|
|
while read _mapper _dev _rest; do
|
|
@@ -72,6 +73,8 @@
|
|
[[ $_dev == UUID=* ]] && \
|
|
_dev="/dev/disk/by-uuid/${_dev#UUID=}"
|
|
|
|
+ echo "$_dev $(blkid $_dev -s UUID -o value)" >> /tmp/dracut_block_uuid.map
|
|
+
|
|
for _hdev in "${!host_fs_types[@]}"; do
|
|
[[ ${host_fs_types[$_hdev]} == "crypto_LUKS" ]] || continue
|
|
if [[ $_hdev -ef $_dev ]] || [[ /dev/block/$_hdev -ef $_dev ]]; then
|
|
@@ -84,6 +87,7 @@
|
|
fi
|
|
|
|
inst_simple "$moddir/crypt-lib.sh" "/lib/dracut-crypt-lib.sh"
|
|
+ inst_simple "/tmp/dracut_block_uuid.map" "/usr/lib/dracut/modules.d/90crypt/block_uuid.map"
|
|
|
|
inst_multiple -o \
|
|
$systemdutildir/system-generators/systemd-cryptsetup-generator \
|