Fedora 43 — Telepítés utáni testreszabás és optimalizálás

Egy részletes útmutató arról, hogyan lesz egy friss Fedora telepítésből gyors, biztonságos és kényelmes rendszer. Hogyan csökkentsd a boot időt, állíts be kétfaktoros bejelentkezést, konfiguráld a Plymouth-ot logó nélkül, és tedd használhatóvá a konzolt — minden lépés mögött a miérttel.


Telepítetted a Fedorát, minden működik, bejelentkeztél — és most mi legyen? A legtöbb disztribúció „használható" állapotban érkezik, de messze van az optimálistól. A boot lassú, a bejelentkezés körülményes, a konzol olvashatatlan, és rengeteg olyan szolgáltatás fut a háttérben, amire egy asztali gépen soha nem lesz szükséged.

Ez az útmutató végigvezet azon a folyamaton, amit én is végigjártam egy ThinkPad-on futó Fedora 43-mal. Nem pusztán parancsokat másolunk — minden lépésnél megbeszéljük, hogy mit csinálunk, miért csináljuk, és mi történik a háttérben.


Mielőtt bármit csinálnánk: frissítés

Ez triviálisnak tűnik, de fontos, hogy a rendszer naprakész legyen mielőtt bármit konfigurálunk. Egy friss telepítés csomagjai akár hetekkel is lemaradhatnak.

sudo dnf upgrade --refresh

A firmware frissítések külön kezelendők. A fwupd közvetlenül a gyártótól tölti le a BIOS és egyéb firmware frissítéseket:

sudo fwupdmgr get-devices
sudo fwupdmgr refresh --force
sudo fwupdmgr get-updates
sudo fwupdmgr update

Nem minden géphez érkezik firmware frissítés — ha a get-updates üres, az teljesen normális.


DNF gyorsítás

A Fedora csomagkezelője alapértelmezetten egyetlen szálat használ letöltéshez és nem keresi a leggyorsabb tükörszervert. Egy asztali gépen ez feleslegesen lassú:

sudo tee -a /etc/dnf/dnf.conf << 'EOF'
max_parallel_downloads=10
defaultyes=True
fastestmirror=True
keepcache=False
EOF

Mit csinálnak ezek a sorok?

  • max_parallel_downloads=10 — egyszerre 10 csomagot tölt le párhuzamosan, az alapértelmezett 3 helyett
  • defaultyes=True — telepítésnél nem kell minden alkalommal „y"-t nyomni, az igen az alapértelmezett
  • fastestmirror=True — automatikusan a leggyorsabb tükörszervert választja
  • keepcache=False — nem tárolja a letöltött csomagokat (helytakarékosság)

doas: egy egyszerűbb sudo

A sudo egy hatalmas, komplex program, ami a legtöbb asztali felhasználó számára túlzás. A doas az OpenBSD projektből érkezett, és egyetlen dolgot csinál jól: jogosultságemelést. Kicsi, egyszerű, átlátható konfiguráció.

sudo dnf install opendoas

A konfigurációs fájl egyetlen sor:

sudo tee /etc/doas.conf << 'EOF'
permit persist :wheel
EOF
sudo chmod 600 /etc/doas.conf

A permit persist :wheel azt jelenti: a wheel csoport tagjai használhatják a doas-t, és a persist néhány percig megjegyzi a hitelesítést (mint a sudo alapértelmezetten).

Innentől a .bashrc-be egy alias:

alias sudo="doas"

Ezzel minden megszokott sudo parancsod doas-ként fut, de ha egy script explicit sudo-t hív, az is működik.


Boot idő optimalizálás

Egy friss Fedora 43 telepítés az én gépemen ~35 másodperc alatt bootolt. Ez egy NVMe SSD-vel rendelkező modern ThinkPad-on elfogadhatatlan. Nézzük meg, hol vész el az idő:

systemd-analyze

Ez kiírja a boot fázisokat: firmware, loader (GRUB), kernel, initrd, userspace. Részletesebb képhez:

systemd-analyze blame | head -20
systemd-analyze critical-chain | head -30

A blame megmutatja melyik szolgáltatás mennyi ideig tartott, a critical-chain pedig azt, hogy mi függött mitől — tehát mi volt az a lánc ami a leghosszabb volt.

