aboutsummaryrefslogtreecommitdiffstats
path: root/recipes-installer/anaconda/files/0044-fix-installed-system-boot-from-encrypt-fs-failed.patch
blob: 877e55fd02f3cfa7f6fce0099b21172aa8de5f9c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
From fc8f50947ecb274ee125fb3e09c3cd947357c34d Mon Sep 17 00:00:00 2001
From: Hongxu Jia <hongxu.jia@windriver.com>
Date: Sat, 29 Jun 2019 15:52:02 +0800
Subject: [PATCH] fix installed system boot from encrypt fs failed

1. While using cryptsetup to encrypt filesystem, it failed to boot
installed system.
-----------------
dracut: luksOpen /dev/sda3 luks-9cf2d2d9-849e-4ecb-a7f8-5918259306d6
Enter passphrase for /dev/sda3: Switched to clocksource tsc

device-mapper: table: 253:0: crypt: Error allocating crypto tfm
device-mapper: ioctl: error adding target to table
device-mapper: reload ioctl on  failed: No such file or directory
Failed to setup dm-crypt key mapping for device /dev/sda3.
Check that kernel supports aes-xts-plain64 cipher (check syslog for more info).
Wrong password
-----------------

The reason is the initramfs (generated by dracut) missed kernel module.

Config dracut to let initramfs has the kernel driver.

2. Since systemd in oe-core does not support cryptsetup which caused a
loop dependency with lvm2, so ommit systemd module in dracut.

Upstream-Status: Inappropriate [oe specific]

Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
 pyanaconda/payload/__init__.py | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/pyanaconda/payload/__init__.py b/pyanaconda/payload/__init__.py
index 0da743e..4fb40cb 100644
--- a/pyanaconda/payload/__init__.py
+++ b/pyanaconda/payload/__init__.py
@@ -574,6 +574,11 @@ class Payload(metaclass=ABCMeta):
         for subdir in ["log", "tmp"]:
             util.mkdirChain(util.getSysroot() + "/var/volatile/%s" % subdir)
 
+        with open(util.getSysroot() + "/etc/dracut.conf.d/cryptsetup.conf", "w") as f:
+            f.write('add_drivers+=" aesni_intel"\n')
+            f.write('add_drivers+=" aes_x86_64"\n')
+            f.write('omit_dracutmodules+=" systemd"\n')
+
         for kernel in self.kernel_version_list:
             log.info("recreating initrd for %s", kernel)
             if not conf.target.is_image:
-- 
2.7.4