blob: 8615e65e6757cca5e033b7b02fb84c1246d7a186 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
#!/bin/sh
KERNEL_SRC_DIR="/usr/src/linux"
KEYDIR="/etc/efikeys/"
KERNEL_NAME="vmlinuz-latest-gentoo"
THREADS="$(grep -c ^processor /proc/cpuinfo)"
if [ "$(hostname)" = "pc" ]; then
ROOT_DEVICE="/dev/nvme0n1p3"
MICROCODE="amd"
KERNEL_DIR="/boot/efi/gentoo"
BOOT_PARAMS="nvidia-drm.modeset=1" # preventing screen tearing on NVIDIA GPU
elif [ "$(hostname)" = "laptop" ]; then
ROOT_DEVICE="/dev/sda3"
MICROCODE="intel"
KERNEL_DIR="/boot/efi/EFI/gentoo"
BOOT_PARAMS=""
else
echo "Unknown device $(hostname), cannot choose kernel parameters"
exit 1
fi
ROOT="/dev/mapper/root"
CRYPT_ROOT="$(blkid -s UUID | grep $ROOT_DEVICE | cut -d' ' -f2 | sed 's/"//g')"
BOOT_PARAMS="ro crypt_root=$CRYPT_ROOT root=$ROOT rootfsype=btrfs rootflags=subvol=@ root_trim=yes lsm=selinux $BOOT_PARAMS"
printf 'Boot parameters:\n%s\n' "$BOOT_PARAMS"
printf '\"lsblk -f\" output:\n%s\n' "$(lsblk -f)"
printf 'Kernel image will compiled with %s threads and be installed to %s\n' "$THREADS" "$KERNEL_DIR"
if [ "$(/usr/bin/id -u)" -ne 0 ]; then
echo "Cannot proceed, need root permissions"
exit 1
fi
echo "Proceed with kernel compiling? [Y/N]"
read -r answer
if [ "$answer" != "${answer#[Nn]}" ] ;then
echo "Aborted"
exit 1
fi
cd "$KERNEL_SRC_DIR" || exit 1
# inject $BOOT_PARAMS into kernel config
sed -i "s|^\(CONFIG_CMDLINE=\).*|\1\"$BOOT_PARAMS\"|" .config
genkernel --no-clean --no-mrproper --no-save-config \
--microcode="$MICROCODE" \
--integrated-initramfs --compress-initramfs --compress-initramfs-type=lz4 \
--luks --no-zfs --btrfs \
--kernel-config="$KERNEL_SRC_DIR/.config" \
--kernel-filename="$KERNEL_NAME" \
--makeopts="-j$THREADS" \
--loglevel=3 \
all
echo "Signing kernel image"
sbsign --key "$KEYDIR/db.key" --cert "$KEYDIR/db.crt" -o "$KERNEL_DIR/$KERNEL_NAME.efi" "/boot/$KERNEL_NAME"
cd - || exit 1
|