F30 upgrade GRUB2 resume option(?)

 ( makgab | 2019. május 25., szombat - 9:43 )

Ü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.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Ú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.

Neked valami kimaradt az életedből:

https://fedoramagazine.org/setting-kernel-command-line-arguments-with-fedora-30/

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

ok, kösz.
F29 alatt még nem volt így szétszedve nálam a "grub.cfg". :o

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.

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.

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

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?

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

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...

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

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. :)

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.

Gondolom, az UUID= után megadtad a swap uuid-ját, csak itt nem írtad le.


tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

igen.

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

én sudo-val.

Ez szokás Fedorán? Én root jogot szerzek

su -

paranccsal, s innen teszek-veszek.


tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

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...

"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*
************************************

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

Lehet a sudoers-ben konfigolni hogy attól függetlenül hogy a wheel csoportban vagy kérjen jelszót, úgy mint a su - .

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