Jsem se tomu tročku koukl na zoubek. Myšlenky běželi tímto směrem -> Po každé instalaci jádra se automaticky volá update-grub. Který obsahuje jen volání grub-mkconfig. Takže se automaticky volaný skript nahradí mým skriptem. Který načte pořadí bootu při staré konfiguraci. Pak následuje náma známá část s chrootem kde je třeba spustit už jen originál volání grub-mkconfig.
A nakonec nastavit boot pořadí jak bylo před instalací. Je třeba si v novém skriptu update-grub přepsat dvě adresy aby to sedělo na váš systém.
Je to hodně jednoduché ba přímo primitivně udělané bez kontroly chyb atd. Avšak jak je v testu vidět, tak to funguje dobře (minimálně u mne).
Vše následující jsem dělal jako root:
sudo -i
Smazal jsem symlink update-grub2 a přejmenoval update-grub na update-grub2. Takže pokud budu chtít někdy použít originál, napíšu jen update-grub2:
unlink /usr/sbin/update-grub2
mv /usr/sbin/update-grub /usr/sbin/update-grub2
Pak jsem vytvořil nový soubor update-grub:
>/usr/sbin/update-grub
chmod +x /usr/sbin/update-grub
A do něho vložil toto:
#! /usr/bin/env bash
# uloží se pořadí bootu do proměnné $poradi
echo čtu pořadí
read -r ffff poradi < <(efibootmgr | grep ^BootOrder)
# připojí se partition s hlavním grub OS na /mnt
# u mne je to na /dev/nvme0n1p5
echo připojuji oddíl s OS
mount /dev/nvme0n1p5 /mnt
# Připojí se EFI partition do souborového systému hlavního OS
# u mne je to /dev/nvme0n1p1
echo Připojuji EFI
mount /dev/nvme0n1p1 /mnt/boot/efi
echo Připojuji důležité body systému
for i in /dev /dev/pts /proc /sys /sys/firmware/efi/efivars /run; do mount -B $i /mnt$i; done
# chroot do /mnt a spuštění update grubu
echo chrootuji se a spouštím update-grub
chroot /mnt grub-mkconfig -o /boot/grub/grub.cfg
# vyskočí se z chroot
echo ***********************vyskočil jsem*************
# odpojí se /mnt
umount -R /mnt
# vrátí se původní pořadí
echo Odpojeno, jdu vrátit boot
efibootmgr -o $poradi
Mám to komentované.
Test.
Opět instalace nového jádra a stejně to přinutí grub aby to bylo po našem:
root@radek-ubuntu:~# wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v6.0/amd64/linux-headers-6.0.0-060000_6.0.0-060000.202210022231_all.deb
--2022-12-09 23:18:37-- https://kernel.ubuntu.com/~kernel-ppa/mainline/v6.0/amd64/linux-headers-6.0.0-060000_6.0.0-060000.202210022231_all.deb
Překládám kernel.ubuntu.com (kernel.ubuntu.com)… 91.189.94.216
Navazuje se spojení s kernel.ubuntu.com (kernel.ubuntu.com)|91.189.94.216|:443… spojeno.
HTTP požadavek odeslán, program čeká na odpověď… 200 OK
Délka: 12688478 (12M) [application/x-debian-package]
Ukládám do: ‘linux-headers-6.0.0-060000_6.0.0-060000.202210022231_all.deb’
linux-headers-6.0.0-060000_6.0.0- 13%[========> ] 1,68M 510KB/s zbývá 22s ^x-headers-6.0.0-060000_6.0.0-060000. 25%[================> ] 3,10M 711KB/s zbývá 16s ^linux-headers-6.0.0-060000_6.0.0-060 100%[====================================================================>] 12,10M 984KB/s za 15s
2022-12-09 23:18:53 (840 KB/s) – ‘linux-headers-6.0.0-060000_6.0.0-060000.202210022231_all.deb’ uloženo [12688478/12688478]
root@radek-ubuntu:~# wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v6.0/amd64/linux-headers-6.0.0-060000-generic_6.0.0-060000.202210022231_amd64.deb
--2022-12-09 23:20:37-- https://kernel.ubuntu.com/~kernel-ppa/mainline/v6.0/amd64/linux-headers-6.0.0-060000-generic_6.0.0-060000.202210022231_amd64.deb
Překládám kernel.ubuntu.com (kernel.ubuntu.com)… 91.189.94.216
Navazuje se spojení s kernel.ubuntu.com (kernel.ubuntu.com)|91.189.94.216|:443… spojeno.
HTTP požadavek odeslán, program čeká na odpověď… 200 OK
Délka: 3097056 (3,0M) [application/x-debian-package]
Ukládám do: ‘linux-headers-6.0.0-060000-generic_6.0.0-060000.202210022231_amd64.deb’
linux-headers-6.0.0-060000-generic_6 100%[====================================================================>] 2,95M 845KB/s za 3,7s
2022-12-09 23:20:41 (817 KB/s) – ‘linux-headers-6.0.0-060000-generic_6.0.0-060000.202210022231_amd64.deb’ uloženo [3097056/3097056]
root@radek-ubuntu:~# wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v6.0/amd64/linux-image-unsigned-6.0.0-060000-generic_6.0.0-060000.202210022231_amd64.deb
--2022-12-09 23:21:49-- https://kernel.ubuntu.com/~kernel-ppa/mainline/v6.0/amd64/linux-image-unsigned-6.0.0-060000-generic_6.0.0-060000.202210022231_amd64.deb
Překládám kernel.ubuntu.com (kernel.ubuntu.com)… 91.189.94.216
Navazuje se spojení s kernel.ubuntu.com (kernel.ubuntu.com)|91.189.94.216|:443… spojeno.
HTTP požadavek odeslán, program čeká na odpověď… 200 OK
Délka: 12093632 (12M) [application/x-debian-package]
Ukládám do: ‘linux-image-unsigned-6.0.0-060000-generic_6.0.0-060000.202210022231_amd64.deb’
linux-image-unsigned-6.0.0-060000-ge 100%[====================================================================>] 11,53M 1,06MB/s za 12s
2022-12-09 23:22:02 (966 KB/s) – ‘linux-image-unsigned-6.0.0-060000-generic_6.0.0-060000.202210022231_amd64.deb’ uloženo [12093632/12093632]
root@radek-ubuntu:~# wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v6.0/amd64/linux-modules-6.0.0-060000-generic_6.0.0-060000.202210022231_amd64.deb
--2022-12-09 23:22:41-- https://kernel.ubuntu.com/~kernel-ppa/mainline/v6.0/amd64/linux-modules-6.0.0-060000-generic_6.0.0-060000.202210022231_amd64.deb
Překládám kernel.ubuntu.com (kernel.ubuntu.com)… 91.189.94.216
Navazuje se spojení s kernel.ubuntu.com (kernel.ubuntu.com)|91.189.94.216|:443… spojeno.
HTTP požadavek odeslán, program čeká na odpověď… 200 OK
Délka: 92365796 (88M) [application/x-debian-package]
Ukládám do: ‘linux-modules-6.0.0-060000-generic_6.0.0-060000.202210022231_amd64.deb’
linux-modules-6.0.0-060000-generic_6 100%[====================================================================>] 88,09M 802KB/s za 97s s
2022-12-09 23:24:19 (930 KB/s) – ‘linux-modules-6.0.0-060000-generic_6.0.0-060000.202210022231_amd64.deb’ uloženo [92365796/92365796]
root@radek-ubuntu:~# dpkg -i *.deb
(Načítá se databáze … nyní je nainstalováno 236562 souborů a adresářů.)
Připravuje se nahrazení linux-headers-6.0.0-060000-generic_6.0.0-060000.202210022231_amd64.deb …
Rozbaluje se linux-headers-6.0.0-060000-generic (6.0.0-060000.202210022231) přes (6.0.0-060000.202210022231) …
Připravuje se nahrazení linux-headers-6.0.0-060000_6.0.0-060000.202210022231_all.deb …
Rozbaluje se linux-headers-6.0.0-060000 (6.0.0-060000.202210022231) přes (6.0.0-060000.202210022231) …
Připravuje se nahrazení linux-image-unsigned-6.0.0-060000-generic_6.0.0-060000.202210022231_amd64.deb …
Rozbaluje se linux-image-unsigned-6.0.0-060000-generic (6.0.0-060000.202210022231) přes (6.0.0-060000.202210022231) …
Připravuje se nahrazení linux-modules-6.0.0-060000-generic_6.0.0-060000.202210022231_amd64.deb …
Rozbaluje se linux-modules-6.0.0-060000-generic (6.0.0-060000.202210022231) přes (6.0.0-060000.202210022231) …
Nastavuje se balík linux-headers-6.0.0-060000 (6.0.0-060000.202210022231) …
Nastavuje se balík linux-modules-6.0.0-060000-generic (6.0.0-060000.202210022231) …
Nastavuje se balík linux-headers-6.0.0-060000-generic (6.0.0-060000.202210022231) …
Nastavuje se balík linux-image-unsigned-6.0.0-060000-generic (6.0.0-060000.202210022231) …
Zpracovávají se spouštěče pro balík linux-image-unsigned-6.0.0-060000-generic (6.0.0-060000.202210022231) …
/etc/kernel/postinst.d/initramfs-tools:
update-initramfs: Generating /boot/initrd.img-6.0.0-060000-generic
I: The initramfs will attempt to resume from /dev/nvme0n1p8
I: (UUID=7897ed19-78a5-4478-b129-9f3ddb6c3cf8)
I: Set the RESUME variable to override this.
/etc/kernel/postinst.d/zz-update-grub:
čtu pořadí
připojuji oddíl s OS
Připojuji EFI
Připojuji důležité body systému
chrootuji se a spouštím update-grub
Generating grub configuration file ...
Found background: /usr/share/wallpaper/grub/back.png
Found background image: /usr/share/wallpaper/grub/back.png
Found linux image: /boot/vmlinuz-5.10.142-antix.2-amd64-smp
Found initrd image: /boot/initrd.img-5.10.142-antix.2-amd64-smp
Found linux image: /boot/vmlinuz-4.9.0-326-antix.1-amd64-smp
Found initrd image: /boot/initrd.img-4.9.0-326-antix.1-amd64-smp
Found mtest-64.efi image: /boot/uefi-mt/mtest-64.efi
Warning: os-prober will be executed to detect other bootable partitions.
Its output will be used to detect bootable binaries on them and create new boot entries.
Found Linux Mint 21 Vanessa (21) on /dev/nvme0n1p2
Skipped Arch Linux on /dev/nvme0n1p3 by user request.
Found Ubuntu 22.04.1 LTS (22.04) on /dev/nvme0n1p4
Found Ubuntu 18.04.6 LTS (18.04) on /dev/nvme0n1p6
Adding boot menu entry for UEFI Firmware Settings ...
done
***********************vyskočil jsem*************
Odpojeno, jdu vrátit boot
BootCurrent: 0001
Timeout: 0 seconds
BootOrder: 0001,0018,0014,0015,0016,0017,0019,001A
Boot0000* ubuntu
Boot0001* antix-22
Boot0010 Setup
Boot0011 Boot Menu
Boot0012 Diagnostic Splash
Boot0013 UEFI Diagnostics
Boot0014* NVMe: SKHynix_HFM512GDHTNI-87A0B
Boot0015* ATA HDD:
Boot0016* ATA HDD1:
Boot0017* ATAPI CD:
Boot0018* USB HDD:
Boot0019* USB FDD:
Boot001A* USB CD:
reboot
A start mnou preferovaného grubu s položkou nového jádra bez následného hraní si v terminálu.
Vypichuji, že jsem vlastně jen stáhnul a nainstaloval šestkové jádro. Vše ostatní proběhlo samo.