F30 upgrade GRUB2 resume option(?)

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

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

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

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

"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

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

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.

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.

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

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

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

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

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.

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

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

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

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!

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

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

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

Í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

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

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