Felesleges szolgáltatások kikapcsolása

sudo systemctl disable NetworkManager-wait-online.service
sudo systemctl disable nfs-client.target

A NetworkManager-wait-online arra vár, hogy a hálózat teljesen felálljon, mielőtt a boot folytatódik. Egy asztali gépen ez felesleges — a NetworkManager ettől függetlenül csatlakozik, csak nem blokkolja a bootot.

Az nfs-client.target hálózati fájlmegosztáshoz kell (NFS). Ha nem csatlakozol NFS megosztásokhoz (és egy asztali gépen valószínűleg nem), kikapcsolható. A hozzá tartozó gssproxy.service automatikusan leáll vele együtt.

GRUB gyorsítás

A GRUB bootloader alapértelmezetten 5 másodpercet vár, hátha ki akarsz választani egy másik kernelt. Ezt nullára állítjuk, de úgy, hogy hiba esetén a menü mégis megjelenjen:

sudo sed -i 's/^GRUB_TIMEOUT=.*/GRUB_TIMEOUT=0/' /etc/default/grub

A GRUB_TIMEOUT_STYLE=hidden beállítás azt mondja a GRUB-nak, hogy normál esetben azonnal indítson. Ha az előző boot sikertelen volt, a menü automatikusan megjelenik. Emellett bármikor előhozhatod a Shift vagy Esc nyomva tartásával:

grep -q '^GRUB_TIMEOUT_STYLE' /etc/default/grub \
  && sudo sed -i 's/^GRUB_TIMEOUT_STYLE=.*/GRUB_TIMEOUT_STYLE=hidden/' /etc/default/grub \
  || echo 'GRUB_TIMEOUT_STYLE=hidden' | sudo tee -a /etc/default/grub

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Kernel paraméterek

sudo grubby --update-kernel=ALL --args="nowatchdog nmi_watchdog=0"

Két dolgot csinálunk itt:

  • nowatchdog és nmi_watchdog=0 — kikapcsolja a kernel watchdog timer-ét. A watchdog feladata, hogy újraindítsa a gépet ha az lefagy — szervereknél kritikus, de egy asztali gépen felesleges, és leállításkor zavaró „watchdog did not stop" üzenetet okozhat.

A watchdog hardveres modulját is érdemes blacklistelni, hogy biztosan ne töltődjön be:

sudo tee /etc/modprobe.d/nowatchdog.conf << 'EOF'
blacklist iTCO_wdt
blacklist iTCO_vendor_support
EOF

i915 korai betöltés

Intel GPU-val rendelkező gépeknél a grafikus driver (i915) korai betöltése fontos. Ha a KMS (Kernel Mode Setting) későn inicializálódik, a konzol font és a felbontás nem áll be időben:

sudo tee /etc/dracut.conf.d/i915-early.conf << 'EOF'
force_drivers+=" i915 "
EOF
sudo dracut -f

A dracut -f újragenerálja az initramfs-t (a korai boot képfájlt), amibe most bekerül az i915 driver.

Eredmény

A fenti módosítások után a boot idő ~35 másodpercről ~27 másodpercre csökkent. A legnagyobb nyereség a GRUB timeout (~5s) és a felesleges szolgáltatások kikapcsolása volt. A maradék ~13 másodperc firmware idő a BIOS-ban kezelhető (Fast Boot), de az gyártófüggő. A Plymouth ~3 másodpercet ad hozzá a boot időhöz, de cserébe sima átmenetet biztosít a bejelentkezés és az asztal között — fekete képernyő nélkül.


TTY konzol font

A virtuális konzolok (Ctrl+Alt+F3) alapértelmezett fontja apró és nehezen olvasható, különösen HiDPI kijelzőkön. A Terminus font egy jól olvasható, monospace bitmap font amit kifejezetten hosszú távú terminálhasználatra terveztek:

sudo dnf install terminus-fonts-console

A /etc/vconsole.conf fájl tartalmazza a konzol beállításait:

KEYMAP=de
XKBLAYOUT=de
FONT=ter-v18b

