aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--TODO2
-rwxr-xr-xkern25
-rw-r--r--kern.17
3 files changed, 23 insertions, 11 deletions
diff --git a/TODO b/TODO
deleted file mode 100644
index 430f084..0000000
--- a/TODO
+++ /dev/null
@@ -1,2 +0,0 @@
-- Consider falling back to /boot/config-<kernel> if /proc/config.gz
- does not exist
diff --git a/kern b/kern
index 42f1ac6..1f49a67 100755
--- a/kern
+++ b/kern
@@ -21,6 +21,12 @@ is_boot_mounted() {
mountpoint -q /boot
}
+mount_boot_on_demand() {
+ if has_boot_mount && ! is_boot_mounted; then
+ sudo mount /boot
+ fi
+}
+
get_latest_kernel() {
eselect --brief kernel list | tail -n1
}
@@ -29,6 +35,17 @@ get_selected_kernel() {
readlink /usr/src/linux
}
+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)
@@ -59,7 +76,7 @@ config_kernel() {
}
diff_kernel() {
- diff=${1:-/proc/config.gz}
+ diff=${1:-$(get_running_config)}
nvim -d .config "$diff"
}
@@ -68,9 +85,7 @@ build_kernel() {
}
install_kernel() {
- if has_boot_mount && ! is_boot_mounted; then
- sudo mount /boot
- fi
+ mount_boot_on_demand
sudo make install modules_install
}
@@ -84,7 +99,7 @@ clean_kernel() {
test_diff() {
dt=$(mktemp)
- zcat /proc/config.gz | sed -nE '/^(# )?CONFIG_.*/p' > "$dt"
+ sed -nE '/^(# )?CONFIG_.*/p' "$(get_running_config)" > "$dt"
if ! sed -nE '/^(# )?CONFIG_.*/p' .config | diff -q "$dt" -; then
diff_kernel
printf "Continue? [y/N] "
diff --git a/kern.1 b/kern.1
index 79dcad2..ac3e4e2 100644
--- a/kern.1
+++ b/kern.1
@@ -1,4 +1,4 @@
-.Dd May 16, 2020
+.Dd June 4, 2020
.Dt KERN 1
.Os
.Sh NAME
@@ -103,9 +103,8 @@ 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
-.Sy IKCONFIG_PROC
-to be enabled.
+This requires the configuration file to be present under
+.Pa /boot .
.It Sy build
Builds the selected kernel.
.It Sy install