aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xkern19
-rw-r--r--kern.17
2 files changed, 15 insertions, 11 deletions
diff --git a/kern b/kern
index 0f19772..f24b573 100755
--- a/kern
+++ b/kern
@@ -4,6 +4,14 @@ set -e
KERNFRAG=${KERNFRAG:-/etc/kernfrag}
+RUNNING_CONFIG=$(mktemp --suffix=-kern-config)
+zcat /proc/config.gz > "$RUNNING_CONFIG"
+
+# We do want to expand tmpdir now rather than later,
+# and mktemp should give us a path without spaces.
+# shellcheck disable=SC2064
+trap "{ rm $RUNNING_CONFIG; }" EXIT
+
err() {
printf "kern: %s\n" "$@" >&2
}
@@ -43,13 +51,6 @@ get_running_kernel() {
uname -r
}
-get_running_config() {
- mount_boot_on_demand
- config=/boot/config-$(get_running_kernel)
- test -r "$config" || errx "Could not read configuration file: $config"
- echo "$config"
-}
-
set_kernel() {
kern=${1:-$(get_latest_kernel)}
selected=$(get_selected_kernel)
@@ -82,7 +83,7 @@ config_kernel() {
diff_kernel() {
need_kernel_source
- diff=${1:-$(get_running_config)}
+ diff=${1:-$RUNNING_CONFIG}
if command -v git >/dev/null; then
git diff --no-index "$diff" .config
@@ -116,7 +117,7 @@ strip_config() {
test_diff() {
dt=$(mktemp)
- strip_config "$(get_running_config)" > "$dt"
+ strip_config "$RUNNING_CONFIG" > "$dt"
if ! strip_config .config | diff -q "$dt" -; then
diff_kernel || true
diff --git a/kern.1 b/kern.1
index e1826f2..eb963dc 100644
--- a/kern.1
+++ b/kern.1
@@ -105,8 +105,11 @@ to display the differences between the generated kernel configuration and
.Pp
If no config is given, this command compares against the configuration of the currently
running kernel.
-This requires the configuration file to be present under
-.Pa /boot .
+This requires a kernel configuration to be present under
+.Pa /proc/config.gz .
+See the
+.Sy CONFIG_IKCONFIG
+configuration option in the kernel for more information.
.It Sy build
Builds the selected kernel.
.It Sy install