Fontos a font variáns megválasztása. A Terminus fontok elnevezési konvenciója: ter-[változat][méret][súly].

  • v = VGA (512 glyph, tartalmazza az ékezetes karaktereket)
  • u = Unicode (elvileg több karakter, de egyes rendszereken nem működik az ékezet)
  • 18 = 18 pixel magas
  • b = bold (vastagabb, olvashatóbb)

A ter-v18b a legjobb kompromisszum méret és olvashatóság között, és az ékezetes karakterek (äöü, áéíóöőúüű) is működnek vele. Az i915 korai betöltés (lásd fent) biztosítja, hogy bootoláskor is ez a font legyen aktív.


Ujjlenyomat-olvasó beállítás

A legtöbb modern ThinkPad tartalmaz ujjlenyomat-olvasót. A Fedora az fprintd szolgáltatáson keresztül kezeli ezeket. Az első lépés a régi (esetleg korrupt) ujjlenyomatok törlése és újraregisztrálás:

fprintd-delete "$USER"
fprintd-enroll -f right-index-finger
fprintd-enroll -f left-index-finger

Annyi ujjat regisztrálj, amennyit kényelmes — én négyet szoktam (jobb és bal mutatóujj, bal hüvelyk, bal kisujj).

Ellenőrzés:

fprintd-verify -f right-index-finger

Ha verify-match-et ír, működik.

USB autosuspend probléma

Egyes ujjlenyomat-olvasók (mint a Goodix MOC) USB autosuspend módba kerülnek inaktivitás után. Amikor a GDM megpróbálja használni, a szenzornak előbb „fel kell ébrednie", ami 1-2 másodperces késleltetést okoz. Ezt egy udev szabállyal javítjuk:

sudo tee /etc/udev/rules.d/50-goodix-nosuspend.rules << 'EOF'
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="27c6", ATTR{idProduct}=="658c", ATTR{power/autosuspend}="-1", ATTR{power/control}="on"
EOF
sudo udevadm control --reload-rules
sudo udevadm trigger --subsystem-match=usb

A 27c6:658c a Goodix szenzor USB azonosítója — ha más szenzor van a gépedben, az lsusb paranccsal megtalálod a sajátodat. Az autosuspend=-1 azt jelenti: soha ne aludjon el.


PAM 2FA: jelszó + ujjlenyomat a bejelentkezéshez

Ez a rész a legösszetettebb, de a legérdekesebb is. A cél: a GDM bejelentkezésnél mindkettő kelljen (jelszó ÉS ujjlenyomat), míg a doas-nál elég legyen az egyik.

Miért 2FA?

Az ujjlenyomat kényelmes, de önmagában nem elég biztonságos — egy alvó ujjal is feloldható a gép. A jelszó önmagában kényelmetlen. A kettő kombinációja a legjobb: a jelszó a „valamit amit tudsz" faktor, az ujjlenyomat a „valamit ami te vagy" faktor.

Van egy praktikus mellékhatás is: a jelszavas belépés automatikusan feloldja a GNOME Keyringet (a rendszer jelszótárolóját). Tisztán ujjlenyomatos belépésnél ez nem történik meg, és minden bejelentkezésnél külön kéri a keyring jelszavát.

authselect opt-out

A Fedora az authselect eszközzel kezeli a PAM (Pluggable Authentication Modules) fájlokat. Az authselect kényelmesen kapcsolgatja a különböző hitelesítési módszereket, de csak „vagy" logikát tud (jelszó VAGY ujjlenyomat). Az „és" logikához manuálisan kell szerkeszteni a PAM fájlokat:

sudo authselect opt-out

Ez azt jelenti: innentől te kezeled a PAM konfigurációt. Az authselect parancsok nem fognak működni amíg vissza nem állsz. Cserébe teljes kontrollt kapsz.

GDM bejelentkezés: 2FA

A GDM a /etc/pam.d/gdm-password fájlt használja. A lényeg az auth szekció első néhány sora:

auth     [success=done ignore=ignore default=bad] pam_selinux_permit.so
auth        required      pam_env.so
auth        required      pam_faildelay.so delay=2000000
auth        required      pam_unix.so nullok
auth        required      pam_fprintd.so
auth        optional      pam_gnome_keyring.so

A kulcsszó a required. Amikor mind a pam_unix.so (jelszó) és a pam_fprintd.so (ujjlenyomat) is required, mindkettőnek sikerülnie kell. A sorrend számít: először jelszó, utána ujjlenyomat.

