Gentoo Archives: gentoo-commits

From: Thomas Deutschmann <whissi@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/genkernel:master commit in: /
Date: Sun, 29 Dec 2019 04:04:02
Message-Id: 1577591878.53161dfada35f9d5a766a74413341c69cde0a67a.whissi@gentoo
1 commit: 53161dfada35f9d5a766a74413341c69cde0a67a
2 Author: Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
3 AuthorDate: Sun Dec 29 03:57:58 2019 +0000
4 Commit: Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
5 CommitDate: Sun Dec 29 03:57:58 2019 +0000
6 URL: https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=53161dfa
7
8 gen_initramfs.sh: create_initramfs(): Fix integrated initramfs creation
9
10 - CONFIG_INITRAMFS_SOURCE value must be quoted.
11
12 - CONFIG_INITRAMFS_COMPRESSION_* is only available in >=linux-4.10.
13
14 - Use CONFIG_RD_* for <linux-4.10. But make sure that only option for
15 selected compression type is set and every other type is disabled.
16 Otherwise, last set compression type would be used all the time,
17 see $KERNEL_DIR/usr/Makefile for details.
18
19 - Add sanity check which checks for integrated initramfs.
20
21 Bug: https://bugs.gentoo.org/703826
22 Signed-off-by: Thomas Deutschmann <whissi <AT> gentoo.org>
23
24 gen_initramfs.sh | 21 +++++++++++++++++++--
25 genkernel | 7 +++++++
26 2 files changed, 26 insertions(+), 2 deletions(-)
27
28 diff --git a/gen_initramfs.sh b/gen_initramfs.sh
29 index 38c77d0..283e308 100755
30 --- a/gen_initramfs.sh
31 +++ b/gen_initramfs.sh
32 @@ -1890,7 +1890,8 @@ create_initramfs() {
33 print_info 1 "$(get_indent 1)>> --integrated-initramfs is set; Setting CONFIG_INITRAMFS_* options ..."
34
35 [ -f "${KCONFIG_MODIFIED_MARKER}" ] && rm "${KCONFIG_MODIFIED_MARKER}"
36 - kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_INITRAMFS_SOURCE" "${CPIO_ARCHIVE}.cpio"
37 + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_BLK_DEV_INITRD" "y"
38 + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_INITRAMFS_SOURCE" "\"${CPIO_ARCHIVE}.cpio\""
39 kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_INITRAMFS_ROOT_UID" "0"
40 kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_INITRAMFS_ROOT_GID" "0"
41
42 @@ -1904,7 +1905,23 @@ create_initramfs() {
43 KOPTION_VALUE=y
44 fi
45
46 - kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_INITRAMFS_COMPRESSION_${KNOWN_INITRAMFS_COMPRESSION_TYPE}" "${KOPTION_VALUE}"
47 + if [ ${KV_NUMERIC} -ge 4010 ]
48 + then
49 + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_INITRAMFS_COMPRESSION_${KNOWN_INITRAMFS_COMPRESSION_TYPE}" "${KOPTION_VALUE}"
50 +
51 + if [[ "${KOPTION_VALUE}" == "y" && "${KNOWN_INITRAMFS_COMPRESSION_TYPE}" != "NONE" ]]
52 + then
53 + # Make sure that the kernel can decompress our initramfs
54 + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_RD_${KNOWN_INITRAMFS_COMPRESSION_TYPE}" "${KOPTION_VALUE}"
55 + fi
56 + else
57 + [[ "${KNOWN_INITRAMFS_COMPRESSION_TYPE}" == "NONE" ]] && continue
58 +
59 + # In <linux-4.10, to control used initramfs compression, we have to
60 + # disable every supported compression type except compression type
61 + # we want to use, (see $KERNEL_DIR/usr/Makefile).
62 + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_RD_${KNOWN_INITRAMFS_COMPRESSION_TYPE}" "${KOPTION_VALUE}"
63 + fi
64 done
65
66 if [ -f "${KCONFIG_MODIFIED_MARKER}" ]
67
68 diff --git a/genkernel b/genkernel
69 index 93f670e..3d25634 100755
70 --- a/genkernel
71 +++ b/genkernel
72 @@ -364,6 +364,13 @@ if isTrue "${INTEGRATED_INITRAMFS}"
73 then
74 print_info 1 '' 1 0
75
76 + cfg_CONFIG_INITRAMFS_SOURCE=$(kconfig_get_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_INITRAMFS_SOURCE")
77 + if [[ "${cfg_CONFIG_INITRAMFS_SOURCE}" != "\"${CPIO_ARCHIVE}.cpio\"" ]]
78 + then
79 + gen_die "Sanity check failed: CONFIG_INITRAMFS_SOURCE is not set to '${CPIO_ARCHIVE}.cpio' in '${KERNEL_OUTPUTDIR}/.config'!"
80 + fi
81 + unset cfg_CONFIG_INITRAMFS_SOURCE
82 +
83 # We build the kernel a second time to include the initramfs
84 compile_kernel
85 fi