dracut: fix early microcode stuff on non-x86 + other arch fixes

This commit is contained in:
q66 2020-07-25 17:40:20 +02:00
parent 354e34d570
commit bd7f6b448d
5 changed files with 152 additions and 1 deletions

View File

@ -0,0 +1,32 @@
From 0e6859c98a90a1b44abc6f29ba64628afc1be7cb Mon Sep 17 00:00:00 2001
From: q66 <daniel@octaforge.org>
Date: Sat, 25 Jul 2020 17:29:23 +0200
Subject: [PATCH 3/4] mkinitrd-dracut.sh: use vmlinux regex for ppc*, vmlinuz
for i686
Previously this would not catch ppc64le, now it does; same with
i686.
---
mkinitrd-dracut.sh | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git mkinitrd-dracut.sh mkinitrd-dracut.sh
index 82d90684..1ea3e514 100755
--- mkinitrd-dracut.sh
+++ mkinitrd-dracut.sh
@@ -57,10 +57,10 @@ default_kernel_images() {
s390|s390x)
regex='image'
;;
- ppc|ppc64)
+ ppc*)
regex='vmlinux'
;;
- i386|x86_64)
+ i*86|x86_64)
regex='vmlinuz'
;;
arm*)
--
2.27.0

View File

@ -0,0 +1,57 @@
From d690d736a71e18711b94098da24f56b392c7e6f7 Mon Sep 17 00:00:00 2001
From: q66 <daniel@octaforge.org>
Date: Sat, 25 Jul 2020 17:28:16 +0200
Subject: [PATCH 2/4] dracut.sh: fix early microcode detection logic
This fixes two issues:
1) on non-x86 systems in non-hostonly config this would cause
an annoying warning on every initramfs generation
2) on non-x86 systems in hostonly config this would result in
early microcode not getting disabled
---
dracut.sh | 23 +++++++++++++++--------
1 file changed, 15 insertions(+), 8 deletions(-)
diff --git dracut.sh dracut.sh
index 58ff24d1..cd3fcbe2 100755
--- dracut.sh
+++ dracut.sh
@@ -1194,19 +1194,26 @@ fi
if [[ $early_microcode = yes ]]; then
if [[ $hostonly ]]; then
- [[ $(get_cpu_vendor) == "AMD" ]] \
- && ! check_kernel_config CONFIG_MICROCODE_AMD \
- && unset early_microcode
- [[ $(get_cpu_vendor) == "Intel" ]] \
- && ! check_kernel_config CONFIG_MICROCODE_INTEL \
- && unset early_microcode
+ if [[ $(get_cpu_vendor) == "AMD" ]]; then
+ check_kernel_config CONFIG_MICROCODE_AMD || unset early_microcode
+ elif [[ $(get_cpu_vendor) == "Intel" ]]; then
+ check_kernel_config CONFIG_MICROCODE_INTEL || unset early_microcode
+ else
+ unset early_microcode
+ fi
else
! check_kernel_config CONFIG_MICROCODE_AMD \
&& ! check_kernel_config CONFIG_MICROCODE_INTEL \
&& unset early_microcode
fi
- [[ $early_microcode != yes ]] \
- && dwarn "Disabling early microcode, because kernel does not support it. CONFIG_MICROCODE_[AMD|INTEL]!=y"
+ # Do not complain on non-x86 architectures as it makes no sense
+ case $(uname -m) in
+ x86_64|i*86)
+ [[ $early_microcode != yes ]] \
+ && dwarn "Disabling early microcode, because kernel does not support it. CONFIG_MICROCODE_[AMD|INTEL]!=y"
+ ;;
+ *) ;;
+ esac
fi
# Need to be able to have non-root users read stuff (rpcbind etc)
--
2.27.0

View File

@ -0,0 +1,25 @@
From e1bce654f1bd739cf1f975ff0a1f766221c3d4ee Mon Sep 17 00:00:00 2001
From: q66 <daniel@octaforge.org>
Date: Sat, 25 Jul 2020 17:20:40 +0200
Subject: [PATCH 1/4] dracut.sh: fix ia32 detection for uefi executables
---
dracut.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git dracut.sh dracut.sh
index e3195499..58ff24d1 100755
--- dracut.sh
+++ dracut.sh
@@ -1153,7 +1153,7 @@ if [[ ! $print_cmdline ]]; then
case $(uname -m) in
x86_64)
EFI_MACHINE_TYPE_NAME=x64;;
- ia32)
+ i*86)
EFI_MACHINE_TYPE_NAME=ia32;;
*)
dfatal "Architecture '$(uname -m)' not supported to create a UEFI executable"
--
2.27.0

View File

@ -0,0 +1,37 @@
From c26b5c7559c297aaa6c78787fa8de18bbf090205 Mon Sep 17 00:00:00 2001
From: q66 <daniel@octaforge.org>
Date: Sat, 25 Jul 2020 17:47:00 +0200
Subject: [PATCH 4/4] 90ppcmac: respect DRACUT_ARCH, don't exclude ppcle
---
modules.d/90ppcmac/module-setup.sh | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git modules.d/90ppcmac/module-setup.sh modules.d/90ppcmac/module-setup.sh
index 59221ec4..7199dd9b 100644
--- modules.d/90ppcmac/module-setup.sh
+++ modules.d/90ppcmac/module-setup.sh
@@ -17,9 +17,9 @@
# called by dracut
check() {
- local _arch="$(uname -m)"
+ local _arch=${DRACUT_ARCH:-$(uname -m)}
# only for PowerPC Macs
- [[ "$_arch" == ppc* && "$_arch" != ppc*le ]] || return 1
+ [[ "$_arch" == ppc* && "$_arch" != ppc64le ]] || return 1
return 0
}
@@ -36,7 +36,7 @@ installkernel() {
}
# only PowerMac3,6 has a module, special case
- if [[ "$(uname -m)" == ppc ]]; then
+ if [[ "${DRACUT_ARCH:-$(uname -m)}" != ppc64* ]]; then
if ! [[ $hostonly ]] || [[ "$(pmac_model)" == "PowerMac3,6" ]]; then
instmods therm_windtunnel
fi
--
2.27.0

View File

@ -1,7 +1,7 @@
# Template file for 'dracut'
pkgname=dracut
version=050
revision=2
revision=3
build_style=configure
configure_args="--prefix=/usr --sysconfdir=/etc"
conf_files="/etc/dracut.conf"