A pam_gnome_keyring.so optional-ként van jelen — ha a jelszó sikeres, átadja a keyringnek, és az feloldódik.

A teljes fájl:

auth     [success=done ignore=ignore default=bad] pam_selinux_permit.so
auth        required      pam_env.so
auth        required      pam_faildelay.so delay=2000000
auth        required      pam_unix.so nullok
auth        required      pam_fprintd.so
auth        optional      pam_gnome_keyring.so
auth        include       postlogin
account     required      pam_nologin.so
account     include       system-auth
password    substack      system-auth
-password   optional      pam_gnome_keyring.so use_authtok
session     required      pam_selinux.so close
session     required      pam_loginuid.so
session     required      pam_selinux.so open
session     optional      pam_keyinit.so force revoke
session     required      pam_namespace.so
session     include       system-auth
session     optional      pam_gnome_keyring.so auto_start
session     include       postlogin

Az ujjlenyomatos GDM login kikapcsolása

A GDM kétféle PAM fájlt tud használni: gdm-password (jelszavas) és gdm-fingerprint (ujjlenyomatos). Ha regisztrált ujjlenyomatokat talál, automatikusan a gdm-fingerprint-et preferálja — ami megkerülné a 2FA-t.

Ezt két helyen kell blokkolni. Először a PAM fájl szintjén — a /etc/pam.d/gdm-fingerprint minden kérést elutasít:

auth        required      pam_deny.so
account     required      pam_deny.so
password    required      pam_deny.so
session     required      pam_deny.so

Másodszor a GDM felületén — egy dconf beállítással megmondjuk, hogy ne is próbálkozzon:

sudo mkdir -p /etc/dconf/db/gdm.d/locks

sudo tee /etc/dconf/profile/gdm << 'EOF'
user-db:user
system-db:gdm
EOF

sudo tee /etc/dconf/db/gdm.d/02-disable-fingerprint-login << 'EOF'
[org/gnome/login-screen]
enable-fingerprint-authentication=false
EOF

sudo tee /etc/dconf/db/gdm.d/locks/02-fingerprint << 'EOF'
/org/gnome/login-screen/enable-fingerprint-authentication
EOF

sudo dconf update

A locks mappa kényszeríti a beállítást — nélküle a GDM felülírhatja a saját preferenciájával.

Fontos: a dconf profile fájl (/etc/dconf/profile/gdm) nélkül a GDM nem olvassa a gdm.d mappát. Ez egy könnyen kihagyható lépés.

doas/sudo: jelszó VAGY ujjlenyomat

A system-auth fájlban (amit a doas és sudo is használ) az ujjlenyomat sufficient-ként van beállítva:

auth        sufficient                                   pam_fprintd.so
auth        sufficient                                   pam_unix.so nullok

A sufficient azt jelenti: ha ez sikerül, elég, nem kell tovább menni. Tehát a doas whoami parancsra vagy ujjlenyomatot adsz, vagy jelszót — bármelyik elég.

Vészhelyzet: ha kizárod magad

PAM konfigurációnál mindig legyen nyitva egy root TTY session (Ctrl+Alt+F3) amíg nem tesztelted a változásokat. Ha a GDM nem enged be:

  1. Ctrl+Alt+F3 → TTY login prompt
  2. Bejelentkezés user + jelszóval
  3. Visszaállítás:
sudo cp /etc/pam.d/gdm-password.bak /etc/pam.d/gdm-password
sudo systemctl restart gdm

Plymouth: sima átmenet, logó nélkül

A Plymouth a Linux grafikus boot kezelője. Eredeti célja a szép boot animáció — de van egy fontosabb funkciója: tartja a GPU framebuffert a GDM és a GNOME session közötti váltáskor. Nélküle fekete képernyőt kapsz a bejelentkezés és az asztal megjelenése között.

A kompromisszum: a Plymouth ~3 másodperccel növeli a boot időt, de cserébe a bejelentkezés utáni átmenet zökkenőmentes. A kérdés az, hogy a gyártói és disztribúciós logókat el lehet-e tüntetni úgy, hogy a sima átmenet megmaradjon.

Spinner téma beállítása

