Üdv!
Megfrissült a gép F30-ra, a grub2 megváltozott egy kicsit.
A gép hibernálásból nem tud visszajönni. A bejegyzzések (menu entry) átkerültek a /boot/loader/entries könyvtár alá külön txt fájlokba.
A korábbi "resume" opciót nem látom, gondolom ez lehet a gond.
- 2082 megtekintés
Hozzászólások
Úgy tűnik a megfelelő /boot/loader/entries/ce******.fc30.x86_64.conf fájlba kell a szokásos bejegyzés:
# ----------------------------------------------------------------------------------------------------
title Fedora (5.0.17-300.fc30.x86_64) 30 (Thirty)
version 5.0.17-300.fc30.x86_64
linux /boot/vmlinuz-5.0.17-300.fc30.x86_64 resume=UUID=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
initrd /boot/initramfs-5.0.17-300.fc30.x86_64.img
options $kernelopts
grub_users $grub_users
grub_arg --unrestricted
grub_class kernel
# ----------------------------------------------------------------------------------------------------
ls -l /dev/disk/by-uuid/*
Innen a swap partíció uuid-ja kell.
- A hozzászóláshoz be kell jelentkezni
Neked valami kimaradt az életedből:
https://fedoramagazine.org/setting-kernel-command-line-arguments-with-f…
A hölgy csak tudja, ha már kernel fejlesztő. :) Amúgy én root-ként csináltam, szerintem félrevezető a $ a sor elején.
grubby --update-kernel=ALL --args="resume=UUID=itt_van_a_swap_uuid"
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
ok, kösz.
F29 alatt még nem volt így szétszedve nálam a "grub.cfg". :o
- A hozzászóláshoz be kell jelentkezni
Hogy lehet alapértelmezetté tenni a "resume" opciót?
Kijött egy újabb kernel (5.1.5-300.fc30.x86_64), a hozzá tartozó konfig fájlba már nem tette be a rendszer.
- A hozzászóláshoz be kell jelentkezni
Megpróbálom ezt:
https://wiki.archlinux.org/index.php/GRUB
Additional arguments
To pass custom additional arguments to the Linux image, you can set the GRUB_CMDLINE_LINUX + GRUB_CMDLINE_LINUX_DEFAULT variables in /etc/default/grub. The two are appended to each other and passed to kernel when generating regular boot entries. For the recovery boot entry, only GRUB_CMDLINE_LINUX is used in the generation.
It is not necessary to use both, but can be useful. For example, you could use GRUB_CMDLINE_LINUX_DEFAULT="resume=UUID=uuid-of-swap-partition quiet" where uuid-of-swap-partition is the UUID of your swap partition to enable resume after hibernation. This would generate a recovery boot entry without the resume and without quiet suppressing kernel messages during a boot from that menu entry. Though, the other (regular) menu entries would have them as options.
By default grub-mkconfig determines the UUID of the root filesystem for the configuration. To disable this, uncomment GRUB_DISABLE_LINUX_UUID=true.
For generating the GRUB recovery entry you have to ensure that GRUB_DISABLE_RECOVERY is not set to true in /etc/default/grub.
See Kernel parameters for more info.
- A hozzászóláshoz be kell jelentkezni
Fentebb írtam, hogy a grubby paranccsal hogyan. Ott van Laura Abbott blog bejegyzése, linkeltem.
Viszont megnéztem a /proc/cmdline kernel által visszaadott virtuális file-t, s elszörnyülködtem. A telepítéstől kezdve az összes eddigi kernel BOOT_IMAGE= kezdetű paramétere benne van a kernelnek átadott paraméterek között. Mindamellett ami kell, az is megvan - ideértve a resume= kezdetű eposzt is -, de az elég goromba, amit most megkapott a kernelem. Azt hiszem, jelzem a fejlesztőknek...
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Ma frissült a kernel, de nem állította be a resume opciót (/etc/sysconfig/grub -> GRUB_CMDLINE_LINUX_DEFAULT="resume=UUID=.....").
Csak ezzel működik?
grubby --update-kernel=ALL --args="resume=UUID=itt_van_a_swap_uuid"
Most automatikusan nem működik?
Ez a BOOT_IMAGE hol is van?
- A hozzászóláshoz be kell jelentkezni
Lehet, hogy csak így működik, Laura Abbott szerintem nem azért írt erről, mert épp unatkozott. ;) Amúgy, miután kiadtad a parancsot, automatikus lesz, tehát megjegyzi az összes kernelparamétert, majd frissítéskor automatikusan hordozza azt tovább. Úgy emlékszem, azon a blogon írnak az ideiglenes módosítás lehetőségéről is, de az engem nem hoz lázba, hiszen a rendszer indulásakor a Grubtól promptot kérve ezt amúgy is megtehetem.
Írtam, a /proc/cmdline „file”-t nézd. Azért az idézőjel, mert ezt a kernel láttatja file-ként, az aktuálisan futó kernel paramétereit mutatja meg. Közben megtaláltam. Úgy tűnik, ezek a paraméterek a /boot/loader/entries alkönyvtárban lévő file-ból származnak.
Azt érdemes tudni, hogy a Fedorának több boot metódusa van. Például eltér ez EFI-s és régi BIOS-os gépen, de tudtommal régi gépen is különbözőképp képes indulni.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
cat /proc/cmdline:
BOOT_IMAGE=(hd0,msdos2)/boot/vmlinuz-5.1.6-300.fc30.x86_64 resume=UUID=bfbbd3b6-0fc2-4dcc-a81d-a28b1be67e5f root=UUID=714b5931-6379-4a7b-9e47-daf1504372f9 ro vconsole.font=latarcyrheb-sun16 rhgb quiet
Igazából ott van a paraméterek között, de mégsem használja a kernelfrissítéskor. Egyelőre manuálisan írom be...
- A hozzászóláshoz be kell jelentkezni
Kernelfrissítés után az új kernellel boot-olva már nem lesz ott? Remélem, az megvan, hogy a /proc/cmdline nem olyan valami, amit konfigurációként használ, hanem ez a kernelnek ténylegesen átadott paraméter lista, a jelenlegi kernel ezen paraméterekkel lett indítva. Tehát itt a kernel azt mondja meg, mit kapott, így ebben az esetben nem kérdés, hogy megkapta a resume= paramétert. Hiszen látszik, hogy megkapta azt.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Igen tudom. Igaz én írtam be a /boot/loader/entries/* alá a megfelelő sorba a resume opciót. Ha nem írtam volna be, akkor gondolom a /proc/cmdline-ba se lenne ott.
De ha megint jön egy kernelfrissítés, akkor szintén nem lesz ott "resume" opció automatikusan gondolom. Sebaj... majd valamikor. :)
- A hozzászóláshoz be kell jelentkezni
Ma megint volt egy kernelfrissítés.
grubby --update-kernel=ALL --args="resume=UUID="
Nem adta hozzá a kért opciót a /boot/loader/entries/*.conf fájlhoz... és a /proc/cmdline fájlba se került be (reboot után) - érthető módon.
Maradt a kézzel hozzáadás.
- A hozzászóláshoz be kell jelentkezni
Gondolom, az UUID= után megadtad a swap uuid-ját, csak itt nem írtad le.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
igen.
- A hozzászóláshoz be kell jelentkezni
Nem tudok többet hozzátenni. Követtem a blogban írottakat, s nekem működik. Viszont szerintem root joggal kell, a blogban szerintem helytelen a $ prompt. Sima userként a grubby-nak nem lesz joga módosítani a szükséges file-t. Mindenesetre én root-ként adtam ki a parancsot, működött is.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
én sudo-val.
- A hozzászóláshoz be kell jelentkezni
Ez szokás Fedorán? Én root jogot szerzek
su -
paranccsal, s innen teszek-veszek.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
sudo rootként futtatja.
Igen, te áváltasz root-ra mindenféle beállításoakkal együtt és utána adod a commandokat. Lehet hogy másképp fut...
- A hozzászóláshoz be kell jelentkezni
"Ez szokás Fedorán?"
Nem szokás. De én debianon, centoson és gentoon is használok. Mert azt mondják a nagyok, hogy biztonságosabb. És én alázatosan hallgatok a nagy elmékre. Lehet az egy számítástechnika-tanári diplomás rendszergazda egy városszéli vasutas cégnél vagy egy rendszermérnök valamilyen biztonsági alkalmazásokat fejlesztő cégnél.
De hamár a fedoramagazint felhoztad íme:
https://fedoramagazine.org/howto-use-sudo/
************************************
*powered by ©gentoo WITH SUDO!!! ;D*
************************************
- A hozzászóláshoz be kell jelentkezni
Nekem nem sikerült megértenem, hogy ha benne vagyok a wheel csoportban, s innentől kezdve jelszó kérés nélkül sima user joggal kiadott sudo parancs futtatható, az mitől olyan biztonságos. Mivel nem kér jelszót, bármelyik script simán futtathat így bármit root joggal, ha jól sejtem. Nálam inkább marad a su -, s kérjen jelszót.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Lehet a sudoers-ben konfigolni hogy attól függetlenül hogy a wheel csoportban vagy kérjen jelszót, úgy mint a su - .
- A hozzászóláshoz be kell jelentkezni
Jó, de akkor már nem egyszerűbb su --szal root shellt kérni, s onnan intézni a gép adminisztrálását? Valószínűleg Ubuntu-like rendszeren is sudo -i-vel kezdeném ezt. Olyannyira, hogy a munkshelyi Windows-om WSL-jében épp ezt teszem, ha például frissíteni szeretnék.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Akkor van értelme a sudonak ha több rendszergazda/üzemeltető is tolja a szervert. sudo parancs esetén egyrészt a rendszergazdáknak/üzemeltetőknek nem kell ismerniük a root jelszót, másrészt sudo esetén pontosan lehet tudni hogy melyik parancsot pontosan ki adta ki és mikor, emelt jogosultsággal (/var/log/secure). Nyilván sudo-val is meg lehet változtatni a root jelszót de erről ilyenkor készül naplóbejegyzés amiről a monitoring azonnal küld neked egy üzenetet, te meg intézed a többit.
- A hozzászóláshoz be kell jelentkezni
Lehet, hogy ez lesz a jó megoldás:
Az /etc/grub.d és az /etc/default/grub alapján (itt van a resume opció) a "grub2-mkconfig" segítségével lehet generálni egy grub.cfg fájlt:
[root@fedora boot]# grub2-mkconfig -o /boot/grub2/grub.cfg
Ez a megjegyzés grub.cfg fájl első soraiban bent is van. :)
Megnézem a következő kernel frissítéskor mit csinál.
- A hozzászóláshoz be kell jelentkezni
A második hozzászólásban adtam egy linket, ahol leírja Laura Abbott, hogyan kell hozzáadni bármilyen kernel paramétert, így a resume opciót is.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Igen, csak ott grubby-t írt, ami nálam nem működött. A grub2-mkconfig meglátjuk mit eredményez. :)
- A hozzászóláshoz be kell jelentkezni
Miért nem működött? Root joggal próbáld! A prompt a leírásban valóban tévedés, baj is volna, ha ez user joggal sikerülne.
Én a leírást követve simán hozzáadtam a vágyott resume paramétert. A grub2-mkconfig nem fog segíteni, mert generál majd egy olyan konfigot, amelyik továbbra is valahonnan kívülről veszi a paramétereket.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
grub2-mkconfig a /etc/default/grub-bol szedi ki, hogy mi legyen a cmdline-ban (GRUB_CMDLINE_LINUX), szoval ha oda beirod, nem felejti el.
- A hozzászóláshoz be kell jelentkezni
Naiv lélek vagy szerintem. Fedora 30 grub.cfg-jében nincs benne a kernel és az initrd sem, pedig a Grub boot-olja a gépet. Cseppet felforgatták az életet. Amúgy nem szeretem, mert mindig megbonyolítják, de azon túl, hogy csak kellemetlenség adódik belőle, valamint egyre nehezebben áttekinthető a gép boot-olása, s nem tudod, hova nyúlj baj esetén, nem látom az innovációból fakadó előnyöket. A grub.cfg-be raktak egy ilyen comment-et:
# This section was generated by a script. Do not modify the generated file - all changes
# will be lost the next time file is regenerated. Instead edit the BootLoaderSpec files.
#
# The blscfg command parses the BootLoaderSpec files stored in /boot/loader/entries and
# populates the boot menu. Please refer to the Boot Loader Specification documentation
# for the files format: https://www.freedesktop.org/wiki/Specifications/BootLoaderSpec/.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
$kernelopts szerintem a grubenv-bol szedi, amit ott van a grub.cfg mellett.
- A hozzászóláshoz be kell jelentkezni
Nagyjából, de nem teljesen. A /proc/cmdline tartalmaz mást is, tehát a kernel valahonnan kap még paramétert. Ezen felül sohasem tudhatom, mi módosítja a grubenv-et, így szélmalomharc lehet annak módosítása. Ráadásul félnék hozzányúlni, olyan text file, ami kicsit bináris színezetű azáltal, hogy 0x23-akkal van padding-olva éppen 1024 byte-ig.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Lehet, hogy ezért nem megy: https://bugzilla.redhat.com/show_bug.cgi?id=1651686
Fedora doksiban: users can switch back to a non-BLS configuration by restoring the old configuration from a backup file and installing the grubby-deprecated package.
- A hozzászóláshoz be kell jelentkezni
Sajnos most sem megy. Ma jött egy kernel update (5.2.14-200.fc30.x86_64) és a "resume" opció kimaradt.
- A hozzászóláshoz be kell jelentkezni
Nézd meg, hogy a /etc/default/grub
file-ban van-e ilyen sor:
GRUB_ENABLE_BLSCFG=true
Legyen. Utána root joggal add ki az alábbi parancsot:
grubby --update-kernel=ALL --args='resume=UUID=ami_a_swap-ed_uuid-je'
A swap uuid-jét az lsblk -f
paranccsal tudod lekérdezni.
Aztán reboot, majd
cat /proc/cmdline
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Nálam sima Arch alatt a resume mellé kellett egy offset is. Nem lehet hogy ez a gond?
- A hozzászóláshoz be kell jelentkezni
Oh bocs az csak a swap fáljra vonatkozik...
- A hozzászóláshoz be kell jelentkezni
dupla
- A hozzászóláshoz be kell jelentkezni
Ez eddig is ott volt:
GRUB_ENABLE_BLSCFG=true
Ezt már próbáltuk (lsd. korábbi hozzászólások), de nem működött: a grubby --update-kernel=ALL --args='resume=UUID=ami_a_swap-ed_uuid-je' -re gondolom az összes bejegyzést frissítenie kellene a resume opcióval, de nem teszi meg. Most sem megy.
Kézzel kell hozzáadnom a /grub/loader/entries/*.conf fájl(ok)ban az új kernel esetén.
- A hozzászóláshoz be kell jelentkezni
Csinálj mentést az entries alatti *.conf-ról, majd alakítsd át ilyen szerkezetűvé:
title Fedora (5.3.0-1.fc31.x86_64) 31 (Thirty One)
version 5.3.0-1.fc31.x86_64
machine-id abcd
linux /abcd/5.3.0-1.fc31.x86_64/linux
initrd /abcd/5.3.0-1.fc31.x86_64/initrd
options $kernelopts
grub_users $grub_users
grub_arg --unrestricted
grub_class kernel
Szerintem ezek után már a megfelelő helyről fogja felszedni a konfigot. A titok szerintem az options paraméterében van.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Pont ilyen szerkezetűek a fájlok (kivéve a "machine-id", bár ennek nem lehet jelentősége).
- A hozzászóláshoz be kell jelentkezni
Esetleg még ezzel tudok segíteni:
rpm -qa kernel\* systemd\* grub\* | sort
grub2-common-2.02-97.fc31.noarch
grub2-pc-2.02-97.fc31.x86_64
grub2-pc-modules-2.02-97.fc31.noarch
grub2-starfield-theme-2.02-0.42.fc26.x86_64
grub2-tools-2.02-97.fc31.x86_64
grub2-tools-efi-2.02-97.fc31.x86_64
grub2-tools-extra-2.02-97.fc31.x86_64
grub2-tools-minimal-2.02-97.fc31.x86_64
grubby-8.40-36.fc31.x86_64
kernel-5.3.0-1.fc31.x86_64
kernel-core-5.3.0-1.fc31.x86_64
kernel-devel-5.3.0-1.fc31.x86_64
kernel-headers-5.3.0-1.fc31.x86_64
kernel-modules-5.3.0-1.fc31.x86_64
systemd-243-1.fc31.x86_64
systemd-bootchart-233-5.fc31.x86_64
systemd-container-243-1.fc31.x86_64
systemd-devel-243-1.fc31.x86_64
systemd-libs-243-1.fc31.i686
systemd-libs-243-1.fc31.x86_64
systemd-pam-243-1.fc31.x86_64
systemd-rpm-macros-243-1.fc31.noarch
systemd-udev-243-1.fc31.x86_64
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Nálam:
grub2-breeze-theme-5.15.5-1.fc30.x86_64
grub2-common-2.02-81.fc30.noarch
grub2-efi-aa64-modules-2.02-81.fc30.noarch
grub2-efi-arm-modules-2.02-81.fc30.noarch
grub2-efi-ia32-2.02-81.fc30.x86_64
grub2-efi-ia32-cdboot-2.02-81.fc30.x86_64
grub2-efi-ia32-modules-2.02-81.fc30.noarch
grub2-efi-x64-2.02-81.fc30.x86_64
grub2-efi-x64-cdboot-2.02-81.fc30.x86_64
grub2-efi-x64-modules-2.02-81.fc30.noarch
grub2-pc-2.02-81.fc30.x86_64
grub2-pc-modules-2.02-81.fc30.noarch
grub2-ppc64le-modules-2.02-81.fc30.noarch
grub2-tools-2.02-81.fc30.x86_64
grub2-tools-efi-2.02-81.fc30.x86_64
grub2-tools-extra-2.02-81.fc30.x86_64
grub2-tools-minimal-2.02-81.fc30.x86_64
grubby-8.40-31.fc30.x86_64
grubby-deprecated-8.40-31.fc30.x86_64
kernel-5.2.11-200.fc30.x86_64
kernel-5.2.13-200.fc30.x86_64
kernel-5.2.14-200.fc30.x86_64
kernel-5.2.15-200.fc30.x86_64
kernel-5.2.9-200.fc30.x86_64
kernel-core-5.2.11-200.fc30.x86_64
kernel-core-5.2.13-200.fc30.x86_64
kernel-core-5.2.14-200.fc30.x86_64
kernel-core-5.2.15-200.fc30.x86_64
kernel-core-5.2.9-200.fc30.x86_64
kernel-debug-devel-5.2.11-200.fc30.x86_64
kernel-debug-devel-5.2.13-200.fc30.x86_64
kernel-debug-devel-5.2.14-200.fc30.x86_64
kernel-debug-devel-5.2.15-200.fc30.x86_64
kernel-debug-devel-5.2.9-200.fc30.x86_64
kernel-devel-5.2.11-200.fc30.x86_64
kernel-devel-5.2.13-200.fc30.x86_64
kernel-devel-5.2.14-200.fc30.x86_64
kernel-devel-5.2.15-200.fc30.x86_64
kernel-devel-5.2.9-200.fc30.x86_64
kernel-headers-5.2.15-200.fc30.x86_64
kernel-modules-5.2.11-200.fc30.x86_64
kernel-modules-5.2.13-200.fc30.x86_64
kernel-modules-5.2.14-200.fc30.x86_64
kernel-modules-5.2.15-200.fc30.x86_64
kernel-modules-5.2.9-200.fc30.x86_64
kernel-modules-extra-5.2.11-200.fc30.x86_64
kernel-modules-extra-5.2.13-200.fc30.x86_64
kernel-modules-extra-5.2.14-200.fc30.x86_64
kernel-modules-extra-5.2.15-200.fc30.x86_64
kernel-modules-extra-5.2.9-200.fc30.x86_64
systemd-241-12.git1e19bcd.fc30.x86_64
systemd-bootchart-233-4.fc30.x86_64
systemd-container-241-12.git1e19bcd.fc30.x86_64
systemd-journal-remote-241-12.git1e19bcd.fc30.x86_64
systemd-libs-241-12.git1e19bcd.fc30.i686
systemd-libs-241-12.git1e19bcd.fc30.x86_64
systemd-pam-241-12.git1e19bcd.fc30.x86_64
systemd-rpm-macros-241-12.git1e19bcd.fc30.noarch
systemd-udev-241-12.git1e19bcd.fc30.x86_64
- A hozzászóláshoz be kell jelentkezni
És mi most az uname -r és a cat /proc/cmdline ?
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
5.2.15-200.fc30.x86_64
$ cat /proc/cmdline
BOOT_IMAGE=(hd0,msdos2)/boot/vmlinuz-5.2.15-200.fc30.x86_64 resume=UUID=bfbbd3b6-0fc2-4dcc-a81d-a28b1be67e5f root=UUID=714b5931-6379-4a7b-9e47-daf1504372f9 ro vconsole.font=latarcyrheb-sun16 rhgb quiet
De csak azért van bent a "resume=...", mert kézzel hozzáadtam a .conf fájlhoz! Automatice nem teszi be!
- A hozzászóláshoz be kell jelentkezni
Van egy olyan sejtésem, hogy elég bután parse-ol. A resume=... paramétert tedd a végére. Az az érzésem, az elejétől az rhgb quiet-ig egyfajta konstans résznek tekinti, s csak az utána lévő résszel foglalkozik. Ez egy érzés csak, nem néztem meg a kódját, de megpróbálkoznék vele, s kiderül, mit alkot kernelfrissítést követően. Abban amúgy van ráció, hogy a root=... kernelparamétert ne lehessen törölni, viszont ha így van, az szembemegy a unixos filozófiával.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Ez valami aljas bug, mert nálam is mindig felülíródik, csak másképp. Nálam a BOOT= kezdetű paraméter kezd el szaporodni, megmarad a régi kernelhez való, s odakerül az újhoz való. Meg nincs benne a kernel verzió a Grub menüjében. Csak tudnám, honnan veszi a template-et!
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Ma volt időm foglalkozni vele. Minden shell script, ezért végigbogarászható. Többféle boot alrendszer van Fedorához, s ezek olykor keverednek. A /usr/lib/kernel/install.d
alatt található scriptek hajtódnak végre kernel frissítéskor, lásd még
man kernel-install
A 20-grub.install
csinálná ezt jól, de ha megtalálja a /boot/$MACHINE_ID
alkönyvtárt - az egy hosszú hexadecimális szám -, akkor előzékenyen kilép, s hagyja futni a mögötte lévő scripteket. Aztán jön majd a 90-loaderentry.install
script, ez a systemd-udev része, de szerintem bugos, mert képes a /proc/cmdline-ból átvenni olyan paramétert, amelyben benne van a jelenlegi kernel verziószáma. A releváns kódrészlet:
if [[ -f /etc/kernel/cmdline ]]; then
read -r -d '' -a BOOT_OPTIONS < /etc/kernel/cmdline
elif [[ -f /usr/lib/kernel/cmdline ]]; then
read -r -d '' -a BOOT_OPTIONS < /usr/lib/kernel/cmdline
else
declare -a BOOT_OPTIONS
read -r -d '' -a line < /proc/cmdline
for i in "${line[@]}"; do
[[ "${i#initrd=*}" != "$i" ]] && continue
BOOT_OPTIONS+=("$i")
done
fi
Az else ágat kell nézni, mert a korábban vizsgált file-ok nincsenek.
Viszont, ha nem létezik a /boot/$MACHINE_ID
alkönyvtár, akkor lefut helyesen a 20-grub.install
, a végén 77-es visszatérési értékkel lép ki, ami viszont azt jelzi a kernel-install scriptnek, hogy az ezután lévő scripteket már ne hajtsa végre, így a 90-loaderentry.install
sem kerül végrehajtásra.
Nagyon elbonyolították, nem igazán világos, miért van erre szükség. Azt értem, hogyan működik, csak azt nem, minek egy rakás boot metódus.
A következtetésem az, hogy a legközelebbi kernelfrissítés előtt át kell neveznem a /boot/$MACHINE_ID
alkönyvtárt valami mássá, hogy ne találja meg, s akkor jó lesz. Addig viszont nem nevezhetem át, mert akkor nem fogom legközelebb boot-olni a gépet. :)
Azt érdemes megszemlélni, ezek a scriptek hány rpm csomagból származnak:
cd /usr/lib/kernel/install.d
for i in *; do rpm -qf "`pwd`/$i"; done | sort -u
dracut-049-27.git20181204.fc31.1.x86_64
grub2-common-2.02-103.fc31.noarch
grubby-8.40-36.fc31.x86_64
systemd-udev-243.4-1.fc31.x86_64
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Így, hogy megértettem a működését, könnyű volt workaround-ot csinálnom hozzá. Ha úgy tetszik, három gépemből kettőn ez beteg volt, egy működött jól.
A megoldás, hogy akkor, amikor kernelt akarunk frissíteni, át kell nevezni a /boot/$MACHINE_ID
alkönyvtárat valami mássá - ahogy fentebb írtam is -, utána frissíteni a kernelt, reboot után akár törölhetjük is, amit átneveztünk. Azért csak kernel frissítés előtt, mert az éppen futó kernel image és az initrd image ebben a könyvtárban van, tehát átnevezés után már nem tudjuk ezzel a kernellel boot-olni a gépet.
Amit ebben a hozzászólásban, s az eggyel fentebbiben írtam, immár bizonyítottan igazak, pontosan az elképzelésem szerint történt minden a kernel frissítésekor. :)
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Ez nem segít?
https://docs.fedoraproject.org/en-US/quick-docs/bootloading-with-grub2/
Nálam így néz ki "grubby --info ALL" kimenete:
index=0
kernel="/boot/vmlinuz-5.2.14-200.fc30.x86_64"
args="ro resume=/dev/mapper/fedora_localhost--live-swap rd.lvm.lv=fedora_localhost-live/root rd.lvm.lv=fedora_localhost-live/swap rhgb quiet rd.driver.blacklist=nouveau modprobe.blacklist=nouveau nvidia-drm.modeset=1"
root="/dev/mapper/fedora_localhost--live-root"
initrd="/boot/initramfs-5.2.14-200.fc30.x86_64.img"
title="Fedora (5.2.14-200.fc30.x86_64) 30 (Thirty)"
id="f823dec7cc76491d839feb0df12fdf9c-5.2.14-200.fc30.x86_64"
index=1...
index=2...
index=3
kernel="/boot/vmlinuz-0-rescue-f823dec7cc76491d839feb0df12fdf9c"
args="ro resume=/dev/mapper/fedora_localhost--live-swap rd.lvm.lv=fedora_localhost-live/root rd.lvm.lv=fedora_localhost-live/swap rhgb quiet rd.driver.blacklist=nouveau modprobe.blacklist=nouveau nvidia-drm.modeset=1"
root="/dev/mapper/fedora_localhost--live-root"
initrd="/boot/initramfs-0-rescue-f823dec7cc76491d839feb0df12fdf9c.img"
title="Fedora (0-rescue-f823dec7cc76491d839feb0df12fdf9c) 30 (Thirty)"
id="f823dec7cc76491d839feb0df12fdf9c-0-rescue"
Megvan minden csomagod?
"dnf list installed | grep grub"
grub2-common.noarch 1:2.02-81.fc30 @updates
grub2-efi-ia32.x86_64 1:2.02-81.fc30 @updates
grub2-efi-ia32-cdboot.x86_64 1:2.02-81.fc30 @updates
grub2-efi-x64.x86_64 1:2.02-81.fc30 @updates
grub2-efi-x64-cdboot.x86_64 1:2.02-81.fc30 @updates
grub2-pc.x86_64 1:2.02-81.fc30 @updates
grub2-pc-modules.noarch 1:2.02-81.fc30 @updates
grub2-tools.x86_64 1:2.02-81.fc30 @updates
grub2-tools-efi.x86_64 1:2.02-81.fc30 @updates
grub2-tools-extra.x86_64 1:2.02-81.fc30 @updates
grub2-tools-minimal.x86_64 1:2.02-81.fc30 @updates
grubby.x86_64 8.40-31.fc30 @updates
- A hozzászóláshoz be kell jelentkezni
Most jónak tűnik. Talán a "grubby" parancs oldotta meg /nem tudom... :) /:
cat /proc/cmdline
BOOT_IMAGE=(hd0,msdos2)/boot/vmlinuz-5.2.16-200.fc30.x86_64 root=UUID=714b5931-6379-4a7b-9e47-daf1504372f9 ro vconsole.font=latarcyrheb-sun16 rhgb quiet resume=UUID=< my_swap_uuid_... >
A /boot/loader/entries/*.conf a template. Ide már nem kell beírnom, mert (gondolom) a $kernelopts változóból átveszi:
vagy: /etc/defult/grub #GRUB_CMDLINE_LINUX_DEFAULT="resume=UUID=..."
vagy: /boot/grub2/grubenv # kernelopts="... resume=UUID=......"
- A hozzászóláshoz be kell jelentkezni