48 lines
2.7 KiB
Diff
48 lines
2.7 KiB
Diff
From df5e18b8d7c8359b48bc133bfa29734934d18160 Mon Sep 17 00:00:00 2001
|
|
From: Johannes Meixner <jsmeix@suse.com>
|
|
Date: Mon, 10 Aug 2020 16:20:38 +0200
|
|
Subject: [PATCH] Merge pull request #2469 from
|
|
rear/skip-kernel-builtin-modules-issue2414
|
|
|
|
In 400_copy_modules.sh skip copying kernel modules that are builtin modules.
|
|
The new behaviour is that when modules are listed in modules.builtin
|
|
and are also shown by modinfo then those modules are now skipped.
|
|
Before for such modules the modules file(s) would have been included
|
|
in the recovery system.
|
|
See https://github.com/rear/rear/issues/2414
|
|
---
|
|
usr/share/rear/build/GNU/Linux/400_copy_modules.sh | 12 ++++++++++--
|
|
1 file changed, 10 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/usr/share/rear/build/GNU/Linux/400_copy_modules.sh b/usr/share/rear/build/GNU/Linux/400_copy_modules.sh
|
|
index d8d733d2..641b7f83 100644
|
|
--- a/usr/share/rear/build/GNU/Linux/400_copy_modules.sh
|
|
+++ b/usr/share/rear/build/GNU/Linux/400_copy_modules.sh
|
|
@@ -133,8 +133,13 @@ for dummy in "once" ; do
|
|
module=${module#.o}
|
|
# Strip trailing ".ko" if there:
|
|
module=${module#.ko}
|
|
- # Continue with the next module if the current one does not exist:
|
|
+ # Continue with the next module if the current one does not exist as a module file:
|
|
modinfo $module 1>/dev/null || continue
|
|
+ # Continue with the next module if the current one is a kernel builtin module
|
|
+ # cf. https://github.com/rear/rear/issues/2414#issuecomment-668632798
|
|
+ # Quoting the grep search value is mandatory here ($module might be empty or blank),
|
|
+ # cf. "Beware of the emptiness" in https://github.com/rear/rear/wiki/Coding-Style
|
|
+ grep -q "$( echo $module | tr '_-' '..' )" /lib/modules/$KERNEL_VERSION/modules.builtin && continue
|
|
# Resolve module dependencies:
|
|
# Get the module file plus the module files of other needed modules.
|
|
# This is currently only a "best effort" attempt because
|
|
@@ -166,7 +171,10 @@ done
|
|
|
|
# Remove those modules that are specified in the EXCLUDE_MODULES array:
|
|
for exclude_module in "${EXCLUDE_MODULES[@]}" ; do
|
|
- # Continue with the next module if the current one does not exist:
|
|
+ # Continue with the next module only if the current one does not exist as a module file
|
|
+ # but do not continue with the next module if the current one is a kernel builtin module
|
|
+ # so when a module file exists that gets removed regardless if it is also a builtin module
|
|
+ # cf. https://github.com/rear/rear/issues/2414#issuecomment-669115481
|
|
modinfo $exclude_module 1>/dev/null || continue
|
|
# In this case it is ignored when a module exists but 'modinfo -F filename' cannot show its filename
|
|
# because then it is assumed that also no module file had been copied above:
|