A spinner téma tartja a framebuffert, és egy minimális pörgő animációt mutat. A logó (watermark.png) lecserélhető egy átlátszó pixelre:

doas plymouth-set-default-theme spinner -R
doas cp /usr/share/plymouth/themes/spinner/watermark.png /usr/share/plymouth/themes/spinner/watermark.png.bak
magick -size 1x1 xc:transparent /tmp/empty.png
doas cp /tmp/empty.png /usr/share/plymouth/themes/spinner/watermark.png
doas plymouth-set-default-theme spinner -R

Az első -R beállítja a témát és újraépíti az initramfs-t. A watermark csere után a második -R frissíti a boot képfájlt az üres logóval.

GDM logó eltüntetése

A bejelentkezési képernyőn megjelenő Fedora logó a /usr/share/pixmaps/fedora-gdm-logo.png fájlból jön. Ugyanaz a megoldás:

doas cp /usr/share/pixmaps/fedora-gdm-logo.png /usr/share/pixmaps/fedora-gdm-logo.png.bak
doas cp /tmp/empty.png /usr/share/pixmaps/fedora-gdm-logo.png

Mindkét eredeti fájlt .bak-ként mentjük. Fedora frissítés visszaállíthatja az eredeti fájlokat — ha a logó visszajön, a fenti két cp parancs megismétlendő.

Az ImageMagick-ről

A magick parancs az ImageMagick 7 része. Ha nincs telepítve:

doas dnf install ImageMagick

A régebbi convert parancs IMv7-ben deprecated — használd a magick-et.


GDM animáció kikapcsolása

A GDM bejelentkező képernyő fade-in animációja 1-2 másodpercet ad hozzá az észlelt várakozáshoz. Kikapcsolható a GDM saját dconf adatbázisán keresztül:

sudo tee /etc/dconf/db/gdm.d/01-disable-animations << 'EOF'
[org/gnome/desktop/interface]
enable-animations=false
EOF

sudo dconf update

Ez csak a GDM bejelentkező képernyőt érinti. Ha az asztali animációkat is ki akarod kapcsolni (ablaknyitás, workspace váltás, app grid — mindenből azonnali váltás lesz):

gsettings set org.gnome.desktop.interface enable-animations false

Ez egy on/off kapcsoló — nincs lehetőség a sebesség finomhangolására a vanilla GNOME-ban.


Összefoglaló: mit értünk el?

Terület Előtte Utána
Boot idő ~35s ~27s
GRUB várakozás 5s 0s (hiba esetén megjelenik)
Userspace 11.6s 7.3s
Plymouth Fedora logóval Logó nélkül, sima átmenet
GDM bejelentkezés Ujjlenyomat VAGY jelszó Jelszó → ujjlenyomat (2FA)
Keyring Minden bejelentkezésnél kérte Automatikus feloldás
Online Accounts Nem működött ujjlenyomattal Működik (jelszó feloldja)
doas/sudo Jelszó Jelszó VAGY ujjlenyomat
TTY konzol Olvashatatlan, apró font Terminus 18px, ékezetekkel
Watchdog üzenet Megjelent leállításkor Eltűnt
GDM animáció Lassú fade-in Azonnali
GDM logó Fedora logó Eltávolítva
GNOME animációk Bekapcsolva Kikapcsolva

Hasznos parancsok gyűjtemény

# Boot idő elemzés
systemd-analyze
systemd-analyze blame | head -20
systemd-analyze critical-chain | head -30

# Ujjlenyomatok kezelése
fprintd-list "$USER"
fprintd-verify -f right-index-finger

# PAM konfiguráció ellenőrzése
cat /etc/pam.d/gdm-password
cat /etc/pam.d/system-auth

# GDM logok
journalctl -b --unit=gdm --no-pager | tail -40

# Ujjlenyomat-olvasó logok
journalctl -b --unit=fprintd.service --no-pager | tail -30

# TTY font tesztelése (Ctrl+Alt+F3)
setfont ter-v18b
echo "äöü áéíóöőúüű"

A cikkben szereplő beállítások Fedora 43-on, egy Intel-alapú ThinkPad-on lettek tesztelve. Más hardveren az USB azonosítók, a grafikus driver és a firmware idő eltérhet.