Handbook:X86/Installation/Kernel/hu
Opcionális: Firmware és/vagy mikrokód telepítése
Firmware
Javasolt: Linux Firmware
Sok operációs rendszeren bizonyos hardverek működéséhez nem-FOSS firmware szoftverre van szükség. A sys-kernel/linux-firmware szoftvercsomag sok (de nem minden) eszközhöz tartalmaz firmware szoftvert.
A legtöbb vezeték nélküli kártya és GPU működéséhez szükség van firmware szoftverre.
root #
emerge --ask sys-kernel/linux-firmware
Egyes firmware csomagok telepítése gyakran megköveteli a kapcsolódó firmware licenc elfogadását. Ha szükséges, látogasson el a Kézikönyv licenckezelési szekciójához, hogy segítséget kapjon a licenc elfogadásában.
Firmware betöltés (Firmware Loading)
A firmware fájlokat általában akkor töltik be, amikor a hozzájuk tartozó kernelmodult betöltik. Ez azt jelenti, hogy a firmware szoftvert be kell építeni a kernelbe a CONFIG_EXTRA_FIRMWARE használatával, ha a kernelmodult Y-ra állítják az M helyett. A legtöbb esetben egy firmware-t igénylő modul beépítése bonyolíthatja vagy meghiúsíthatja a betöltést.
Mikrokód
A különálló grafikus hardverek és hálózati interfészek mellett a CPU-k is igényelhetnek firmware frissítéseket. Az ilyen típusú firmware-t általában mikrokódnak nevezik. Az újabb mikrokód verziók néha szükségesek az instabilitás, biztonsági problémák vagy egyéb kisebb hibák javításához a CPU hardverében.
Az AMD CPU-k mikrokód frissítései az említett sys-kernel/linux-firmware szoftvercsomagban találhatók. Az Intel CPU-k mikrokódja a sys-firmware/intel-microcode csomagban található, amelyet külön kell telepíteni. További információkért a mikrokód frissítések alkalmazásáról lásd a Mikrokód cikket.
sys-kernel/installkernel
Installkernel használható a kerneltelepítés, az initramfs generálás, az unified kernel image generálás és/vagy a bootloader beállítás automatizálására, többek között. A sys-kernel/installkernel két utat kínál ennek elérésére: a Debianból származó hagyományos installkernel és a systemd kernel-install megoldását. Hogy melyiket válassza, többek között a rendszer bootloaderétől függ. Alapértelmezés szerint a systemd profilokon a systemd kernel-install van használatban, míg más profilokon a hagyományos installkernel az alapértelmezett.
Bootloader
Most itt az ideje eldönteni, hogy a felhasználó melyik bootloadert szeretné használni a rendszerhez. Ha nem biztos benne, akkor kövesse az alábbi 'Hagyományos elrendezés' alfejezetet.
GRUB
A GRUB felhasználók használhatják a systemd kernel-install vagy a hagyományos Debian installkernel megoldását. A systemd USE jelölőzászló lehetővé teszi az ezek közötti váltást. Ahhoz, hogy a kernel telepítésekor a grub-mkconfig automatikusan fusson, engedélyezze a grub USE jelölőzászló opciót.
/etc/portage/package.use/installkernel
sys-kernel/installkernel grub
root #
emerge --ask sys-kernel/installkernel
systemd-boot
Amikor a systemd-boot (korábbi nevén gummiboot) bootloadert használja, akkor a systemd kernel-install megoldását kell használni. Ezért győződjön meg arról, hogy a systemd és a systemd-boot USE jelölőzászló engedélyezve van a sys-kernel/installkernel szoftvercsomagban, majd telepítse a systemd-boothoz tartozó releváns szoftvercsomagot.
Az OpenRC init rendszert használó operációs rendszerek esetében:
/etc/portage/package.use/systemd-boot
sys-apps/systemd-utils boot kernel-install
sys-kernel/installkernel systemd systemd-boot
root #
emerge --ask sys-apps/systemd-utils sys-kernel/installkernel
A systemd init rendszert használó operációs rendszerek esetében:
/etc/portage/package.use/systemd
sys-apps/systemd boot
sys-kernel/installkernel systemd-boot
root #
emerge --ask sys-apps/systemd sys-kernel/installkernel
A kernel parancssort, amelyet az új kernelekhez használni kell, a /etc/kernel/cmdline fájlban kell megadni, például:
/etc/kernel/cmdline
quiet splash
EFI stub
Az UEFI-alapú számítógépes rendszerek technikailag nem igényelnek másodlagos bootloadereket a kernelek elindításához. A másodlagos bootloaderek arra szolgálnak, hogy kiterjesszék az UEFI firmware funkcionalitását az bootolási folyamat során. Mindazonáltal egy másodlagos bootloader használata általában könnyebb és robusztusabb megoldás, mivel rugalmasabb megközelítést kínál a kernelparaméterek gyors módosítására a bootolási folyamat során. Fontos megjegyezni, hogy az UEFI-megvalósítások jelentősen eltérhetnek a gyártók és a modellek között, és nincs garancia arra, hogy egy adott firmware teljes mértékben megfelel az UEFI-szabványnak. Ezért az EFI Stub indítás nem garantált, hogy minden UEFI-alapú rendszeren működni fog, és emiatt a USE jelölőzászló stabilan le van tiltva, és tesztelési kulcsszavakat kell elfogadni az installkernel ezen funkciójának használatához.
/etc/portage/package.accept_keywords/installkernel
sys-kernel/installkernel
sys-boot/uefi-mkconfig
app-emulation/virt-firmware
/etc/portage/package.use/installkernel
sys-kernel/installkernel efistub
root #
emerge --ask sys-kernel/installkernel
root #
mkdir -p /efi
Hagyományos elrendezés, egyéb bootloaderek (pl. (e)lilo, syslinux stb.)
A hagyományos /boot elrendezés (például (e)LILO, syslinux stb.) az alapértelmezett, ha a grub, systemd-boot, efistub és uki USE flag-ek nincsenek engedélyezve. További lépések nem szükségesek.
Az initramfs létrehozása
Egy initial ram-alapú fájl sziszéma, vagyis initramfs, szükséges lehet az operációs rendszer indításához. Számos esetben szükség lehet erre, de a gyakori esetek közé tartoznak:
- Kernelek, ahol a tárhely-illesztőprogramok vagy a fájlrendszer-illesztőprogramok modulok.
- Elrendezések, ahol a /usr/ vagy a /var/ külön partíciókon található.
- Titkosított gyökérfájlrendszerek.
A Distribution kernelek initramfs fájllal való használatra készültek, mivel számos tárhely- és fájlrendszer-illesztőprogram modulként van felépítve.
A gyökérfájlrendszer felcsatolása mellett egy initramfs fájl más feladatokat is elláthat, például:
- A fájlrendszer konzisztenciájának az ellenőrzése, vagyis a file system consistency check fsck futtatása, amely egy olyan szoftver, amely a fájlrendszer konzisztenciájának az ellenőrzésére és javítására szolgál például egy nem megfelelő operációs rendszer leállítás esetén.
- Helyreállítási környezet biztosítása késői indítási hibák esetén.
Az Installkernel automatikusan létrehozhat egy initramfs fájlt a kernel telepítésekor, ha a dracut vagy ugrd USE jelölőzászló engedélyezve van:
/etc/portage/package.use/installkernel
sys-kernel/installkernel dracut
root #
emerge --ask sys-kernel/installkernel
Opcionális: Egyesített kernelképfájl létrehozása
Egy Unified Kernel Image (UKI) többek között magában foglalja a kernelt, az initramfs fájlt és a kernel parancssort egyetlen végrehajtható fájlba belerakva. Mivel a kernel parancssor be van ágyazva az egyesített kernelképfájlba, azt a kernelképfájl generálása előtt kell megadni (tekintse meg lentebb a részleteket ezzel kapcsolatban). Vegye figyelembe, hogy a rendszerindító (a bootloader) vagy a firmware által az indításkor megadott kernel parancssori argumentumok figyelmen kívül maradnak, amennyiben a Secure Boot engedélyezve van.
Egy egységesített kernelképfájlhoz egy stub loader szükséges. Jelenleg az egyetlen elérhető ilyen a systemd-stub. Ennek engedélyezéséhez:
A systemd rendszereken:
/etc/portage/package.use/uki
sys-apps/systemd boot
root #
emerge --ask sys-apps/systemd
Az OpenRC init rendszerrel ellátott operációs rendszereken:
/etc/portage/package.use/uki
sys-apps/systemd-utils boot kernel-install
root #
emerge --ask sys-apps/systemd-utils
Az Installkernel automatikusan generálhat egy egységesített kernelképet akár dracut, akár ukify használatával, ha engedélyezve van a megfelelő jelölőzászló és a uki USE jelölőzászló.
A dracut esetében:
/etc/portage/package.use/uki
sys-kernel/installkernel dracut uki
/etc/dracut.conf.d/uki.conf
uefi="yes"
kernel_cmdline="some-kernel-command-line-arguments"
root #
emerge --ask sys-kernel/installkernel
Az ukify esetében:
/etc/portage/package.use/uki
sys-apps/systemd boot ukify # A systemd operációs rendszerek számára.
sys-apps/systemd-utils kernel-install boot ukify # Az OpenRC operációs rendszerek számára.
sys-kernel/installkernel dracut ukify uki
/etc/kernel/cmdline
some-kernel-command-line-arguments
root #
emerge --ask sys-kernel/installkernel
Megjegyzendő, hogy míg a dracut képes mind külön initramfs fájlt, mind egyesített kernelképfájlt létrehozni, az ukify csak az utóbbit tudja legenerálni, ezért az initramfs fájlt külön kell létrehozni a dracut segítségével.
A fenti beállításpéldákban (mind a Dracut, mind az ukify esetében) fontos, hogy legalább egy megfelelő root= paramétert megadjanak a kernel parancssorában, hogy az Egységesített Kernel Képfájl megtalálhassa a gyökérpartíciót. Ez nem szükséges a systemd init rendszert használó operációs rendszerek esetében, amelyek követik a Discoverable Partitions Specification (DPS) előírását. Ebben az esetben a beágyazott initramfs dinamikusan megtalálja a gyökérpartíciót.
Generic Unified Kernel Image (csak systemd esetében)
Az előre elkészített sys-kernel/gentoo-kernel-bin szotvercsomag opcionálisan telepíthet egy előre elkészített általános egyesített kernelképfájlt, amely egy általános initramfs fájlt tartalmaz, és amely képes a legtöbb systemd alapú operációs rendszer elindítására. Telepíthető a generic-uki USE jelölőzászló engedélyezésével, és az installkernel beállításával, hogy ne generáljon egyéni initramfs fájlt vagy egyesített kernelképfájlt:
/etc/portage/package.use/uki
sys-kernel/gentoo-kernel-bin generic-uki
sys-kernel/installkernel -dracut -ukify -ugrd uki
Secure Boot
Ha ezt a részt követve Ön manuálisan fordítja le a saját kerneljét, akkor győződjön meg arról, hogy követi a Kernel aláírása részben ismertetett lépéseket.
Az sys-kernel/gentoo-kernel-bin szotvercsomag által opcionálisan terjesztett általános Egyesített kernelképfájl már előre alá van írva. A helyileg generált egyesített kernelképfájl aláírásának módja attól függ, hogy a dracut vagy az ukify van-e használatban. Vegye figyelembe, hogy a kulcs és a tanúsítvány helyének meg kell egyeznie az /etc/portage/make.conf fájlban megadott SECUREBOOT_SIGN_KEY és SECUREBOOT_SIGN_CERT helyével.
A dracut számára:
/etc/dracut.conf.d/uki.conf
uefi="yes"
kernel_cmdline="some-kernel-command-line-arguments"
uefi_secureboot_key="/path/to/kernel_key.pem"
uefi_secureboot_cert="/path/to/kernel_key.pem"
Az ukify számára:
/etc/kernel/uki.conf
[UKI]
SecureBootPrivateKey=/path/to/kernel_key.pem
SecureBootCertificate=/path/to/kernel_key.pem
A kernel konfigurációja és fordítása
Bölcs lépés lehet az első indításkor a dist-kernel használata, mivel ez egy nagyon egyszerű módszert kínál a rendszerproblémák és kernelbeállítás problémák kizárására. Egy ismerten működő kernel mindig rendelkezésre állása gyorsíthatja a hibakeresést, és csökkentheti a frissítés miatti szorongást, hogy az operációs rendszer esetleg nem indul el többé.
Most itt az ideje a kernelforráskódok beállításának és bináris kódra történő fordításának. A telepítés céljára három különböző megközelítést fogunk bemutatni a kernel kezelését illetően, azonban a telepítés után bármikor új módszert lehet alkalmazni.
A Gentoo telepítési szakaszában csak egyetlen kerneltípust szabad telepíteni, azaz vagy a sys-kernel/gentoo-kernel-bin szoftvercsomagot, vagy pedig a sys-kernel/gentoo-sources szoftvercsomagot.
Rangsorolva a legkevésbé érintettől a leginkább érintettig:
Teljes automatizálási megközelítés: Terjesztési kernelek: A Terjesztési Kernel beállítására, automatikus felépítésére és telepítésére szolgál, beleértve a Linux kernelt, a hozzá tartozó modulokat és (alapértelmezés szerint engedélyezett, de választható) egy initramfs fájlt. A jövőbeli kernel frissítések teljesen automatizáltak, mivel ezek a szoftvercsomag-kezelőn keresztül kezelhetők, akárcsak bármely más rendszer-szoftvercsomag. Szükség esetén lehetséges egy egyedi kernel beállítás fájl biztosítása. Ez a legkevésbé bonyolult eljárás, és tökéletes az új Gentoo felhasználók számára, mivel azonnali működést kínál, és minimális rendszergazdai beavatkozást igényel.
- Teljes manuális megközelítés
- Az új kernelforrások az operációs rendszer szoftvercsomag-kezelőjével vannak telepítve. A kernelt beállítása, létrehozása és telepítése manuálisan történik a eselect kernel és számos make parancs segítségével. A későbbi kernel frissítések során ismét végre kell hajtani a beállítás, létrehozás és telepítés manuális folyamatát. Ez a legösszetettebb folyamat, de maximális irányítást biztosít a kernel frissítési folyamat felett.
- Hibrid megközelítés: Genkernel
- Itt a hibrid kifejezést használjuk, de vegye figyelembe, hogy a dist-kernel és a kézi források egyaránt tartalmaznak módszereket ugyanazon cél elérésére. Az új kernelforráskódok az operációs rendszer szoftvercsomag-kezelőjén keresztül telepíthetőek. A rendszergazdák használhatják a Gentoo genkernel eszközt a Linux kernel, a hozzá tartozó modulok és (opcionálisan, de alapértelmezés szerint nem engedélyezett) egy initramfs fájl beállítására, létrehozására és telepítésére. Szükség esetén egyedi kernelbeállítás-fájl is biztosítható. A jövőbeli kernel beállításához, forráskód fordításhoz és telepítéshez a rendszergazda részvétele szükséges, például a eselect kernel, genkernel és esetleg más parancsok futtatásával minden frissítéshez. Ez az opció csak azoknak a felhasználóknak ajánlott, akik tudják, hogy szükségük van a genkernel szoftverre.
Az összes disztribúció alapját a Linux kernel képezi. Ez a réteg található a felhasználói programok és az operációs rendszer hardverei között. Bár a kézikönyv számos lehetséges kernel forrást kínál a felhasználóknak, egy átfogóbb lista részletesebb leírásokkal elérhető a Kernel áttekintő oldalon.
A kernel telepítési feladatok, mint például a kernel kép másolása a /boot könyvtárba vagy az EFI rendszerpartícióra, egy initramfs és/vagy egységes kernel képfájl létrehozása, a betöltő konfigurációjának frissítése automatizálható a installkernel segítségével. A felhasználók érdemes lehet konfigurálni és telepíteni a sys-kernel/installkernel csomagot, mielőtt folytatnák. További információkért lásd az alábbi Kernel telepítési szekcióját.
Terjesztési (Disztribúció) kernelek
Terjesztési (disztribúció) kernelek ebuild-ek, amelyek lefedik a kernel kicsomagolásának, konfigurálásának, kódfordításának és telepítésének teljes folyamatát. Ennek a módszernek az elsődleges előnye, hogy a softvercsomag-kezelő részeként a @world frissítés során a kernelek új verziókra frissülnek. Ez nem igényel több beavatkozást, mint egy emerge parancs futtatása. A terjesztési (disztribúció) kernelek alapértelmezett beállítása a legtöbb hardvert támogatja, azonban két mechanizmust kínálnak a testreszabáshoz: savedconfig és config snippets. További részletekért, a beállítással kapcsolatban, tekintse meg a projekt oldalt.
Opcionális: Aláírt kernelmodulok
A kész terjesztési (disztribúció) kernelben (sys-kernel/gentoo-kernel-bin) található kernel modulok már alá vannak írva. A forráskódból fordított kernelek moduljainak aláírásához engedélyezze a modules-sign USE jelölőzászlót, és opcionálisan adja meg, hogy melyik kulcsot kívánja használni az aláíráshoz az /etc/portage/make.conf fájlban.
/etc/portage/make.conf
A modulaláírás engedélyezéseUSE="modules-sign"
# Opcionálisan, egyéni aláírási kulcsok használatához.
MODULES_SIGN_KEY="/path/to/kernel_key.pem"
MODULES_SIGN_CERT="/path/to/kernel_key.pem" # Csak akkor szükséges, ha a MODULES_SIGN_KEY a tanúsítványt se nem tartalmazza.
MODULES_SIGN_HASH="sha512" # Alapértelmezés szerint sha512.
Ha a MODULES_SIGN_KEY nincs megadva, akkor a kernel építési rendszer egy kulcsot fog generálni, amely a /usr/src/linux-x.y.z/certs könyvtárban kerül tárolásra. Ajánlott manuálisan generálni egy kulcsot annak biztosítása érdekében, hogy minden kernel kiadásnál ugyanaz legyen a kulcs. Egy kulcsot a következő parancs futtatásával lehet generálni:
root #
openssl req -new -nodes -utf8 -sha256 -x509 -outform PEM -out kernel_key.pem -keyout kernel_key.pem
A MODULES_SIGN_KEY és a MODULES_SIGN_CERT lehetnek különböző fájlok. Ebben a példában az OpenSSL által generált pem fájl tartalmazza mind a kulcsot, mind a hozzá tartozó tanúsítványt, így mindkét változót ugyanarra az értékre állítjuk be.
Az OpenSSL néhány kérdést fog feltenni a kulcsot generáló felhasználóról, ajánlott ezeket a kérdéseket a lehető legrészletesebben megválaszolni.
Tárolja a kulcsot egy biztonságos helyen, legalábbis úgy, hogy a kulcsot csak a root felhasználó olvashassa. Ezt a következő parancs futtatásával ellenőrizheti:
root #
ls -l kernel_key.pem
-r-------- 1 root root 3164 Jan 4 10:38 kernel_key.pem
Ha ez bármi mást ad vissza, mint a fentieket, akkor javítsa a jogosultságokat a következő parancs futtatásával:
root #
chown root:root kernel_key.pem
root #
chmod 400 kernel_key.pem
Opcionális: Kernel képfájl aláírása (Secure Boot)
Az előre bináris kódra lefordított terjesztési (disztribúció) kernelben (ami a sys-kernel/gentoo-kernel-bin szoftvercsomagban található) a kernelképfájl már alá van írva a Secure Boot használatához. A forráskódból fordított kernelképfájl aláírásához engedélyezze a secureboot USE jelölőzászlót, és opcionálisan adja meg, hogy melyik kulcsot kívánja használni az aláíráshoz a /etc/portage/make.conf fájlban. Vegye figyelembe, hogy a kernelképfájl secureboot használatához történő aláírása megköveteli, hogy a kernelmodulok is alá legyenek írva, ugyanaz a kulcs használható mind a kernelképfájl, mind a kernelmodulok aláírásához:
/etc/portage/make.conf
Egyéni aláíró kulcsok engedélyezéseUSE="modules-sign secureboot"
# Opcionálisan, egyéni aláírási kulcsok használatához.
MODULES_SIGN_KEY="/path/to/kernel_key.pem"
MODULES_SIGN_CERT="/path/to/kernel_key.pem" # Csak akkor szükséges, ha a MODULES_SIGN_KEY se nem tartalmazza a tanúsítványt.
MODULES_SIGN_HASH="sha512" # Alapértelmezés szerint sha512.
# Opcionálisan, a secureboot engedélyezett indításához ugyanaz vagy más aláírási kulcs is használható.
SECUREBOOT_SIGN_KEY="/path/to/kernel_key.pem"
SECUREBOOT_SIGN_CERT="/path/to/kernel_key.pem"
A SECUREBOOT_SIGN_KEY és a SECUREBOOT_SIGN_CERT különböző fájlok is lehetnek. Ebben a példában az OpenSSL által generált pem fájl mind a kulcsot, mind a hozzá tartozó tanúsítványt tartalmazza, így mindkét változót ugyanarra az értékre állítjuk be.
Ebben a példában ugyanazt a kulcsot használjuk a kernelképfájl aláírására, amelyet a kernelmodulok aláírására generáltunk. Lehetőség van egy második, külön kulcs generálására és használatára is a kernelképfájl aláírására. Az előző szakaszban használt OpenSSL parancs ismét használható.
Tekintse meg a fenti szakaszt az új kulcs generálásának utasításaiért. A lépések megismételhetők, ha külön kulcsot kell használni a kernelképfájl aláírására.
A Secure Boot engedélyezett sikeres indításához a használt bootloader betöltőprogramot is alá kell írni, és a tanúsítványt el kell fogadnia a UEFI firmware-nek vagy a Shim-nek. Ezt később a kézikönyvben el lesz magyarázva.
Egy terjesztési (disztribúció) kernel telepítése
Egy Gentoo foltokkal ellátott kernel fordításához a forráskódból írja be a következő parancsot:
root #
emerge --ask sys-kernel/gentoo-kernel
Azok a rendszergazdák, akik szeretnék elkerülni a kernel forráskódok helyi lefordítását, használhatnak előre binárisra lefordított kernel képfájlokat:
root #
emerge --ask sys-kernel/gentoo-kernel-bin
A Terjesztési Kernelek, mint például a sys-kernel/gentoo-kernel és a sys-kernel/gentoo-kernel-bin, alapértelmezés szerint elvárják, hogy egy initramfs fájl mellett legyenek telepítve. Mielőtt az emerge futtatásra kerülne a kernel telepítéséhez, a felhasználóknak biztosítaniuk kell, hogy a sys-kernel/installkernel be legyen állítva egy initramfs fájlgenerátor (például Dracut) használatára, ahogy az a installkernel szekcióban le van írva.
Frissítés és takarítás
Miután a kernel telepítve van, a jövőben a szoftvercsomag-kezelő automatikusan frissíteni fogja azt az újabb verziókra. Az előző verziók megmaradnak, amíg a szoftvercsomag-kezelőt nem kérjük a régi csomagok eltávolítására. Az adathordozónk területének a felaszabadítása érdekében a régi szoftvercsomagokat a --depclean opcióval futtatott emerge parancs időnkénti használatával lehet eltávolítani:
root #
emerge --depclean
Alternatív megoldásként a régi kernelverziók kifejezett eltávolításának érdekében futtassuk a következő parancsot:
root #
emerge --prune sys-kernel/gentoo-kernel sys-kernel/gentoo-kernel-bin
Az emerge alapértelmezés szerint csak a kernel létrehozási könyvtárát távolítja el. Nem távolítja el a kernel modulokat, sem a telepített kernelképfájlokat. A régi kernelfájlok teljes tisztításához az app-admin/eclean-kernel eszköz használható.
Telepítés utáni/frissítési feladatok
Egy terjesztési kernel frissítése képes automatikusan újra létrehozni a más szoftvercsomagok által telepített külső kernelmodulokat (például: sys-fs/zfs-kmod vagy x11-drivers/nvidia-drivers). Ez az automatizált viselkedés a dist-kernel USE jelölőzászló engedélyezésével válik elérhetővé. Szükség esetén ugyanez a jelölőzászló az initramfs fájlnak az újragenerálását is elindítja.
Amennyiben Ön terjesztési kernelt használ, akkor erősen ajánlott, hogy ezt a jelölőzászlót globálisan engedélyezze a /etc/portage/make.conf fájlban:
/etc/portage/make.conf
USE=dist-kernel engedélyezéseUSE="dist-kernel"
Initramfs vagy az Egységes kernelképfájl manuális újraépítése
Ha szükséges, akkor indítsa el manuálisan az újraépítéseket a kernel frissítése után a következő parancs végrehajtásával:
root #
emerge --ask @module-rebuild
Ha bármilyen kernel modulokra (pl. ZFS) szükség van a korai indítás (early boot) során, akkor az initramfs újraépítését a következő parancs futtatásával végezze el:
root #
emerge --config sys-kernel/gentoo-kernel
root #
emerge --config sys-kernel/gentoo-kernel-bin
A Distribution Kernel sikeres telepítése után itt az ideje továbblépni a következő szakaszra: Rendszer beállítása.
Kernel forráskódjainak a telepítése
A(z) x86 alapú operációs rendszerek kernelének kódfordításakor és telepítésekor a Gentoo a sys-kernel/gentoo-sources szoftvercsomagot ajánlja.
Válassza ki a megfelelő kernelforrást, és telepítse az emerge segítségével:
root #
emerge --ask sys-kernel/gentoo-sources
Ez telepíti a Linux kernelforráskódokat a /usr/src/ könyvtárba, a megadott kernel verziót használva az teljes elérési út nevében. Nem fog szimbolikus hivatkozást létrehozni magától anélkül, hogy a symlink USE flag engedélyezve lenne a kiválasztott kernelforráskód szoftvercsomagon.
Szokás, hogy egy /usr/src/linux szimbolikus hivatkozás fenn van tartva, amely az éppen futó kernelnek megfelelő forrásokra mutat. Azonban ez a szimbolikus hivatkozás alapértelmezés szerint nem lesz létrehozva. Egy egyszerű módja a szimbolikus hivatkozás létrehozásának az eselect kernelmodul használata.
További információkért a szimbolikus hivatkozás céljáról és kezeléséről, kérjük, olvassa el a Kernel/Upgrade oldalt.
Először listázza ki az összes, már telepített kernelt:
root #
eselect kernel list
Available kernel symlink targets: [1] linux-6.6.21-gentoo
Ahhoz, hogy létrehozzon egy linux nevű szimbolikus hivatkozást, használja a következőt:
root #
eselect kernel set 1
root #
ls -l /usr/src/linux
lrwxrwxrwx 1 root root 12 Oct 13 11:04 /usr/src/linux -> linux-6.6.21-gentoo
Alternatíva: Kézi beállítás
Ha esetleg elmaradt volna, akkor ez a szakasz megköveteli a kernelforráskód telepítését. Győződjön meg róla, hogy beszerezte a megfelelő kernelforráskódot, majd térjen vissza ide a szakasz folytatásához.
Gyakran a rendszergazda egyik legnehezebb feladatának tartják a kernelt manuális úton történő beállítását. Ez azonban kevésbé igaz - néhány kernelbeállítás után már senki sem emlékszik arra, hogy nehéz volt! Egy Gentoo-felhasználónak két módja van a manuális kernelkezelésre, amelyek az alábbiakban találhatók:
A modprobed-db folyamat
A nagyon egyszerű módja a kernel kezelésének, ha először telepíti a sys-kernel/gentoo-kernel-bin szoftvercsomagot, és használja a sys-kernel/modprobed-db eszközt az operációs rendszer igényeinek információgyűjtésére. A modprobed-db egy olyan eszköz, amely az operációs rendszer életciklusa alatt crontab segítségével figyeli az operációs rendszert, és hozzáadja az összes eszköz moduljait annak érdekében, hogy minden, amire a felhasználónak szüksége van, támogatás legyen. Például, ha egy Xbox vezérlőt adnak hozzá a telepítés után, akkor a modprobed-db hozzáadja a modulokat, amelyeket a következő kernel újrafordításakor létre kell majd hozni. Erről több információt talál a Modprobed-db cikkben.
Manuális folyamat
Ez a módszer lehetővé teszi a felhasználó számára, hogy teljes mértékben ellenőrizze, hogy miként épül fel a kernel, anélkül hogy jelentős segítséget venne igénybe külső eszközöktől. Egyesek ezt úgy értelmezhetik, hogy szándékosan nehezítik meg a folyamatot.
Azonban ezzel a választással egy dolog igaz: elengedhetetlen, hogy ismerjük az operációs rendszert, amikor a kernelt kézzel mi magunk állítjuk be. A legtöbb információ beszerezhető a sys-apps/pciutils szoftvercsomag telepítésével, amely tartalmazza az lspci parancsot:
root #
emerge --ask sys-apps/pciutils
A chroot környezetben biztonságosan figyelmen kívül hagyhatjuk a pcilib figyelmeztetéseket (például: pcilib: cannot open /sys/bus/pci/devices), amelyeket az lspci parancs okozhat.
Egy másik rendszerinformáció-forrás az lsmod parancs futtatása, hogy lássuk, milyen kernelmodulokat használ a telepítő USB-pendrive/DVD adathordozó, mivel ez jó tippet adhat arról, hogy mit kell engedélyezni.
Most lépjen a kernel forráskódjának a könyvtárába.
root #
cd /usr/src/linux
A kernel rendelkezik egy módszerrel az installcd adathordozón jelenleg használt modulok automatikus felismerésére, ami nagyszerű kiindulópontot nyújt a felhasználó számára saját beállításának az elkészítéséhez. Ez a következő módon hívható meg:
root #
make localmodconfig
Most már ideje a beállítást elvégezni az nconfig használatával:
root #
make nconfig
A Linux kernel beállítómenünek számos szekciója van. Először soroljunk fel néhány lehetőséget, amelyeket aktiválni kell (különben a Gentoo nem fog működni, vagy nem fog megfelelően működni további finomhangolások nélkül). További segítségként a Gentoo wiki oldalon található egy Gentoo kernel beállítási útmutatót is.
Szükséges opciók engedélyezése
Amikor a sys-kernel/gentoo-sources szoftvercsomagot használja, erősen ajánlott a Gentoo-specifikus beállítási opciók engedélyezése. Ezek biztosítják a minimálisan szükséges kernel funkciókat a megfelelő működés érdekében:
Gentoo Linux --->
[*] Gentoo Linux support
[*] Linux dynamic and persistent device naming (userspace devfs) support
[*] Select options required by Portage features
Support for init systems, system and service managers --->
[*] OpenRC, runit and other script based systems and managers
[*] systemd
Természetesen az utolsó két sor választása a kiválasztott init rendszertől függ, (OpenRC vagy systemd). Nem árt mindkét init rendszer támogatásának az engedélyezése.
Amikor a sys-kernel/vanilla-sources szoftvercsomagot használja, az init rendszerekhez tartozó további kiválasztási lehetőségek nem lesznek elérhetőek. A támogatás engedélyezése lehetséges, de túllép a kézikönyv keretein.
Tipikus rendszerösszetevők támogatásának engedélyezése
Győződjön meg róla, hogy minden olyan illesztőprogram, amely létfontosságú a rendszer indításához (például SATA vezérlők, NVMe blokk eszköz támogatás, fájlrendszer támogatás stb.) a kernelbe közvetlen bele van fordítva és nem modul formájában van lefordítva, különben a rendszer nem biztos, hogy teljesen el tud indulni.
Ezután válassza ki a pontos processzortípust. Ajánlott az MCE funkciók (ha elérhető) engedélyezése is, hogy a felhasználók értesüljenek az esetleges hardverproblémákról. Egyes architektúrákon (például x86_64) ezek a hibák nem a dmesg parancs kimenetén jelennek meg, hanem a /dev/mcelog útvonalon. Ehhez szükséges a app-admin/mcelog szoftvercsomag.
Válassza ki a Maintain a devtmpfs file system to mount at /dev opciót is, hogy a kritikus eszközfájlok már a rendszerindítás korai szakaszában elérhetők legyenek (CONFIG_DEVTMPFS és CONFIG_DEVTMPFS_MOUNT):
Device Drivers --->
Generic Driver Options --->
[*] Maintain a devtmpfs filesystem to mount at /dev
[*] Automount devtmpfs at /dev, after the kernel mounted the rootfs
Ellenőrizze, hogy az SCSI lemez támogatása aktiválva van-e (CONFIG_BLK_DEV_SD):
Device Drivers --->
SCSI device support --->
<*> SCSI device support
<*> SCSI disk support
Device Drivers --->
<*> Serial ATA and Parallel ATA drivers (libata) --->
[*] ATA ACPI Support
[*] SATA Port Multiplier support
<*> AHCI SATA support (ahci)
[*] ATA BMDMA support
[*] ATA SFF support (for legacy IDE and PATA)
<*> Intel ESB, ICH, PIIX3, PIIX4 PATA/SATA support (ata_piix)
Ellenőrizze, hogy az alapvető NVMe támogatás engedélyezve van-e:
Device Drivers --->
<*> NVM Express block device
Device Drivers --->
NVME Support --->
<*> NVM Express block device
Nem árt engedélyezni a következő további NVMe támogatást:
[*] NVMe multipath support
[*] NVMe hardware monitoring
<M> NVM Express over Fabrics FC host driver
<M> NVM Express over Fabrics TCP host driver
<M> NVMe Target support
[*] NVMe Target Passthrough support
<M> NVMe loopback device support
<M> NVMe over Fabrics FC target driver
< > NVMe over Fabrics FC Transport Loopback Test driver (NEW)
<M> NVMe over Fabrics TCP target support
Most lépjen a Fájlrendszerek menüpontba, és válassza ki az operációs rendszer által használt fájlrendszerek támogatását. Azt a fájlrendszert amelyet a gyökérfájlrendszerhez használ, ne fordítsa le modul formájában, különben az operációs rendszer nem biztos, hogy képes lesz felcsatolni a partíciót. Válassza ki a Virtuális memória és a /proc fájlrendszer lehetőségeket is. Válasszon ki az alábbi opciók közül egyet vagy többet, ahogyan az operációs rendszer igényli:
File systems --->
<*> Second extended fs support
<*> The Extended 3 (ext3) filesystem
<*> The Extended 4 (ext4) filesystem
<*> Btrfs filesystem support
<*> XFS filesystem support
DOS/FAT/NT Filesystems --->
<*> MSDOS fs support
<*> VFAT (Windows-95) fs support
Pseudo Filesystems --->
[*] /proc file system support
[*] Tmpfs virtual memory file system support (former shm fs)
Ha használni kell majd a PPPoE hálózati protokollt az internetkapcsolathoz vagy egy dial-up modemhez, akkor az alábbi opciókat is engedélyezze (CONFIG_PPP, CONFIG_PPP_ASYNC és CONFIG_PPP_SYNC_TTY):
Device Drivers --->
Network device support --->
<*> PPP (point-to-point protocol) support
<*> PPP over Ethernet
<*> PPP support for async serial ports
<*> PPP support for sync tty ports
A kettő tömörítési opció nem árt, de nem feltétlenül szükségesek, és a PPP over Ethernet opció sem, amelyet csak akkor használhat a ppp, ha kernel módú PPPoE-re van konfigurálva.
Ne feledje el belefoglalni a kernelbe a hálózati (Ethernet vagy vezeték nélküli) kártyák támogatását sem.
A legtöbb rendszer több maggal is rendelkezik, ezért fontos, hogy engedélyezze a Symmetric multi-processing support opciót (CONFIG_SMP):
Processor type and features --->
[*] Symmetric multi-processing support
Többmagos rendszerekben minden egyes mag egy processzornak számít.
Ha Ön USB bemeneti eszközöket (például billentyűzetet vagy egeret) vagy más USB eszközöket fog használni, akkor ne feledje el azokat is engedélyezni a kernel forráskódjában:
Device Drivers --->
HID support --->
-*- HID bus support
<*> Generic HID driver
[*] Battery level reporting for HID devices
USB HID support --->
<*> USB HID transport layer
[*] USB support --->
<*> xHCI HCD (USB 3.0) support
<*> EHCI HCD (USB 2.0) support
<*> OHCI HCD (USB 1.1) support
<*> Unified support for USB4 and Thunderbolt --->
Opcionális: Aláírt kernel modulok
A kernelmodulok automatikus aláírásához engedélyezze a CONFIG_MODULE_SIG_ALL opciót:
[*] Enable loadable module support
-*- Module signature verification
[*] Automatically sign all modules
Which hash algorithm should modules be signed with? (Sign modules with SHA-512) --->
Ha szükséges, akkor változtassa meg opcionálisan a hash algoritmust.
Annak érdekében, hogy minden modul érvényes aláírással legyen ellátva, engedélyezze a CONFIG_MODULE_SIG_FORCE opciót is:
[*] Enable loadable module support
-*- Module signature verification
[*] Require modules to be validly signed
[*] Automatically sign all modules
Which hash algorithm should modules be signed with? (Sign modules with SHA-512) --->
Egy egyedi kulcs használatához adja meg ennek a kulcsnak a helyét a CONFIG_MODULE_SIG_KEY opcióban. Ha nincs megadva, akkor a kernel build rendszer generál egy kulcsot. Ajánlott, hogy manuálisan generáljon egyet. Ezt Ön a következő módon teheti meg:
root #
openssl req -new -nodes -utf8 -sha256 -x509 -outform PEM -out kernel_key.pem -keyout kernel_key.pem
Az OpenSSL néhány kérdést tesz fel a kulcsot generáló felhasználóról, ajánlott ezeket a kérdéseket a lehető legrészletesebben kitölteni.
Tárolja a kulcsot biztonságos helyen, legalábbis a kulcsot csak a root felhasználónak kell tudnia olvasni. Ellenőrizze ezt a következővel:
root #
ls -l kernel_key.pem
-r-------- 1 root root 3164 Jan 4 10:38 kernel_key.pem
Ha a kimenet bármi mást mutat, mint a fentiek, akkor javítsa ki a jogosultságokat a következő parancsokkal:
root #
chown root:root kernel_key.pem
root #
chmod 400 kernel_key.pem
-*- Cryptographic API --->
Certificates for signature checking --->
(/path/to/kernel_key.pem) File name or PKCS#11 URI of module signing key
Más szoftvercsomagok által telepített külső kernelmodulok aláírásához engedélyezze a modules-sign USE jelölőzászlót globálisan:
/etc/portage/make.conf
Modul aláírásának az engedélyezéseUSE="modules-sign"
# Opcionálisan, ha egyedi aláíró kulcsokat használ.
MODULES_SIGN_KEY="/path/to/kernel_key.pem"
MODULES_SIGN_CERT="/path/to/kernel_key.pem" # Csak akkor szükséges, ha a MODULES_SIGN_KEY a tanúsítványt se nem tartalmazza.
MODULES_SIGN_HASH="sha512" # Alapértelmezés szerint sha512 .
A MODULES_SIGN_KEY és a MODULES_SIGN_CERT különböző fájlokra mutathat. Ebben a példában az OpenSSL által generált pem fájl tartalmazza mind a kulcsot, mind a hozzá tartozó tanúsítványt, így mindkét változót ugyanarra az értékre állítjuk be.
Opcionális: Kernelképfájl aláírása (Secure Boot)
A kernelképfájl aláírásakor (biztonságos rendszerindítással -Secure Boot- engedélyezett rendszerek esetén) ajánlott a következő kernelbeállítások végrehajtása:
General setup --->
Kexec and crash features --->
[*] Enable kexec system call
[*] Enable kexec file based system call
[*] Verify kernel signature during kexec_file_load() syscall
[*] Require a valid signature in kexec_file_load() syscall
[*] Enable ""image"" signature verification support
[*] Enable loadable module support
-*- Module signature verification
[*] Require modules to be validly signed
[*] Automatically sign all modules
Which hash algorithm should modules be signed with? (Sign modules with SHA-512) --->
Security options --->
[*] Integrity subsystem
[*] Basic module for enforcing kernel lockdown
[*] Enable lockdown LSM early in init
Kernel default lockdown mode (Integrity) --->
[*] Digital signature verification using multiple keyrings
[*] Enable asymmetric keys support
-*- Require all keys on the integrity keyrings be signed
[*] Provide keyring for platform/firmware trusted keys
[*] Provide a keyring to which Machine Owner Keys may be added
[ ] Enforce Machine Keyring CA Restrictions
Az ""image"" az architektúra specifikus kernelképfájlnak a neve. Ezek az opciók, felülről lefelé: érvényesítik, hogy a kexec hívásban használt kernelképfájl aláírt legyen (a kexec lehetővé teszi a kernel cseréjét helyben), érvényesítik, hogy a kernelmodulok aláírtak legyenek, engedélyezik a integrity módot (amely megakadályozza a kernel futás közbeni módosítását), és engedélyezik a különböző kulcsláncokat.
Azoknál az architektúráknál, amelyek nem támogatják natívan a kernel kicsomagolását (pl. arm64 és riscv), a kernelt a saját kicsomagolójával (zboot) kell felépíteni:
Device Drivers --->
Firmware Drivers --->
EFI (Extensible Firmware Interface) Support --->
[*] Enable the generic EFI decompressor
A kernel kódfordítása után, ahogy az a következő részben is le van írva, a kernelképfájlt alá kell írni. Először telepítse a app-crypt/sbsigntools szoftvercsomagot, majd írja alá a kernelképfájlt:
root #
emerge --ask app-crypt/sbsigntools
root #
sbsign /usr/src/linux-x.y.z/path/to/kernel-image --cert /path/to/kernel_key.pem --key /path/to/kernel_key.pem --out /usr/src/linux-x.y.z/path/to/kernel-image
Ebben a példában ugyanaz a kulcs van használva a kernelképfájl aláírására, mint ami a modulok aláírásához lett generálva. Lehetséges azonban egy második különálló kulcs generálása és használata a kernelképfájl aláírásához. Az előző részben ismertetett OpenSSL parancs ismét használható.
Ezután folytassa a telepítést.
Más szoftvercsomagok által telepített futtatható EFI fájlok automatikus aláírásához engedélyezze a secureboot USE jelölőzászlót globálisan:
/etc/portage/make.conf
Biztonságos rendszerindítás (Secure Boot) engedélyezéseUSE="modules-sign secureboot"
# Opcionálisan, egyedi aláíró kulcsok használatához.
MODULES_SIGN_KEY="/path/to/kernel_key.pem"
MODULES_SIGN_CERT="/path/to/kernel_key.pem" # Csak akkor szükséges, ha a MODULES_SIGN_KEY a tanúsítványt se nem tartalmazza.
MODULES_SIGN_HASH="sha512" # alapértelmezés szerint sha512 .
# Opcionálisan, biztonságos rendszerindítással (Secure Boot) való indításhoz, lehet ugyanaz vagy más aláíró kulcs.
SECUREBOOT_SIGN_KEY="/path/to/kernel_key.pem"
SECUREBOOT_SIGN_CERT="/path/to/kernel_key.pem"
A SECUREBOOT_SIGN_KEY és a SECUREBOOT_SIGN_CERT különböző fájlra mutathat. Ebben a példában az OpenSSL által generált pem fájl tartalmazza mind a kulcsot, mind a hozzá tartozó tanúsítványt, így mindkét változót ugyanarra az értékre állítjuk be.
Amikor egy Unified Kernel Image képfájlt generál a systemd
ukify
eszközével, a kernelképfájlt automatikusan aláírják, mielőtt az belekerülne az egységes kernelképfájlba, így nem szükséges manuálisan aláírni.
For x86 architectures, verify the 64-bit kernel option is unset/deactivated (CONFIG_64BIT=N), and then select the processor family as appropriate for the system's processor(s).
A processzorcsalád a következő két parancs kimenetének áttekintésével határozható meg:
user $
cat /proc/cpuinfo | grep -i vendor | uniq
user $
cat /proc/cpuinfo | grep -i 'model name' | uniq
[ ] 64-bit kernel
Processor type and features --->
Processor family (Core 2/newer Xeon) --->
( ) 486
( ) 586/K5/5x86/6x86/6x86MX
( ) Pentium-Classic
( ) Pentium-MMX
( ) Pentium-Pro
( ) Pentium-II/Celeron(pre-Coppermine)
( ) Pentium-III/Celeron(Coppermine)/Pentium-III Xeon
( ) Pentium M
( ) Pentium-4/Celeron(P4-based)/Pentium-4 M/Xeon
( ) K6/K6-II/K6-III
( ) Athlon/Duron/K7
( ) Opteron/Athlon64/Hammer/K8
( ) Crusoe
( ) Efficeon
( ) Winchip-C6
( ) Winchip-2/Winchip-2A/Winchip-3
( ) AMD Elan
( ) GeodeGX1
( ) Geode GX/LX
( ) CyrixIII/VIA-C3
( ) VIA C3-2 (Nehemiah)
( ) VIA C7
(*) Core 2/newer Xeon
( ) Intel Atom
Kódfordítás és telepítés
With the configuration now done, it is time to compile and install the kernel. Exit the configuration and start the compilation process:
root #
make && make modules_install
It is possible to enable parallel builds using make -j N with N being an integer number of parallel tasks that the build process is allowed to launch. This is similar to the instructions about /etc/portage/make.conf earlier, with the MAKEOPTS variable.
When the kernel has finished compiling, copy the kernel image to /boot/. This is handled by the make install command:
root #
make install
This will copy the kernel image into /boot/ together with the System.map file and the kernel configuration file.
Elavult: Genkernel
A Genkernel használata csak olyan felhasználók számára ajánlott, akiknek olyan speciális igényeik vannak, amelyeket csak a Genkernel tud kielégíteni. Mások számára javasolt a Distribution kernel használata, vagy a saját kernel manuális fordítása, mivel ez jelentősen leegyszerűsítheti a Gentoo operációs rendszer karbantartását. Példa arra, hogy miért nehezebb a genkernel kezelése, az sys-kernel/installkernel integrációjának a hiánya. Ez azt jelenti, hogy a felhasználó nem kapja meg ugyanazt az automatizálási szintet, mint a többi módszer esetében. Például az egységesített kernelképfájlokat manuálisan kell létrehozni a Genkernel használata esetében.
Azok a felhasználók, akik továbbra is a Genkernel használatát tervezik, tekintsék meg a Genkernel cikket további információkért.
Kernelmodulok
Elérhető kernelmodulok listázása
A hardver modulok kézi listázása opcionális. A udev a legtöbb esetben automatikusan betölti az összes észlelt hardver modult. Az automatikusan betöltődő modulok listázása azonban nem ártalmas. A modulok nem tölthetők be kétszer: vagy betöltődtek, vagy nem. Néha az egzotikus hardvereknek segítségre van szükségük a meghajtóik betöltéséhez.
Azok a modulok, amelyeket minden indításkor be kell tölteni, hozzáadhatók a /etc/modules-load.d/*.conf fájlokhoz, modulonként egy sor formátumban. Ha a modulokhoz további opciókra van szükség, akkor azokat a /etc/modprobe.d/*.conf fájlokban kell beállítani.
Az összes modul megtekintéséhez egy adott kernel verzióhoz, adja ki a következő find parancsot. Ne felejtse el helyettesíteni a "<kernel version>" részt a megfelelő kernel verzióval a kereséshez:
root #
find /lib/modules/<kernel version>/ -type f -iname '*.o' -or -iname '*.ko' | less
Különleges kernelmodulok kényszerített betöltése
Annak érdekében, hogy a kernel kényszerítve legyen, hogy betöltse a 3c59x.ko modult (ami egy konkrét 3Com hálózati kártya családnak a meghajtóprogramja), kérjük Önt, hogy szerkessze a /etc/modules-load.d/network.conf fájlt, és írja be a modul nevét.
root #
mkdir -p /etc/modules-load.d
root #
nano -w /etc/modules-load.d/network.conf
Vegye figyelembe, hogy a kernelmodulfájl .ko fájlkiterjesztésnek nincs jelentősége a betöltési mechanizmus szempontjából, és kimaradhat a konfigurációs fájlból:
/etc/modules-load.d/network.conf
Force loading 3c59x module3c59x
Folytassa a telepítést a Rendszer beállítása fejezettel.