summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Cady <d@cryptonomic.net>2020-10-29 13:09:26 -0400
committerAndrew Cady <d@cryptonomic.net>2020-10-30 10:13:44 -0400
commita3026e0ed993c24ea2585cb58f939497d5af14d9 (patch)
tree845505bd20da432768c8000160a21a57e8363f41
parent8e259ea7a7a125db55190ef7aeb6f368ff743e9d (diff)
use symlink /vmlinuz as canonical system kernel
also: entire script runs as root now, but automatically calls sudo if run as regular user.
-rwxr-xr-xsrc/mkinitramfs-samizdat30
1 files changed, 23 insertions, 7 deletions
diff --git a/src/mkinitramfs-samizdat b/src/mkinitramfs-samizdat
index 566389e..7f2b1a7 100755
--- a/src/mkinitramfs-samizdat
+++ b/src/mkinitramfs-samizdat
@@ -1,20 +1,36 @@
1#!/bin/sh 1#!/bin/sh
2 2
3if [ "$(id -u)" != 0 ]
4then
5 exec sudo -- "$0" "$@"
6 exit 1
7fi
8
3f() 9f()
4{ 10{
5 sudo /usr/sbin/mkinitramfs \ 11 /usr/sbin/mkinitramfs \
6 -d /usr/local/lib/samizdat-rhizome/initramfs-tools/ \ 12 -d /usr/local/lib/samizdat-rhizome/initramfs-tools/ \
7 -o "/boot/initrd.img-$1.samizdat" \ 13 -o "/boot/initrd.img-$1.samizdat" \
8 -k "$1" || return 14 -k "$1" || return
9 sudo ln -sf "initrd.img-$1.samizdat" /boot/initrd.img 15 ln -sf "initrd.img-$1.samizdat" /initrd.img
10} 16}
11 17
12if [ "$1" ] 18if [ "$1" ]
13then 19then
14 f "$1" || exit 20 k=/boot/vmlinuz-$1
15 sudo ln -sf "vmlinuz-$1" /boot/vmlinuz 21 if ! [ -e "$k" ]
22 then
23 printf 'Error: No such file: %s\n' "$k" >&2
24 fi
25 f "$1" || exit
26 ln -sf "vmlinuz-$1" /vmlinuz
27elif [ -L /vmlinuz ]
28then
29 l=$(readlink /vmlinuz)
30 v=${l#boot/vmlinuz-}
31 [ -e "/boot/vmlinuz-$v" ] || exit
32 f "$v"
16else 33else
17 l=$(readlink /boot/vmlinuz) 34 printf 'Error: Could not determine kernel version. Create /vmlinuz or specify a version.' >&2
18 v=${l#vmlinuz-} 35 exit 1
19 f "$v"
20fi 36fi