Genkernel

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Genkernel and the translation is 100% complete.
Not to be confused with gentoolkit.


Resources
Article status
This article has some todo items:
  • Article must be updated for genkernel-4 in general
  • Add documentation for --boot-font feature
  • Add documentation for --bcache feature
  • Add documentation for gk.keep feature (including /etc/initramfs.mounts)
Warning
A genkernel karbantartása megszűnt. Az itt bemutatott dokumentáció lehet, hogy hiányos, és nem tükrözi a Gentoo eszköztárának jelenlegi állapotát. Azok a felhasználók, akik genkernel problémákba ütköznek, egy másik szoftver használatára lesznek felszólítva. Kérjük, tekintse meg a kézikönyv Terjesztési (Disztribúció) kernelek szakaszát egy támogatott alternatíváért.

A genkernel egy Gentoo által készített szoftvereszköz, amelyet a bináris futtatható kernel és bináris futtatható initramfs képfájlok létrehozási folyamatának automatizálására terveztek. Néhány általános jellemzője:

  • A kernel forráskódok beállítása.
  • A tömörített bináris kernelképfájl bzImage létrehozása és másolása a /boot könyvtárba.
  • Egy initramfs bináris képfájl létrehozása és másolása a /boot könyvtárba.
  • Szimbolikus linkek létrehozása a /boot könyvtárban.
  • Egyedi tartalmak hozzáadása az initramfs bináris képfájlhoz, például titkosítással kapcsolatos fájlok, indítóképernyőn megjelenő képek, extra modulok és egyebek.
  • A bootloader beállítása az újonnan létrehozott kernel és initramfs indításához.
Note
Az újabb UEFI rendszerek esetén a /boot helyett a /efi használatához tekintse meg a Changing the boot directory to /efi leírást.
Note
Gyakori tévhit, hogy a genkernel "automatikusan" létrehoz egy egyedi kernelbeállítást. A genkernel automatizálja a kernel létrehozási (felépítési) folyamatát és összeállítja a bináris initramfs képfájlt, de nem hoz létre egyedi kernelbeállítás fájlt. Ha nincs megadva kernelbeállítás, akkor a genkernel egy általános kernelbeállítás fájlt használ, amely általános célú kernelt eredményez, amely alkalmas mindennapi használatra (nagyméretű moduláris kernel árán).


Ugyanez igaz a genkernel initramfs képfájljára is: Elsődleges feladata, hogy csak az alapvető dolgokat hozza létre, amelyek szükségesek egy (blokk) eszköz felcsatolásához, amely tartalmazza a gyökérfájlrendszert, hogy a lehető leggyorsabban átadhassa az irányítást az igazi rendszernek.

Nem az a genkernel célja, hogy az összes elérhető modult betöltse, az összes elérhető eszközt elindítsa, további köteteket feloldjon, hálózatot indítson, vagy egyéb különleges dolgokat végezzen. Ezért ne felejtse el beállítani a normál indítási szolgáltatásokat, hogy a valódi rendszer be tudja fejezni az indítást, és elvégezhesse az összes fent említett feladatot.

Telepítés

USE jelölőzászlók

USE flags for sys-kernel/genkernel Gentoo automatic kernel building scripts

+firmware Prefer system firmware sys-kernel/linux-firmware over local copy.
ibm Add support for IBM ppc64 specific systems
systemd Enable use of systemd-specific libraries and features like socket activation or session tracking

Emerge

Indítsa el a genkernel telepítését:

root #emerge --ask sys-kernel/genkernel

Használat

A genkernel futtatásának az általános formája a következő:

root #genkernel [options ...] action

Opciók

A genkernel tényleges működése számos különféle beállítástól függ, amelyek többsége a /etc/genkernel.conf fájlban állítható be vagy törölhető, vagy a genkernel parancs segítségével minden meghívás során megadható. A parancssoron keresztül megadott opciók elsőbbséget élveznek a /etc/genkernel.conf fájlban meghatározott opciókkal szemben. A beállításfájl rendkívül jól dokumentált, azonban a leggyakrabban használt opciók közül néhányat ebben a cikkben tárgyalunk. A cél az, hogy az olvasó megismerje a gyakori genkernel meghívásokat. A teljesebb magyarázatok érdekében tekintse meg a /etc/genkernel.conf fájlban található megjegyzéseket vagy a man genkernel kimenetét.

Note
Néhány opció rendelkezik egy változattal, amely ellentétes működést vált ki, és --[no-]option_name formában van feltüntetve, az ellentétes hatás pedig szögletes zárójelben jelenik meg, az alábbi példában:
CODE Egy bizonyos opció engedélyezése vagy letiltása
--[no-]menuconfig : Activates [deactivates] ...
Azoknál az opcióknál, amelyeknek csak negatív hatásuk van, a no- és annak hatása (amely ebben az esetben nem opcionális) szögletes zárójelek nélkül van feltüntetve.

Opciók hatása a felhasználói interakcióra

Az alább felsorolt beállítási lehetőségek segítenek a felhasználónak eldönteni, hogy miként lépjen kapcsolatba a beállítási folyamattal. A felhasználók még azt is eldönthetik, hogy a folyamat során létrehozott beállításfájlt el kell-e menteni. Az alábbiak elsődleges beállítási lehetőségeknek számítanak:

--config=/path/to/genkernel.conf
A genkernel beállításfájljára mutat, amelyet használni kell (alapértelmezés szerint: /etc/genkernel.conf).
--kernel-config=/path/to/kernel.config
A használni kívánt kernelbeállítás fájlra mutat. Az aktuálisan futó kernel beállításának újrahasználatához megadható a /proc/config.gz, ha létezik. Alapértelmezés szerint a genkernel az előzőleg létrehozott ugyanazon kernelverzió beállítását használja, vagy ha nincs előző beállítás, akkor egy alapértelmezett kernelbeállítást használ. A default speciális érték használatával kényszeríthető a genkernel általános kernelbeállításának a használata. Ez a hely nem lehet /usr/src/linux/.config, mivel elveszhet, vagy hibákat okozhat.
--[no-]menuconfig
Aktiválja (vagy deaktiválja) a make menuconfig parancsot (amely egy interaktív beállításmenüt hív elő), mielőtt a bináris kernelképfájl létrehozása megkezdődne.
--gconfig
Egy kernelbeállítási eszközt biztosít, amely a GTK könyvtáraktól függ. Az előnye ennek az opciónak, hogy a legtöbb felhasználó könnyebbnek és érthetőbbnek találja a kernel beállítását ezen eszköz használatával, mivel az az X-ablakrendszerre támaszkodik. Az hátránya ennek az opciónak, hogy az X-ablakrendszer szükséges a használatához, tehát parancssorban nem működik.
--xconfig
Egy kernelbeállítási eszközt biztosít, amely a QT könyvtáraktól függ. Az előnye ennek az opciónak, hogy a legtöbb felhasználó könnyebbnek és érthetőbbnek találja a kernel beállítását ezen eszköz használatával, mivel az az X-ablakrendszerre támaszkodik. Az hátránya ennek az opciónak, hogy az X-ablakrendszer szükséges a használatához, tehát parancssorban nem működik.
--[no-]save-config
Elmenti [vagy nem menti el] a kernel beállítását egy fájlba a /etc/kernels könyvtárban későbbi használatra.
--kernel-append-localversion=-mycfg42
Lehetővé teszi a kernel LOCALVERSION értékének módosítását, amely hatással lesz a kernel és az initramfs fájlnevére a /boot könyvtárban, valamint a modulokra a /lib/modules/ könyvtárban. Ez különösen hasznos egy új, önálló revízió létrehozásához, saját kernel binárissal, initramfs fájlal és modulokkal. A fentebbi példa alapján, a =sys-kernel/gentoo-sources-5.4.2 esetén a amd64 architektúrával és alapértelmezett beállításokkal a következőket hozná létre: /boot/vmlinuz-5.4.2-gentoo-x86_64-mycfg42, /boot/initramfs-5.4.2-gentoo-x86_64-mycfg42.img és /lib/modules/4.19.88-gentoo-x86_64-mycfg42.

Opciók hatása a létrejövő rendszerre

Az itt felsorolt beállítási lehetőségek meghatározzák, hogy a létrejövő bináris kernelképfájlban és initrd/initramfs bináris képfájlban mely funkciók lesznek engedélyezve vagy tiltva.

--[no-]splash
Aktiválja (vagy deaktiválja) a Fbsplash framebuffer splash támogatását a genkernel által létrehozott initrd bináris képfájlon. Az fbsplash által használt alapértelmezett téma felülbírálásához használja a --splash=PreferredTheme opciót (ahol a PreferredTheme a /etc/splash könyvtáron belüli egyik könyvtár neve).
--splash-res=PreferredResolution
Ez az opció lehetővé teszi annak kiválasztását, hogy mely indítóképernyő-felbontások legyenek támogatottak az initrd bináris képfájlban a rendszer indításakor. Ez két okból hasznos. Először is, lehetőség nyílik csak a rendszerhez kapcsolódó indítóképernyő-felbontások kiválasztására. Másodszor, elkerülhető az initrd által igényelt lemezterület felesleges növekedése (mivel az initrd fájlnak nem kell támogatnia a rendszer beállításához nem releváns felbontásokat). Azonban ezt az opciót célszerű elhagyni, ha a kernelt telepítő CD lemezhez állítják össze, mivel ez lehetővé teszi az indítóképernyő minden lehetséges felbontásának támogatását.
--do-keymap-auto
Kényszeríti a billentyűzetkiosztás kiválasztását az indítási folyamat során.
--keymap
Aktiválja a billentyűzetkiosztás kiválasztását indításkor (például LUKS konténer jelszó megadásához). A kívánt billentyűzetkiosztás az indítási opciókban adható meg keymap értékeként (a billentyűzetkiosztás fájl neve ".map" nélkül). Az elérhető billentyűzetkiosztási fájlok megtalálhatók a /usr/share/genkernel/defaults/keymaps/ könyvtárban.
Ha egy szükséges billentyűzetkiosztás nem érhető el a genkernelben, akkor lehetőség van az egyik meglévő sys-apps/kbd billentyűzetkiosztás (ami a /usr/share/genkernel/defaults/keymaps/ elérhető) konvertálására a loadkeys --bkeymap parancs segítségével. További részletekért tekintse meg a loadkeys man súgóját.
--lvm
Tartalmazza az adathordozó támogatást a Logical Volume Management (LVM2) számára statikus bináris fájlok segítségével, ha az elérhető a rendszeren. Ha nem állnak rendelkezésre releváns (statikus) LVM2 bináris fájlok, akkor azok le lesznek fordítva. Az opció engedélyezése előtt győződjön meg arról, hogy telepítve van a sys-fs/lvm2 szoftvercsomag az operációs rendszeren (emerge sys-fs/lvm2), majd tekintse át a Gentoo wiki LVM cikkét.
--dmraid
Tartalmazza a DMRAID támogatását, az eszközt, amely RAID leképezéseket hoz létre a kernel eszköz-leképezési alrendszer segítségével. A DMRAID felismeri, aktiválja, deaktiválja és megjeleníti a szoftver RAID készletek (például ATARAID) és a bennük található DOS partíciók tulajdonságait.
--luks
Tartalmazza a Linux Unified Key Setup vagy LUKS támogatását. Ez lehetővé teszi egy olyan adathordozó használatát, amelyet LUKS titkosított, és amely tartalmazza a root fájlrendszert. A bootloadernél a titkosított adathordozót állítsa be crypt_root értékeként, míg a root az a nem titkosított adathordozó lesz, amelyet a LUKS létrehoz (például: /dev/mapper/root lesz a felcsatolandó útvonal, és a helyes bootloader paraméterek sora így nézhet ki: GRUB_CMDLINE_LINUX="... crypt_root=UUID=<crypto_LUKS uuid> root=/dev/mapper/root ...").
--iscsi
iSCSI támogatást ad az initrd bináris képfájlhoz.
--multipath
Multipath támogatást ad az initrd bináris képfájlhoz.
--linuxrc=/path/to/the/linuxrc_file
Megad egy felhasználó által létrehozott linuxrc-t — egy olyan szkriptet, amely a kernel indítási szakaszában inicializálódik, az aktuális boot folyamat előtt. Egy alapértelmezett linuxrc szkript megtalálható a /usr/share/genkernel/ könyvtárban. Ez a szkript lehetővé teszi egy kis, modularizált kernel indítását, megpróbálja betölteni a rendszer számára szükséges legkevesebb mennyiségű illesztőprogramot (kernelmodulok formájában).
--cachedir=/path/to/alt/dir
Felülírja az alapértelmezett gyorsítótár helyét a kernel forráskódjának a bináris kódra történő fordítása közben.
--tmpdir=/path/to/new/tempdir
Megadja annak az ideiglenes könyvtárnak a helyét, amelyet a genkernel a kernel forráskódjának a fordítása közben használ.
--unionfs
Támogatást nyújt a Unification File System számára az initrd bináris képfájlon belül.
--mountboot
Érzékeli, hogy a /boot könyvtárat külön partícióra kell-e felcsatolni. Ellenőrzi az /etc/fstab szkriptet, hogy hogyan kell (ha szükséges) a boot partíciót a fájlrendszerre felcsatolni.
--microcode
Létrehoz egy korai cpio fájlt, amely Intel/AMD processzorok mikrokódját tartalmazza a Xen és a Linux korai mikrokód támogatásához.

Létrehozáshoz használt eszközök kiválasztására ható opciók

A következő opciókat a genkernel támogatja, és a bináris kernelképfájl létrehozása közben továbbítja a releváns alkalmazásoknak. Ezek az opciók hatással vannak az alacsony szintű kernelfordító eszközökre.

--kernel-cc=someCompiler
Meghatározza a kernel forráskódjának fordítási folyamatában használt fordítót.
--kernel-ld=someLinker
Meghatározza a kernel forráskódjának fordítási folyamatában használt linkert.
--kernel-as=someAssembler
Meghatározza a kernel forráskódjának fordítási folyamatában használt assembler programot.
--kernel-make=someMake
Meghatároz egy alternatívát a GNU make segédprogramhoz, amelyet a kernel forráskódjának a fordítása során használnak.
--utils-cc=someCompiler
Meghatározza a segédprogramok forráskódjának fordítása során használt fordítót.
--utils-ld=someLinker
Meghatározza a segédprogramok forráskódjának fordítása során használt linkert.
--utils-as=someAssembler
Meghatározza a segédprogramok forráskódjának fordítása során használt assembler programot.
--utils-make=someMake
Meghatároz egy alternatívát a GNU make segédprogramhoz, amelyet a segédprogramok forráskódjának fordítása során használnak.
--makeopts=-jX
Meghatározza a párhuzamos szálak számát, amelyeket a make segédprogram alkalmazhat a kernel (és segédprogramok) forráskódjának fordítása során. Az X változó egy szabadon választott szám, bár a leggyakoribb értékeket a rendszer által használt processzormagok számához egyet (1) hozzáadva kapjuk, vagy egyszerűen a rendszer processzormagjainak számát használjuk. Például egy egy processzormagos rendszer esetén a leggyakoribb opció értékek -j2 vagy -j1, két processzormagos rendszer esetén pedig -j3 vagy -j2 opciókat alkalmazunk stb. (Egy processzorral rendelkező rendszer, amely támogatja a Hyper-Threading™ (HT) technológiát, feltételezhetően 2 maggal rendelkezik, feltéve, hogy a Symmetric Multi-Processing (SMP) támogatás engedélyezve van a kernelben.)

Forráskód kódfordítási folyamatára ható opciók

A következő opciók általában a tényleges fordítás során lépnek érvénybe:

--kerneldir=/path/to/sources/
Megad egy alternatív kernelforráskód helyet, eltérően az alapértelmezett /usr/src/linux/ helytől.
--kernel-config=/path/to/config-file
Meghatározza, hogy mely kernelbeállítást kell használni. Alapértelmezés szerint a genkernel megállapítja a kernel verzióját, amelyet a --kerneldir jelöl meg, és megkeresi a kernelbeállítást (KV) a /etc/kernels/kernel-config-$KV helyen. Ha nem található kernelbeállítás, akkor a genkernel egy általános kernelbeállítást keres a /usr/share/genkernel/$ARCH helyen. Egy speciális default érték használható arra, hogy kényszerítse a genkernel általános kernelbeállításának a használatát.
Tip
Használja a --kernel-config=/proc/config.gz opciót egy új kernel létrehozásának a megkezdéséhez az aktuálisan futó kernel kernelbeállítása alapján.
Megjegyzés: Ez csak akkor működik, ha az aktuálisan aktív kernel CONFIG_IKCONFIG=y beállítással lett létrehozva, amely általában így van.
--module-prefix=/path/to/prefix-directory/
Meghatároz egy előtagot ahhoz a könyvtárhoz, ahová a kernelmodulok telepítve lesznek (alapértelmezett útvonal a /lib/modules könyvtár).
--[no-]clean
Aktiválja (vagy deaktiválja) a make clean parancsot a kernel forráskódjának a kódfordítása előtt. A make clean parancs eltávolítja az összes objektumfájlt és szoftverfüggőséget a kernel forrásfájlfájából.
--[no-]mrproper
Aktiválja (vagy deaktiválja) a make mrproper parancsot a kernel fordítása előtt. Az előzőleg említett make clean parancshoz hasonlóan a make mrproper eltávolítja az összes objektumfájlt és szoftverfüggőséget a kernel forrásfájlfájából. Azonban minden korábbi beállításfájl (a /path/to/sources/.config vagy a /path/to/sources/.config.old helyen) is törlésre kerül a kernel forrásfájlfájából. Ha nem kívánatos, hogy a kernel .config fájlja folyamatosan eltűnjön, akkor feltétlenül tiltsa le ezt az opciót!
--oldconfig
Kiadja a make oldconfig parancsot, amely megkísérli összegyűjteni a rendszer architektúrájának beállítási információit egy általános szkripttől a /usr/share/genkernel helyről. Ez egy nem interaktív folyamat, a felhasználótól nem fogad bemenetet. Továbbá, ha a --oldconfig opciót a --clean opcióval együtt használják, akkor az utóbbi opció érvénytelenítve lesz, és aktiválódik a --no-clean opció.
--[no-]module-rebuild
Futtatja, vagy nem futtatja az emerge @module-rebuild parancsot annak érdekében, hogy a kernel és a kernelmodulok elkészülte után külső modulokat hozzon létre. Ez az opció alapértelmezés szerint engedélyezve van.
--callback="echo hello"
Meghívja a megadott argumentumokat (jelen esetben echo hello), miután a kernel és a releváns kernelmodulok létrejönnek, de még az initramfs képfájl létrejötte előtt.
Note
A genkernel-4 előtt ezt a visszahívást külső modulok újbóli létrehozásának a kiváltására használták. A genkernel-4 óta egy dedikált parancssori paramétert, a --module-rebuild opciót vezették be. Részletek fentebb.
--[no-]install
Aktiválja (vagy deaktiválja) a make install parancsot, amely telepíti az új kernelképfájlt, beállításfájlt, initrd képfájlt és rendszerleképezést a boot partícióra. Minden lefordított modul is telepítésre kerül. Alapértelmezés szerint a genkernel megkísérli felcsatolni a /boot partíciót, ha az külön partíción van, mielőtt futtatná a telepítési parancsot.
--no-ramdisk-modules
Tartózkodik attól, hogy bármilyen kernelmodult másoljon a genkernel által létrehozott initrd képfájlra. Ez az opció kivételt képez a no- előtag szabálya alól. Ennek az előtagnak az elhagyása érvénytelen genkernel opciót eredményez.
--all-ramdisk-modules
Az összes elérhető kernelmodult lemásolja a genkernel által létrehozott initrd képfájlra.
--genzimage
Létrehozza az initrd képfájlt, a kernel képfájl előtt (ez a hack jelenleg csak PPC Pegasos rendszerekre vonatkozik).

Hibakeresési opciók

A kernel kódfordítási folyamat során használt hibakeresési opciók szabályozzák a jelentett információ mennyiségét, valamint az említett adatok bemutatását.

--loglevel=<0|1|2|3|4|5>
Szabályozza a genkernel által nyomtatott információk részletességi szintjét. A LOGLEVEL változó egy 0 és 5 közötti egész szám. A '0' szint minimális kimenetet jelent (=nincs kimenet), míg az '5' a lehető legtöbb információt biztosítja a genkernel tevékenységeiről a kernel kódfordítási és az initramfs képfájl létrehozási folyamat során.
Note
A genkernel alapértelmezés szerint mindig teljes kimenetet naplóz a /var/log/genkernel.log fájlba. A --loglevel csak a képernyőn megjelenő kimenetet szabályozza.
--logfile=/path/to/output_file
Naplófájl, ahová a genkernel alapértelmezés szerint kimenetet ír. Alapértelmezett érték: /var/log/genkernel.log.
--[no-]color
Aktiválja (vagy deaktiválja) a színes kimenetet.
--[no-]cleanup
Aktiválja (vagy deaktiválja) a teljes futás utáni takarítást hibakeresési célokra.

Műveletek

A parancssoron keresztül megadott művelet a genkernel [options …] action segítségével megadja, hogy a genkernel milyen műveletet hajtson végre. A következő műveletek támogatottak:

Művelet Leírás
all Létrehozza az összes szakaszt. Initrd bináris képfájlt, a bináris kernelképfájlt és a bináris kernelmodulokat.
bzImage Kizárólag a bináris kernelképfájlt hozza létre.
kernel Kizárólag a kernelképfájlt és a modulokat hozza létre.
initramfs Kizárólag az initramfs/ramdisk bináris képfájlt hozza létre.
ramdisk Kizárólag az initramfs/ramdisk bináris képfájlt hozza létre.

Beállítás

Kezdeti lépések

Bár több módja van a genkernel futtatásának, a legtöbb felhasználó számára ajánlott legkevésbé invazív megközelítést a genkernel all biztosítja. Ebben az esetben egy általános beállítást használnak, amely a legtöbb rendszerben jól működik. Mint korábban említettük, ez a megközelítés nem mentes a hátrányoktól, így az elkészített modulok többsége haszontalan az átlagfelhasználó számára, és növelheti a kódfordítási időt. Az alábbiakban bemutatjuk egy hatékonyabb megközelítést, amelyet bizonyos opciók root jogosultságú genkernel számára való átadásával érhetünk el:

root #genkernel --luks --no-install --no-clean --menuconfig all

A fenti művelet eredményeként a genkernel létrehoz egy kernelt, amely képes megnyitni LUKS és LUKS2 titkosított köteteket, lefordítja és beágyazza a cryptsetup szoftvert az initramfs bináris képfájlba (--luks), és mind a kernelképfájlt, mind az initramfs képfájlt manuálisan kell telepíteni (--no-install). A kernel forráskódfájlfájának előkészítése során a genkernel tartózkodik attól, hogy kitisztítson bármilyen előzetesen meglévő objektumfájlt a forráskódfájlban (--no-clean). Egy menü vezérelt kernel-beállító eszköz fog megjelenni, amely lehetővé teszi a felhasználó számára, hogy kiválassza, mely kernelmodulok jöjjenek létre a rendszer számára (--menuconfig).

Ha a --symlink opció meg van adva, akkor a --no-install opció --install opcióval történő helyettesítése lehetővé teszi a genkernel számára, hogy automatikusan telepítse az új kernelt a /boot könyvtárba, és szimbolikus linkeket hozzon létre. A --mountboot opció használatával a genkernel automatikusan felcsatolhatja a /boot partíciót, amennyiben ez szükséges.

Note
Ne felejtse el, hogy a /etc/genkernel.conf fájlt a genkernel parancs induláskor beolvassa, és minden ott meghatározott opció alkalmazásra kerül, kivéve, ha egy parancssori opció elsőbbséget élvez vele szemben.

Boot könyvtár megváltoztatása /efi könyvtárra

Most ajánlott az UEFI rendszer boot partíciót (ESP) a /efi alá csatolni a /boot helyett.

Alapértelmezés szerint a kernel a /boot könyvtárba kerül, amely bizonyos beállításokban korábban az ESP volt, de most a gyökérpartíción található. Az okok, amelyek miatt érdemes a kernelt a /efi könyvtárba írni, a következők lehetnek:

  • A Secure Boot egy előre megadott ESP kernel útvonalat vár el.
  • A GRUB2 függetlenné tétele a gyökérpartíciótól a stabilitás vagy biztonság érdekében.
  • A GRUB2 nem támogatja a gyökérfájlrendszert (bcachefs).
  • A grub-mkconfig által nem generált grub.cfg használata.


A genkernel a /efi helyre való mutatásához adja hozzá a --bootdir=/efi opciót a genkernel parancshoz, vagy a BOOTDIR="/efi" beállítást a /etc/genkernel.conf fájlhoz.

FILE /etc/genkernel.confBoot könyvtár megváltoztatása /efi könyvtárra az /etc/genkernel.conf fájlban
# Állítsa be a boot könyvtárat. Alapértelmezett érték a /boot könyvtár.
BOOTDIR="/efi"

Kernel módosítása

Az első lépés az, hogy engedélyezze a make menuconfig indítását az /etc/genkernel.conf fájlban:

FILE /etc/genkernel.confBeállításmenü használatának kényszerítése az /etc/genkernel.conf fájlban
# Fut-e a 'make menuconfig', mielőtt lefordítja ezt a kernelt?"
MENUCONFIG="yes"

Fájlkezelés

A genkernel használata során a felhasználónak tisztában kell lennie a kernel beállítással és a bináris kernelképfájlok kezelésével kapcsolatos néhány szemponttal, valamint azzal, hogy miként kezeli a rendszer a kernelforráskódokat.

Forráskód fájlok

A emerge -u gentoo-sources parancs kiadása után egy könyvtár jön létre a /usr/src/ alatt az új források tárolására. Általában az aktív kernel forráskönyvtárra a /usr/src/linux szimbolikus link mutat.

A /usr/src könyvtár például így nézhet ki:

user $ls -l /usr/src
total 24
drwxr-xr-x  6 root root 4096 Dec 16 00:56 .
drwxr-xr-x 12 root root 4096 Dec 15 12:42 ..
-rw-r--r--  1 root root    0 Mar 19  2015 .keep
lrwxrwxrwx  1 root root   22 Dec 16 00:56 linux -> linux-5.3.14-gentoo-r1
drwxr-xr-x 26 root root 4096 Nov 24 03:33 linux-4.19.85-gentoo
drwxr-xr-x 27 root root 4096 Dec  9 15:10 linux-4.19.88-gentoo
drwxr-xr-x 27 root root 4096 Dec 16 00:51 linux-4.19.89-gentoo
drwxr-xr-x 25 root root 4096 Dec 16 00:58 linux-5.3.14-gentoo-r1

A /usr/src/linux szimbolikus linket többféleképpen lehet megváltoztatni.

  • Ha a symlink USE jelölőzászló engedélyezve van, akkor a /usr/src/linux szimbolikus link automatikusan frissül, hogy az újonnan letöltött forráskódokra mutasson.
  • Ha a symlink USE jelölőzászló nincs engedélyezve, akkor a felhasználó megváltoztathatja a szimbolikus link célpontját az eselect kernel list, majd az eselect kernel set parancs használatával.

A genkernel mindig (kizárólagosan) a /usr/src/linux szimbolikus link által megadott forráskódokat fogja használni.

Kernel beállításfájl

Ha már lefutott egy kernel forráskód fordítás az aktív kernel forráskódokkal, akkor előfordulhat, hogy az /etc/kernels könyvtárban található egy fájl, amely tartalmazza azt a kernelbeállítást, amelyet az utolsó kernel bzImage létrehozásakor alkalmaztak. Ez a fájl például a következő néven szerepelhet: kernel-config-5.3.14-gentoo-r1-x86_64-wifitest2, ahol a x86_64 helyére a rendszer architektúrája kerülhet, a 5.3.14-gentoo-r1 helyére a használt források szoftvercsomag/verziója, a wifitest2 helyére pedig a LOCALVERSION felhasználó által hozzáfűzött értéke kerülhet.

Ez a kernel-config-5.3.14-gentoo-r1-x86_64-wifitest2 fájl szolgál kiinduló beállításként a  genkernel --menuconfig all futtatásakor.

Ha először futtatja a genkernel szoftvert az új kernel forráskódokkal, vagy ha az előző eredményt nem mentette el, akkor ezt a fájlt egy alapértelmezett beállításfájl helyettesíti, amely a usr/share/genkernel/arch/x86_64/generated-config könyvtárban található, ahol az x86_64 helyébe az aktuális architektúra lép.

Note
Az alapértelmezett beállításfájl elérési útja módosítható a DEFAULT_KERNEL_CONFIG változó beállításával az /etc/genkernel.conf fájlban.
Lefordított beállítás mentése

Ha a --save-config genkernel opció aktiválva van, akár a parancssorból, akár az /etc/genkernel.conf fájlban, akkor a lefordított kernel beállítás elmentésre kerül (a fent megadott néven) az /etc/kernels könyvtárba. Ugyanakkor a beállítás mentésre kerül a .config fájlba az /usr/src/linux könyvtárban, de ezt a fájlt nem lesz újra felhasználva a következő genkernel all futtatásakor.

Warning
Fontos tudni, hogy minden alkalommal, amikor a genkernel futtatásra kerül a --save-config opcióval, az /etc/kernels könyvtárban lévő beállításfájl felülíródik. Ezért erősen ajánlott ezt a fájlt egy új név alatt lemásolni mielőtt a genkernel futtatásra kerül, hogy megőrizhető legyen.
Kernel és az initramfs bináris képfájlok telepítése a /boot könyvtárba

A --install opció megadásával a genkernel parancs futtatásakor a genkernel telepíti a bináris kernelképfájlt és az bináris initramfs képfájlt a /boot könyvtárba. Az --install kényelmes használatához állítsa be a következőt az /etc/genkernel.conf fájlban:

FILE /etc/genkernel.confKernel és az initramfs automatikus mentésének beállítása
# BOOTDIR automatikus felcsatolása, ha az még nincs felcsatolva.
MOUNTBOOT="yes"
  
# Mentse el az új konfigurációt az /etc/kernels könyvtárba
# a fordítás sikeres befejezése után.
SAVE_CONFIG="yes"
  
# Készítsen szimbolikus linkeket a BOOTDIR-ben automatikusan.
SYMLINK="yes"
  
# Új kernel hozzáadása a grub bootloaderhez:
# Lehetséges értékek: empty/"no", "grub", "grub2"
BOOTLOADER="grub2"
  • Az első paraméter önmagáért beszél.
  • A második paraméter azt mondja meg a genkernel számára, hogy mentse el a lefordított kernelbeállítást az /etc/kernels könyvtárba.
  • Az utolsó két opció arra utasítja a genkernel szoftvert, hogy automatikusan frissítse a grub beállítását. Gyakorlatban a következők történnek:
    • Ha egy előző bináris kernelképfájl ugyanazzal a névvel már létezik, akkor a neve kiegészül a .old utótaggal. Ezzel egyidőben automatikusan létrejön egy kernel.old szimbolikus link, amely erre a régi kernel bináris képfájlra mutat.
    • Az új bináris kernelképfájl a /boot könyvtárban átveszi bármelyik, ugyanazzal a névvel rendelkező bináris kernelképfájl helyét. Ha ez az első alkalom, hogy egy kernel lefordításra kerül, akkor automatikusan létrejön egy szimbolikus link, amely az új bináris kernelképfájlra mutat.

A genkernel --menuconfig all futtatása után a /boot könyvtár például így nézhet ki:

user $ls -al /boot
total 69388
lrwxrwxrwx 1 root root      44 Dec 16 00:58 System.map -> System.map-5.3.14-gentoo-r1-x86_64-wifitest2
-rw-r--r-- 1 root root 3465443 Dec  9 15:05 System.map-4.19.88-gentoo-x86_64
-rw-r--r-- 1 root root 3465554 Dec 16 00:45 System.map-4.19.89-gentoo-x86_64
-rw-r--r-- 1 root root 3645309 Dec 15 16:07 System.map-5.3.14-gentoo-r1-x86_64
-rw-r--r-- 1 root root 3645309 Dec 15 16:07 System.map-5.3.14-gentoo-r1-x86_64.old
-rw-r--r-- 1 root root 3645309 Dec 16 00:58 System.map-5.3.14-gentoo-r1-x86_64-wifitest2
drwxr-xr-x 2 root root    4096 Mar 21  2015 efi
drwxr-xr-x 6 root root    4096 Dec 16 01:02 grub
lrwxrwxrwx 1 root root      47 Dec 16 01:02 initramfs -> initramfs-5.3.14-gentoo-r1-x86_64-wifitest2.img
-rw-r--r-- 1 root root 3631084 Dec  9 15:34 initramfs-4.19.88-gentoo-x86_64.img
-rw-r--r-- 1 root root 3637148 Dec 16 00:54 initramfs-4.19.89-gentoo-x86_64.img
-rw-r--r-- 1 root root 3670176 Dec 15 17:41 initramfs-5.3.14-gentoo-r1-x86_64.img
-rw-r--r-- 1 root root 3669692 Dec 16 01:02 initramfs-5.3.14-gentoo-r1-x86_64-wifitest2.img
-rw-r--r-- 1 root root  168960 Nov 16 19:10 intel-uc.img
lrwxrwxrwx 1 root root      41 Dec 16 00:58 kernel -> vmlinuz-5.3.14-gentoo-r1-x86_64-wifitest2
-rw-r--r-- 1 root root 7509552 Dec  9 15:05 vmlinuz-4.19.88-gentoo-x86_64
-rw-r--r-- 1 root root 7509552 Dec 16 00:45 vmlinuz-4.19.89-gentoo-x86_64
-rw-r--r-- 1 root root 7784496 Dec 15 16:07 vmlinuz-5.3.14-gentoo-r1-x86_64
-rw-r--r-- 1 root root 7784496 Dec 15 16:07 vmlinuz-5.3.14-gentoo-r1-x86_64.old
-rw-r--r-- 1 root root 7784496 Dec 16 00:58 vmlinuz-5.3.14-gentoo-r1-x86_64-wifitest2

Rendszerbetöltő (bootloader) beállítása

extlinux

TODO

GRUB Legacy
Warning
A következő szöveg a GRUB Legacy bootloaderről szól, amelyet 2019 februárjában eltávolítottak a Gentoo-ból. Ha csak lehetséges akkor kérjük, hogy migráljon a GRUB2 bootloaderre a lehető leghamarabb.

A bootloader beállításában bemutatott szimbolikus linkek használhatók arra, hogy még ha az új bináris kernelképfájl nem is indítható, akkor is a felhasználó még mindig elindíthatja az operációs rendszert a régi bináris kernelképfájl segítségével.

Annak érdekében, hogy a genkernel által biztosított kernel és initrd megfelelően működjön, adja meg a minimum információkat a rendszerbetöltő (bootloader) beállításfájljában:

  • Adja hozzá a root=/dev/sdaN paramétert a kernelképfájlhoz továbbított kernelparaméterekhez, ahol a /dev/sdaN az gyökérpartícióra (root partícióra) mutat (az N az adott partíció számát jelöli, ha létezik partíció).
  • Ha használ splash-t, akkor adjon hozzá egy megfelelő módvonalat, például vga=0x317 a kernelhez továbbított paraméterekhez, és szintén adja hozzá a splash=verbose vagy splash=silent lehetőséget attól függően, hogy mennyi részletességet szeretne az boot folyamat során.
  • Adja hozzá az initrd információkat a bootloader igénye szerint. A részletekről, hogy miként teheti initrd-kompatibilissé a bootloadert, tekintse meg a Gentoo kézikönyv Bootloader beállítása fejezetét.

Íme, így nézhet ki a grub.conf fájl.

FILE /boot/grub/grub.confPélda a grub.conf fájlra
# This is a sample grub.conf for use with Genkernel, per the Gentoo handbook 
# http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=1&chap=10#doc_chap2
# When not using Genkernel, see the handbook.
# Alternatively, see grub.conf.sample in the GRUB documentation.
  
default 0 
timeout 5
splashimage=(hd1,0)/boot/grub/splash.xpm.gz 
   
title Gentoo Linux 
root (hd0,6) 
kernel /boot/kernel initrd=/dev/ram0 root=/dev/sda7 rootfstype=ext4  
initrd /boot/initramfs
  
title Gentoo Linux old kernel 
root (hd0,6) 
kernel /boot/kernel.old initrd=/dev/ram0 root=/dev/sda7 rootfstype=ext4 
initrd /boot/initramfs.old
GRUB

TODO

systemd-boot

TODO

Munkafájlok megőrzése

A genkernel alkalmazás automatikusan menti a fájlokhoz végzett új módosításokat. Ha a korábbi módosításokat meg kell őrizni, akkor a következő lépéseket kell elvégezni.

  • Az első megőrzendő fájl a kernel beállításfájl, amely a /etc/kernels/ elérési útvonalon található. Ha a forrás nem változott meg a kernel újrafordítása előtt, akkor a korábban használt név lesz alkalmazni ehhez a fájlhoz. Ezért az előző beállításfájl másik néven történő másolása segít megőrizni az információkat, miközben a fájl új beállítási kiindulópontjaként is elérhető marad.
  • A második fontos dolog a már bootolható bináris kernelképfájl és bináris initramfs képfájlok megőrzése. Ennek megvalósítása a környezettől függ:
  1. Ha az utolsó lefordított kernel bootolható, akkor a genkernel futtatásakor ez a kernel (és hasonlóan az initramfs) képfájl át lesz nevezve vmlinuz-$KV.old névre, és létrejön egy új vmlinux-$KV bináris képfájl. Ez azt jelenti, hogy még akkor is, ha az új kernel nem bootolható, akkor is a felhasználók mindig képesek lesznek a régi kernel bootolására.
  2. Ha az utolsó lefordított kernel nem bootolható, és a forráskódok nem változtak meg azóta, hogy a felhasználó egy bootolható kerneltképfájlt elkészített, akkor a genkernel futtatása előtt először törölje az új kernelképfájlt, és távolítsa el a .old utótagot az utolsó bootolható bináris kernelképfájl nevéből. Enélkül, ha az újonnan fordított kernelképfájl másodjára sem bootolható, akkor a bootolható vmlinuz-$KV.old fájl törlésre kerül a nem bootolható vmlinuz-$KV képfájl átnevezése miatt, ami a felhasználónak egy bootolhatatlan rendszert eredményezhet. Ugyanezt az elvet alkalmazza az initramfs képfájl esetében is.
Note
A genkernel-4 óta ajánlott új, független verziókat létrehozni, mindegyikhez saját bináris kernelképfájllal használva, bináris initramfs képfájllal és a /lib/modules könyvtárban telepített kernelmodulokkal a genkernel --kernel-append-localversion=-my-new-revision all parancs használatával.

Korábbi kernelbeállítás használata a forráskódok módosítása közben

A korábbi beállítás a /etc/genkernel.conf fájlban található MENUCONFIG változón keresztül használható az alábbiak szerint:

FILE /etc/genkernel.confA make menuconfig beállítása
# Futtassa a 'make menuconfig' parancsot a kernel kódfordítása előtt.
MENUCONFIG="yes"
Note
Nincs szükség manuálisan futtatni a make oldconfig parancsot a genkernel használatakor, még akkor sem, ha a forráskódok megváltoztak. Ennek oka, hogy a make menuconfig megpróbálja a lehető legnagyobb mértékben betölteni az előző beállítást a menübe. Mindazonáltal ajánlott gondosan áttekinteni minden lehetőséget és az új szakaszokat.

Annak ellenőrzése, hogy az initramfs tartalmazza-e a szükséges modulokat/eszközöket az indítás előtt

Az bootolás előtt érdemes lehet ellenőrizni, hogy az initramfs bináris képfájl tartalmazza-e a szükséges eszközöket és modulokat. Például, ha távoli feloldási képességeket kíván használni egy képernyő nélküli operációs rendszeren a LUKS segítségével, akkor győződjön meg arról, hogy a hálózati interfészkártya, a dropbear és a cryptsetup kernelmoduljai bekerültek a bináris képfájlba.

Az lsinitrd használata

A genkernel-4 óta a létrehozott initramfs bináris képfájlok feldolgozhatóak a sys-kernel/dracut szoftvercsomagból származó lsinitrd parancs segítségével:

user $lsinitrd /boot/initramfs-5.3.14-gentoo-r1-x86_64-wifitest2.img
Image: /boot/initramfs-5.3.14-gentoo-r1-x86_64-wifitest2.img: 4,5M
========================================================================
Version: Genkernel 4.0.1 (2019-12-16 00:48:10 UTC)
 
Arguments: --boot-font=none --keymap --compress-initramfs --no-microcode-initramfs --ramdisk-modules --busybox --no-btrfs --no-iscsi --no-multipath --no-dmraid --mdadm --lvm --no-unionfs --no-zfs --no-splash --no-strace --no-gpg --luks --no-firmware --firmware-dir=/lib/firmware --ssh --no-e2fsprogs --no-xfsprogs
 
dracut modules:
========================================================================
drwxr-xr-x  16 root     root            0  Dec 16 01:49 .
drwxr-xr-x   2 root     root            0  Dec 16 01:49 bin
lrwxrwxrwx   1 root     root            7  Dec 16 01:49 bin/ash -> busybox
lrwxrwxrwx   1 root     root            7  Dec 16 01:49 bin/[ -> busybox
-rwxr-xr-x   1 root     root      2351376  Dec 16 01:49 bin/busybox
lrwxrwxrwx   1 root     root            7  Dec 16 01:49 bin/cat -> busybox
lrwxrwxrwx   1 root     root            7  Dec 16 01:49 bin/cut -> busybox
lrwxrwxrwx   1 root     root            7  Dec 16 01:49 bin/echo -> busybox
lrwxrwxrwx   1 root     root            7  Dec 16 01:49 bin/mknod -> busybox
lrwxrwxrwx   1 root     root            7  Dec 16 01:49 bin/mount -> busybox
lrwxrwxrwx   1 root     root            7  Dec 16 01:49 bin/sh -> busybox
lrwxrwxrwx   1 root     root            7  Dec 16 01:49 bin/uname -> busybox
drwxr-xr-x   2 root     root            0  Dec 16 01:49 dev
drwxr-xr-x   8 root     root            0  Dec 16 01:49 etc
-rw-r--r--   1 root     root           24  Dec 16 01:49 etc/build_date
-rw-r--r--   1 root     root           16  Dec 16 01:49 etc/build_id
drwxr-xr-x   2 root     root            0  Dec 16 01:49 etc/dropbear
-rw-------   1 root     root          140  Dec 16 01:49 etc/dropbear/dropbear_ecdsa_host_key
-rw-------   1 root     root          806  Dec 16 01:49 etc/dropbear/dropbear_rsa_host_key
prw-r--r--   1 root     root            0  Dec 16 01:49 etc/dropbear/fifo_root
prw-r--r--   1 root     root            0  Dec 16 01:49 etc/dropbear/fifo_swap
-rw-r--r--   1 root     root           97  Dec 16 01:49 etc/fstab
-rw-r--r--   1 root     root           14  Dec 16 01:49 etc/group
-rw-r--r--   1 root     root         3742  Dec 16 01:49 etc/initrd.defaults
-rw-r--r--   1 root     root        69232  Dec 16 01:49 etc/initrd.scripts
-rw-r--r--   1 root     root          441  Dec 16 01:49 etc/ld.so.cache
-rw-r--r--   1 root     root           78  Dec 16 01:49 etc/ld.so.conf
drwxr-xr-x   2 root     root            0  Dec 16 01:49 etc/ld.so.conf.d
-rw-r--r--   1 root     root           81  Dec 16 01:49 etc/ld.so.conf.d/05gcc-x86_64-pc-linux-gnu.conf
-rw-r--r--   1 root     root         2298  Dec 16 01:49 etc/localtime
drwxr-xr-x   3 root     root            0  Dec 16 01:49 etc/lvm
drwxr-xr-x   2 root     root            0  Dec 16 01:49 etc/lvm/cache
-rw-r--r--   1 root     root        95231  Dec 16 01:49 etc/lvm/lvm.conf
-rw-r--r--   1 root     root         2882  Dec 16 01:49 etc/mdadm.conf
drwxr-xr-x   3 root     root            0  Dec 16 01:49 etc/mdev
-rw-r--r--   1 root     root         1172  Dec 16 01:49 etc/mdev.conf
drwxr-xr-x   2 root     root            0  Dec 16 01:49 etc/mdev/helpers
-rwxr-xr-x   1 root     root          666  Dec 16 01:49 etc/mdev/helpers/nvme
-rwxr-xr-x   1 root     root         1295  Dec 16 01:49 etc/mdev/helpers/storage-device
drwxr-xr-x   2 root     root            0  Dec 16 01:49 etc/modprobe.d
-rw-r--r--   1 root     root         1186  Dec 16 01:49 etc/modprobe.d/aliases.conf
-rw-r--r--   1 root     root          122  Dec 16 01:49 etc/modprobe.d/i386.conf
drwxr-xr-x   2 root     root            0  Dec 16 01:49 etc/modules
-rw-r--r--   1 root     root           24  Dec 16 01:49 etc/modules/ataraid
-rw-r--r--   1 root     root           21  Dec 16 01:49 etc/modules/block
-rw-r--r--   1 root     root          180  Dec 16 01:49 etc/modules/crypto
-rw-r--r--   1 root     root           26  Dec 16 01:49 etc/modules/dmraid
-rw-r--r--   1 root     root           23  Dec 16 01:49 etc/modules/firewire
-rw-r--r--   1 root     root          123  Dec 16 01:49 etc/modules/fs
-rw-r--r--   1 root     root           86  Dec 16 01:49 etc/modules/hyperv
-rw-r--r--   1 root     root           40  Dec 16 01:49 etc/modules/iscsi
-rw-r--r--   1 root     root          437  Dec 16 01:49 etc/modules/lvm
-rw-r--r--   1 root     root          194  Dec 16 01:49 etc/modules/mdadm
-rw-r--r--   1 root     root           75  Dec 16 01:49 etc/modules/multipath
-rw-r--r--   1 root     root          214  Dec 16 01:49 etc/modules/net
-rw-r--r--   1 root     root           56  Dec 16 01:49 etc/modules/nvme
-rw-r--r--   1 root     root          519  Dec 16 01:49 etc/modules/pata
-rw-r--r--   1 root     root           83  Dec 16 01:49 etc/modules/pcmcia
-rw-r--r--   1 root     root          158  Dec 16 01:49 etc/modules/sata
-rw-r--r--   1 root     root          523  Dec 16 01:49 etc/modules/scsi
-rw-r--r--   1 root     root          350  Dec 16 01:49 etc/modules/usb
-rw-r--r--   1 root     root          133  Dec 16 01:49 etc/modules/virtio
-rw-r--r--   1 root     root           15  Dec 16 01:49 etc/modules/waitscan
-rw-r--r--   1 root     root           47  Dec 16 01:49 etc/passwd
-rw-r-----   1 root     root           22  Dec 16 01:49 etc/shadow
-rw-r--r--   1 root     root           25  Dec 16 01:49 etc/shells
-rwxr-xr-x   1 root     root        32331  Dec 16 01:49 init
drwxr-xr-x   2 root     root            0  Dec 16 01:49 .initrd
drwxr-xr-x   6 root     root            0  Dec 16 01:49 lib
lrwxrwxrwx   1 root     root            3  Dec 16 01:49 lib32 -> lib
lrwxrwxrwx   1 root     root            3  Dec 16 01:49 lib64 -> lib
drwxr-xr-x   2 root     root            0  Dec 16 01:49 lib/console
drwxr-xr-x   2 root     root            0  Dec 16 01:49 lib/dracut
-rw-r--r--   1 root     root          312  Dec 16 01:49 lib/dracut/build-parameter.txt
-rw-r--r--   1 root     root           42  Dec 16 01:49 lib/dracut/dracut-gk-version.info
drwxr-xr-x   2 root     root            0  Dec 16 01:49 lib/keymaps
lrwxrwxrwx   1 root     root            9  Dec 16 01:49 lib/keymaps/10.map -> croat.map
lrwxrwxrwx   1 root     root            6  Dec 16 01:49 lib/keymaps/11.map -> cz.map
lrwxrwxrwx   1 root     root            6  Dec 16 01:49 lib/keymaps/12.map -> de.map
lrwxrwxrwx   1 root     root            6  Dec 16 01:49 lib/keymaps/13.map -> dk.map
lrwxrwxrwx   1 root     root           10  Dec 16 01:49 lib/keymaps/14.map -> dvorak.map
lrwxrwxrwx   1 root     root            6  Dec 16 01:49 lib/keymaps/15.map -> es.map
lrwxrwxrwx   1 root     root            6  Dec 16 01:49 lib/keymaps/16.map -> et.map
lrwxrwxrwx   1 root     root            6  Dec 16 01:49 lib/keymaps/17.map -> fi.map
lrwxrwxrwx   1 root     root            6  Dec 16 01:49 lib/keymaps/18.map -> fr.map
lrwxrwxrwx   1 root     root            6  Dec 16 01:49 lib/keymaps/19.map -> gr.map
lrwxrwxrwx   1 root     root           10  Dec 16 01:49 lib/keymaps/1.map -> azerty.map
lrwxrwxrwx   1 root     root            6  Dec 16 01:49 lib/keymaps/20.map -> hu.map
lrwxrwxrwx   1 root     root            6  Dec 16 01:49 lib/keymaps/21.map -> il.map
lrwxrwxrwx   1 root     root            6  Dec 16 01:49 lib/keymaps/22.map -> is.map
lrwxrwxrwx   1 root     root            6  Dec 16 01:49 lib/keymaps/23.map -> it.map
lrwxrwxrwx   1 root     root            6  Dec 16 01:49 lib/keymaps/24.map -> jp.map
lrwxrwxrwx   1 root     root            6  Dec 16 01:49 lib/keymaps/25.map -> la.map
lrwxrwxrwx   1 root     root            6  Dec 16 01:49 lib/keymaps/26.map -> lt.map
lrwxrwxrwx   1 root     root            6  Dec 16 01:49 lib/keymaps/27.map -> mk.map
lrwxrwxrwx   1 root     root            6  Dec 16 01:49 lib/keymaps/28.map -> nl.map
lrwxrwxrwx   1 root     root            6  Dec 16 01:49 lib/keymaps/29.map -> no.map
lrwxrwxrwx   1 root     root            6  Dec 16 01:49 lib/keymaps/2.map -> be.map
lrwxrwxrwx   1 root     root            6  Dec 16 01:49 lib/keymaps/30.map -> pl.map
lrwxrwxrwx   1 root     root            6  Dec 16 01:49 lib/keymaps/31.map -> pt.map
lrwxrwxrwx   1 root     root            6  Dec 16 01:49 lib/keymaps/32.map -> ro.map
lrwxrwxrwx   1 root     root            6  Dec 16 01:49 lib/keymaps/33.map -> ru.map
lrwxrwxrwx   1 root     root            6  Dec 16 01:49 lib/keymaps/34.map -> se.map
lrwxrwxrwx   1 root     root            6  Dec 16 01:49 lib/keymaps/35.map -> sf.map
lrwxrwxrwx   1 root     root            6  Dec 16 01:49 lib/keymaps/36.map -> sg.map
lrwxrwxrwx   1 root     root            8  Dec 16 01:49 lib/keymaps/37.map -> sk-y.map
lrwxrwxrwx   1 root     root            8  Dec 16 01:49 lib/keymaps/38.map -> sk-z.map
lrwxrwxrwx   1 root     root           11  Dec 16 01:49 lib/keymaps/39.map -> slovene.map
lrwxrwxrwx   1 root     root            8  Dec 16 01:49 lib/keymaps/3.map -> bepo.map
lrwxrwxrwx   1 root     root            7  Dec 16 01:49 lib/keymaps/40.map -> trf.map
lrwxrwxrwx   1 root     root            6  Dec 16 01:49 lib/keymaps/41.map -> ua.map
lrwxrwxrwx   1 root     root            6  Dec 16 01:49 lib/keymaps/42.map -> uk.map
lrwxrwxrwx   1 root     root            6  Dec 16 01:49 lib/keymaps/43.map -> us.map
lrwxrwxrwx   1 root     root           10  Dec 16 01:49 lib/keymaps/44.map -> wangbe.map
lrwxrwxrwx   1 root     root            6  Dec 16 01:49 lib/keymaps/4.map -> bg.map
lrwxrwxrwx   1 root     root            8  Dec 16 01:49 lib/keymaps/5.map -> br-a.map
lrwxrwxrwx   1 root     root            8  Dec 16 01:49 lib/keymaps/6.map -> br-l.map
lrwxrwxrwx   1 root     root            6  Dec 16 01:49 lib/keymaps/7.map -> by.map
lrwxrwxrwx   1 root     root            6  Dec 16 01:49 lib/keymaps/8.map -> cf.map
lrwxrwxrwx   1 root     root           11  Dec 16 01:49 lib/keymaps/9.map -> colemak.map
-rw-r--r--   1 root     root         2823  Dec 16 01:49 lib/keymaps/azerty.map
-rw-r--r--   1 root     root         2823  Dec 16 01:49 lib/keymaps/be.map
-rw-r--r--   1 root     root         2823  Dec 16 01:49 lib/keymaps/bepo.map
-rw-r--r--   1 root     root         2823  Dec 16 01:49 lib/keymaps/bg.map
-rw-r--r--   1 root     root         2823  Dec 16 01:49 lib/keymaps/br-a.map
-rw-r--r--   1 root     root         2823  Dec 16 01:49 lib/keymaps/br-l.map
-rw-r--r--   1 root     root         2823  Dec 16 01:49 lib/keymaps/by.map
-rw-r--r--   1 root     root         2823  Dec 16 01:49 lib/keymaps/cf.map
-rw-r--r--   1 root     root         2823  Dec 16 01:49 lib/keymaps/colemak.map
-rw-r--r--   1 root     root         2823  Dec 16 01:49 lib/keymaps/croat.map
-rw-r--r--   1 root     root         2823  Dec 16 01:49 lib/keymaps/cz.map
-rw-r--r--   1 root     root         2823  Dec 16 01:49 lib/keymaps/de.map
-rw-r--r--   1 root     root         2823  Dec 16 01:49 lib/keymaps/dk.map
-rw-r--r--   1 root     root         2823  Dec 16 01:49 lib/keymaps/dvorak.map
-rw-r--r--   1 root     root         2823  Dec 16 01:49 lib/keymaps/es.map
-rw-r--r--   1 root     root         2823  Dec 16 01:49 lib/keymaps/et.map
-rw-r--r--   1 root     root         2823  Dec 16 01:49 lib/keymaps/fi.map
-rw-r--r--   1 root     root         2823  Dec 16 01:49 lib/keymaps/fr.map
-rw-r--r--   1 root     root         2823  Dec 16 01:49 lib/keymaps/gr.map
-rw-r--r--   1 root     root         2823  Dec 16 01:49 lib/keymaps/hu.map
-rw-r--r--   1 root     root         2823  Dec 16 01:49 lib/keymaps/il.map
-rw-r--r--   1 root     root         2823  Dec 16 01:49 lib/keymaps/is.map
-rw-r--r--   1 root     root         2823  Dec 16 01:49 lib/keymaps/it.map
-rw-r--r--   1 root     root         2823  Dec 16 01:49 lib/keymaps/jp.map
-rw-r--r--   1 root     root          518  Dec 16 01:49 lib/keymaps/keymapList
-rw-r--r--   1 root     root         2823  Dec 16 01:49 lib/keymaps/la.map
-rw-r--r--   1 root     root         2823  Dec 16 01:49 lib/keymaps/lt.map
-rw-r--r--   1 root     root         2823  Dec 16 01:49 lib/keymaps/mk.map
-rw-r--r--   1 root     root         2823  Dec 16 01:49 lib/keymaps/nl.map
-rw-r--r--   1 root     root         2823  Dec 16 01:49 lib/keymaps/no.map
-rw-r--r--   1 root     root         2823  Dec 16 01:49 lib/keymaps/pl.map
-rw-r--r--   1 root     root         2823  Dec 16 01:49 lib/keymaps/pt.map
-rw-r--r--   1 root     root         2823  Dec 16 01:49 lib/keymaps/ro.map
-rw-r--r--   1 root     root         2823  Dec 16 01:49 lib/keymaps/ru.map
-rw-r--r--   1 root     root         2823  Dec 16 01:49 lib/keymaps/se.map
-rw-r--r--   1 root     root         2823  Dec 16 01:49 lib/keymaps/sf.map
-rw-r--r--   1 root     root         2823  Dec 16 01:49 lib/keymaps/sg.map
-rw-r--r--   1 root     root         2823  Dec 16 01:49 lib/keymaps/sk-y.map
-rw-r--r--   1 root     root         2823  Dec 16 01:49 lib/keymaps/sk-z.map
-rw-r--r--   1 root     root         2823  Dec 16 01:49 lib/keymaps/slovene.map
-rw-r--r--   1 root     root         2823  Dec 16 01:49 lib/keymaps/trf.map
-rw-r--r--   1 root     root         2823  Dec 16 01:49 lib/keymaps/ua.map
-rw-r--r--   1 root     root         2823  Dec 16 01:49 lib/keymaps/uk.map
-rw-r--r--   1 root     root         2823  Dec 16 01:49 lib/keymaps/us.map
-rw-r--r--   1 root     root         2823  Dec 16 01:49 lib/keymaps/wangbe.map
-rwxr-xr-x   1 root     root       169376  Dec 16 01:49 lib/ld-linux-x86-64.so.2
-rwxr-xr-x   1 root     root      1913648  Dec 16 01:49 lib/libc.so.6
-rwxr-xr-x   1 root     root        26800  Dec 16 01:49 lib/libnss_dns.so
lrwxrwxrwx   1 root     root           13  Dec 16 01:49 lib/libnss_dns.so.2 -> libnss_dns.so
-rwxr-xr-x   1 root     root        51536  Dec 16 01:49 lib/libnss_files.so
lrwxrwxrwx   1 root     root           15  Dec 16 01:49 lib/libnss_files.so.2 -> libnss_files.so
-rwxr-xr-x   1 root     root        88736  Dec 16 01:49 lib/libresolv.so.2
drwxr-xr-x   3 root     root            0  Dec 16 01:49 lib/modules
drwxr-xr-x   3 root     root            0  Dec 16 01:49 lib/modules/5.3.14-gentoo-r1-x86_64-wifitest2
drwxr-xr-x   5 root     root            0  Dec 16 01:49 lib/modules/5.3.14-gentoo-r1-x86_64-wifitest2/kernel
drwxr-xr-x   2 root     root            0  Dec 16 01:49 lib/modules/5.3.14-gentoo-r1-x86_64-wifitest2/kernel/crypto
-rw-r--r--   1 root     root         7152  Dec 16 01:49 lib/modules/5.3.14-gentoo-r1-x86_64-wifitest2/kernel/crypto/algif_rng.ko
drwxr-xr-x   6 root     root            0  Dec 16 01:49 lib/modules/5.3.14-gentoo-r1-x86_64-wifitest2/kernel/drivers
drwxr-xr-x   3 root     root            0  Dec 16 01:49 lib/modules/5.3.14-gentoo-r1-x86_64-wifitest2/kernel/drivers/hid
drwxr-xr-x   2 root     root            0  Dec 16 01:49 lib/modules/5.3.14-gentoo-r1-x86_64-wifitest2/kernel/drivers/hid/usbhid
-rw-r--r--   1 root     root        66448  Dec 16 01:49 lib/modules/5.3.14-gentoo-r1-x86_64-wifitest2/kernel/drivers/hid/usbhid/usbhid.ko
drwxr-xr-x   2 root     root            0  Dec 16 01:49 lib/modules/5.3.14-gentoo-r1-x86_64-wifitest2/kernel/drivers/md
-rw-r--r--   1 root     root        19024  Dec 16 01:49 lib/modules/5.3.14-gentoo-r1-x86_64-wifitest2/kernel/drivers/md/dm-log.ko
-rw-r--r--   1 root     root        27256  Dec 16 01:49 lib/modules/5.3.14-gentoo-r1-x86_64-wifitest2/kernel/drivers/md/dm-mirror.ko
-rw-r--r--   1 root     root        49200  Dec 16 01:49 lib/modules/5.3.14-gentoo-r1-x86_64-wifitest2/kernel/drivers/md/dm-raid.ko
-rw-r--r--   1 root     root        16536  Dec 16 01:49 lib/modules/5.3.14-gentoo-r1-x86_64-wifitest2/kernel/drivers/md/dm-region-hash.ko
drwxr-xr-x   3 root     root            0  Dec 16 01:49 lib/modules/5.3.14-gentoo-r1-x86_64-wifitest2/kernel/drivers/net
drwxr-xr-x   2 root     root            0  Dec 16 01:49 lib/modules/5.3.14-gentoo-r1-x86_64-wifitest2/kernel/drivers/net/intel
drwxr-xr-x   2 root     root            0  Dec 16 01:49 lib/modules/5.3.14-gentoo-r1-x86_64-wifitest2/kernel/drivers/net/intel/e1000
-rw-r--r--   1 root     root        70480  Dec 16 01:49 lib/modules/5.3.14-gentoo-r1-x86_64-wifitest2/kernel/drivers/net/intel/e1000/e1000.ko
drwxr-xr-x   6 root     root            0  Dec 16 01:49 lib/modules/5.3.14-gentoo-r1-x86_64-wifitest2/kernel/drivers/usb
drwxr-xr-x   2 root     root            0  Dec 16 01:49 lib/modules/5.3.14-gentoo-r1-x86_64-wifitest2/kernel/drivers/usb/common
-rw-r--r--   1 root     root         6584  Dec 16 01:49 lib/modules/5.3.14-gentoo-r1-x86_64-wifitest2/kernel/drivers/usb/common/usb-common.ko
drwxr-xr-x   2 root     root            0  Dec 16 01:49 lib/modules/5.3.14-gentoo-r1-x86_64-wifitest2/kernel/drivers/usb/core
-rw-r--r--   1 root     root       308944  Dec 16 01:49 lib/modules/5.3.14-gentoo-r1-x86_64-wifitest2/kernel/drivers/usb/core/usbcore.ko
drwxr-xr-x   2 root     root            0  Dec 16 01:49 lib/modules/5.3.14-gentoo-r1-x86_64-wifitest2/kernel/drivers/usb/host
-rw-r--r--   1 root     root        60416  Dec 16 01:49 lib/modules/5.3.14-gentoo-r1-x86_64-wifitest2/kernel/drivers/usb/host/ehci-hcd.ko
-rw-r--r--   1 root     root        10616  Dec 16 01:49 lib/modules/5.3.14-gentoo-r1-x86_64-wifitest2/kernel/drivers/usb/host/ehci-pci.ko
-rw-r--r--   1 root     root        46072  Dec 16 01:49 lib/modules/5.3.14-gentoo-r1-x86_64-wifitest2/kernel/drivers/usb/host/ohci-hcd.ko
-rw-r--r--   1 root     root        35896  Dec 16 01:49 lib/modules/5.3.14-gentoo-r1-x86_64-wifitest2/kernel/drivers/usb/host/uhci-hcd.ko
drwxr-xr-x   2 root     root            0  Dec 16 01:49 lib/modules/5.3.14-gentoo-r1-x86_64-wifitest2/kernel/drivers/usb/storage
-rw-r--r--   1 root     root       126512  Dec 16 01:49 lib/modules/5.3.14-gentoo-r1-x86_64-wifitest2/kernel/drivers/usb/storage/usb-storage.ko
drwxr-xr-x   3 root     root            0  Dec 16 01:49 lib/modules/5.3.14-gentoo-r1-x86_64-wifitest2/kernel/fs
drwxr-xr-x   2 root     root            0  Dec 16 01:49 lib/modules/5.3.14-gentoo-r1-x86_64-wifitest2/kernel/fs/fat
-rw-r--r--   1 root     root        95664  Dec 16 01:49 lib/modules/5.3.14-gentoo-r1-x86_64-wifitest2/kernel/fs/fat/fat.ko
-rw-r--r--   1 root     root        16104  Dec 16 01:49 lib/modules/5.3.14-gentoo-r1-x86_64-wifitest2/kernel/fs/fat/msdos.ko
-rw-r--r--   1 root     root        32434  Dec 16 01:49 lib/modules/5.3.14-gentoo-r1-x86_64-wifitest2/modules.alias
-rw-r--r--   1 root     root        42356  Dec 16 01:49 lib/modules/5.3.14-gentoo-r1-x86_64-wifitest2/modules.alias.bin
-rw-r--r--   1 root     root         8132  Dec 16 01:49 lib/modules/5.3.14-gentoo-r1-x86_64-wifitest2/modules.builtin
-rw-r--r--   1 root     root        11529  Dec 16 01:49 lib/modules/5.3.14-gentoo-r1-x86_64-wifitest2/modules.builtin.bin
-rw-r--r--   1 root     root        15196  Dec 16 01:49 lib/modules/5.3.14-gentoo-r1-x86_64-wifitest2/modules.dep
-rw-r--r--   1 root     root        23748  Dec 16 01:49 lib/modules/5.3.14-gentoo-r1-x86_64-wifitest2/modules.dep.bin
-rw-r--r--   1 root     root            0  Dec 16 01:49 lib/modules/5.3.14-gentoo-r1-x86_64-wifitest2/modules.devname
-rw-r--r--   1 root     root         8320  Dec 16 01:49 lib/modules/5.3.14-gentoo-r1-x86_64-wifitest2/modules.order
-rw-r--r--   1 root     root          117  Dec 16 01:49 lib/modules/5.3.14-gentoo-r1-x86_64-wifitest2/modules.softdep
-rw-r--r--   1 root     root        24707  Dec 16 01:49 lib/modules/5.3.14-gentoo-r1-x86_64-wifitest2/modules.symbols
-rw-r--r--   1 root     root        29469  Dec 16 01:49 lib/modules/5.3.14-gentoo-r1-x86_64-wifitest2/modules.symbols.bin
lrwxrwxrwx   1 root     root            4  Dec 16 01:49 linuxrc -> init
drwxr-xr-x   2 root     root            0  Dec 16 01:49 mnt
drwxr-xr-x   2 root     root            0  Dec 16 01:49 proc
drwxr-xr-x   3 root     root            0  Dec 16 01:49 root
drwx------   2 root     root            0  Dec 16 01:49 root/.ssh
-rw-------   1 root     root          742  Dec 16 01:49 root/.ssh/authorized_keys
drwxr-xr-x   2 root     root            0  Dec 16 01:49 run
-rw-r--r--   1 root     root            0  Dec 16 01:49 run/utmp
drwxr-xr-x   2 root     root            0  Dec 16 01:49 sbin
-rwxr-xr-x   1 root     root      1105720  Dec 16 01:49 sbin/blkid
-rwxr-xr-x   1 root     root      2813384  Dec 16 01:49 sbin/cryptsetup
lrwxrwxrwx   1 root     root           19  Dec 16 01:49 sbin/dmsetup -> ../usr/sbin/dmsetup
lrwxrwxrwx   1 root     root           19  Dec 16 01:49 sbin/dmstats -> ../usr/sbin/dmstats
lrwxrwxrwx   1 root     root            7  Dec 16 01:49 sbin/init -> ../init
lrwxrwxrwx   1 root     root           15  Dec 16 01:49 sbin/lvm -> ../usr/sbin/lvm
-rwxr-xr-x   1 root     root      1510360  Dec 16 01:49 sbin/mdadm
-rwxr-xr-x   1 root     root      1267904  Dec 16 01:49 sbin/mdmon
drwxr-xr-x   2 root     root            0  Dec 16 01:49 sys
drwxrwxrwt   2 root     root            0  Dec 16 01:49 tmp
drwxr-xr-x   6 root     root            0  Dec 16 01:49 usr
drwxr-xr-x   2 root     root            0  Dec 16 01:49 usr/bin
lrwxrwxrwx   1 root     root           13  Dec 16 01:49 usr/bin/dropbearconvert -> dropbearmulti
lrwxrwxrwx   1 root     root           13  Dec 16 01:49 usr/bin/dropbearkey -> dropbearmulti
-rwxr-xr-x   1 root     root      1365144  Dec 16 01:49 usr/bin/dropbearmulti
-rwxr-xr-x   1 root     root         2881  Dec 16 01:49 usr/bin/login-remote.sh
lrwxrwxrwx   1 root     root           13  Dec 16 01:49 usr/bin/scp -> dropbearmulti
drwxr-xr-x   2 root     root            0  Dec 16 01:49 usr/lib
lrwxrwxrwx   1 root     root            3  Dec 16 01:49 usr/lib32 -> lib
lrwxrwxrwx   1 root     root            3  Dec 16 01:49 usr/lib64 -> lib
drwxr-xr-x   2 root     root            0  Dec 16 01:49 usr/sbin
lrwxrwxrwx   1 root     root           11  Dec 16 01:49 usr/sbin/cache_check -> pdata_tools
lrwxrwxrwx   1 root     root           11  Dec 16 01:49 usr/sbin/cache_dump -> pdata_tools
lrwxrwxrwx   1 root     root           11  Dec 16 01:49 usr/sbin/cache_metadata_size -> pdata_tools
lrwxrwxrwx   1 root     root           11  Dec 16 01:49 usr/sbin/cache_repair -> pdata_tools
lrwxrwxrwx   1 root     root           11  Dec 16 01:49 usr/sbin/cache_restore -> pdata_tools
lrwxrwxrwx   1 root     root           11  Dec 16 01:49 usr/sbin/cache_writeback -> pdata_tools
-rwxr-xr-x   1 root     root      1262952  Dec 16 01:49 usr/sbin/dmsetup
lrwxrwxrwx   1 root     root            7  Dec 16 01:49 usr/sbin/dmstats -> dmsetup
lrwxrwxrwx   1 root     root           20  Dec 16 01:49 usr/sbin/dropbear -> ../bin/dropbearmulti
lrwxrwxrwx   1 root     root           11  Dec 16 01:49 usr/sbin/era_check -> pdata_tools
lrwxrwxrwx   1 root     root           11  Dec 16 01:49 usr/sbin/era_dump -> pdata_tools
lrwxrwxrwx   1 root     root           11  Dec 16 01:49 usr/sbin/era_invalidate -> pdata_tools
lrwxrwxrwx   1 root     root           11  Dec 16 01:49 usr/sbin/era_restore -> pdata_tools
-rwxr-xr-x   1 root     root      2905416  Dec 16 01:49 usr/sbin/lvm
-rwxr-xr-x   1 root     root      3061192  Dec 16 01:49 usr/sbin/pdata_tools
-rwxr-xr-x   1 root     root          609  Dec 16 01:49 usr/sbin/resume-boot
lrwxrwxrwx   1 root     root           11  Dec 16 01:49 usr/sbin/thin_check -> pdata_tools
lrwxrwxrwx   1 root     root           11  Dec 16 01:49 usr/sbin/thin_delta -> pdata_tools
lrwxrwxrwx   1 root     root           11  Dec 16 01:49 usr/sbin/thin_dump -> pdata_tools
lrwxrwxrwx   1 root     root           11  Dec 16 01:49 usr/sbin/thin_ls -> pdata_tools
lrwxrwxrwx   1 root     root           11  Dec 16 01:49 usr/sbin/thin_metadata_size -> pdata_tools
lrwxrwxrwx   1 root     root           11  Dec 16 01:49 usr/sbin/thin_repair -> pdata_tools
lrwxrwxrwx   1 root     root           11  Dec 16 01:49 usr/sbin/thin_restore -> pdata_tools
lrwxrwxrwx   1 root     root           11  Dec 16 01:49 usr/sbin/thin_rmap -> pdata_tools
lrwxrwxrwx   1 root     root           11  Dec 16 01:49 usr/sbin/thin_trim -> pdata_tools
-rwxr-xr-x   1 root     root         3076  Dec 16 01:49 usr/sbin/unlock-luks
drwxr-xr-x   3 root     root            0  Dec 16 01:49 usr/share
drwxr-xr-x   2 root     root            0  Dec 16 01:49 usr/share/udhcpc
-rwxr-xr-x   1 root     root         1098  Dec 16 01:49 usr/share/udhcpc/default.script
drwxr-xr-x   3 root     root            0  Dec 16 01:49 var
drwxr-xr-x   2 root     root            0  Dec 16 01:49 var/log
-rw-r--r--   1 root     root            0  Dec 16 01:49 var/log/lastlog
-rw-r--r--   1 root     root            0  Dec 16 01:49 var/log/wtmp
lrwxrwxrwx   1 root     root            6  Dec 16 01:49 var/run -> ../run
========================================================================

A fenti kimenet azt mutatja, hogy a e1000.ko kernelmodulfájl egy Intel NIC számára, a dropbear végrehajtható fájl (usr/bin/dropbearmulti), és a cryptsetup végrehajtható fájl (sbin/cryptsetup) bekerült az initramfs bináris képfájlba.

Manuális kicsomagolás

A létrehozott bináris initramfs képfájl kicsomagolásához és tartalmának ellenőrzéséhez futtassa:

root #mkdir /tmp/initramfs
root #cd /tmp/initramfs
root #xzcat /boot/initramfs-5.3.14-gentoo-r1-x86_64-wifitest2.img | cpio -idmv
root #ls -l sbin/cryptsetup
-rwxr-xr-x   1 root     root      2813384  Dec 16 01:49 sbin/cryptsetup
Note
A manuális kicsomagolás nehézkes lehet, ha a CPU mikrokódfrissítések beépültek az initramfs bináris képfájlba.

Mikrokód betöltése

A mikrokód (ucode) frissítésekhez a kernelnek támogatnia kell a (korai) mikrokód betöltést, és a mikrokód frissítéseknek már az bootolás elején jelen kell lenniük. További részletekért tekintse meg a Mikrokód cikket.

Mikrokód betöltési támogatás a kernelben

Alapértelmezés szerint a genkernel engedélyezi a mikrokód betöltési támogatást a kernelben mind AMD, mind Intel processzorok esetében. Ez a viselkedés a /etc/genkernel.conf fájlban található MICROCODE opcióval vagy a --microcode=(no|all|amd|intel) parancssori paraméter használatával szabályozható a futtatás során.

Mikrokód frissítések beágyazása az initramfs képfájlba

Ahhoz, hogy a mikrokód (ucode) frissítések beágyazhatóak legyenek az initramfs képfájlban, engedélyezni kell a MICROCODE_INITRAMFS opciót a /etc/genkernel.conf fájlban, vagy a genkernel futtatása során meg kell adni a --microcode-initramfs parancssori paramétert. Ennek hatására a genkernel az initramfs képfájlhoz előrébb csatolja a kiválasztott processzorhoz szükséges mikrokódokat (részletek a fent említett --microcode opciónál), abban az esetben, ha a sys-firmware/intel-microcode szoftvercsomag az split-ucode USE jelölőzászlóval Intel processzorokhoz, illetve/vagy a sys-kernel/linux-firmware szoftvercsomag az AMD processzorokhoz telepítve van.

Note
Az initramfs képfájlba történő mikrokód frissítések beágyazása modern rendszereken már elavult módszernek számít. Helyette ajánlott olyan bootloader-eket használni (például sys-boot/grub), amelyek képesek több initramfs képfájl betöltésére. GRUB vagy más modern bootloader használata esetén ajánlott telepíteni a sys-firmware/intel-microcode szoftvercsomagot Intel processzorok számára, és a sys-kernel/linux-firmware szoftvercsomagot az AMD processzorok számára. Mindkettőnél az initramfs USE jelölőzászlót engedélyezni kell. A bootloader számára engedélyezni kell a /boot/amd-uc.img és/vagy a /boot/intel-uc.img fájlok betöltését a genkernel initramfs fájlja mellett. Ez lehetővé teszi a CPU mikrokód frissítését a kernel/initramfs frissítéseitől függetlenül.

Firmware betöltése

A genkernel által automatikusan generált initramfs bináris képfájlhoz konkrét firmware fájlok adhatóak hozzá, ha a relatív elérési útvonalaikkal együtt felsorolásra kerülnek a FIRMWARE_FILES változóban a /etc/genkernel.conf fájlban. Ha a sys-kernel/genkernel szoftvercsomag telepítve van USE="firmware" beállítással, akkor előnyben fogja részesíteni a /lib/firmware könyvtárban található firmware fájlokat.

FILE /etc/genkernel.confFirmware hozzáadása az initramfs bináris képfájlhoz
# Add firmware(s) to initramfs
FIRMWARE="yes"
 
# Adja meg a könyvtárat, ahonnan a fájlokat be kell tölteni
FIRMWARE_DIR="/lib/firmware"
 
# Specify a comma-separated list of firmware files or directories to include,
# relative to FIRMWARE_DIR.  If empty or unset, the full contents of 
# FIRMWARE_DIR will be included (if FIRMWARE option above is set to YES).
FIRMWARE_FILES="<comma-separated list of firmware files here>"

Abban az esetben, ha a sys-kernel/gentoo-sources szoftvercsomag telepítve van USE="experimental" beállítással, és a kernel be van állítva a CONFIG_GENTOO_PRINT_FIRMWARE_INFO=y opcióval, akkor a következő parancs segítségével egy vesszővel elválasztott lista generálható az összes jelenleg betöltött firmware fájlról. Ez a lista felhasználható a /etc/genkernel.conf fájl FIRMWARE_FILES változójában, ahogyan azt korábban bemutattuk. (A kimenet csak példa.) :

root #dmesg -t | grep '^Loading firmware*' | sed 's/^Loading\sfirmware:\s//' | echo $(cat) | tr ' ' ','
amdgpu/green_sardine_sdma.bin,amdgpu/green_sardine_asd.bin,amdgpu/green_sardine_ta.bin,amdgpu/green_sardine_pfp.bin,amdgpu/green_sardine_me.bin,amdgpu/green_sardine_ce.bin,amdgpu/green_sardine_rlc.bin,amdgpu/green_sardine_mec.bin,amdgpu/green_sardine_dmcub.bin,amdgpu/green_sardine_vcn.bin,regulatory.db,regulatory.db.p7s,rtw89/rtw8852a_fw.bin,rtl_bt/rtl8852au_fw.bin,rtl_bt/rtl8852au_config.bin,rtl_nic/rtl8168h-2.fw

Lehetséges a firmware közvetlen beépítése a kernelképfájlba, azonban vegye figyelembe, hogy a kernel beállításfájlban CONFIG_EXTRA_FIRMWARE (általában /usr/src/linux útvonalon található .config fájlban) szóközzel elválasztott listát igényel (kimeneti példa):

root #dmesg -t | grep '^Loading firmware*' | sed 's/^Loading\sfirmware:\s//' | echo $(cat)
amdgpu/green_sardine_sdma.bin amdgpu/green_sardine_asd.bin amdgpu/green_sardine_ta.bin amdgpu/green_sardine_pfp.bin amdgpu/green_sardine_me.bin amdgpu/green_sardine_ce.bin amdgpu/green_sardine_rlc.bin amdgpu/green_sardine_mec.bin amdgpu/green_sardine_dmcub.bin amdgpu/green_sardine_vcn.bin regulatory.db regulatory.db.p7s rtw89/rtw8852a_fw.bin rtl_bt/rtl8852au_fw.bin rtl_bt/rtl8852au_config.bin rtl_nic/rtl8168h-2.fw
Note
Az ilyen lista csak akkor lesz teljes, ha az illesztőprogramok sikeresen betöltik az összes szükséges firmware fájlt: Abban az esetben, ha egy illesztőprogramnak egynél több firmware fájlra van szüksége, de nem sikerül betölteni az elsőt, akkor csak ez kerül listázásra, így a többi szükséges firmware fájl neve hiányozni fog. Ajánlott eljárás a szükséges firmware fájlok megtalálására az, hogy az adott illesztőprogramokat először kernelmodulokként fordítjuk le, M a kernel konfigurációjában, és nem az initramfs képfájlba kerülnek a modulok. A modulok a valódi / (root) könyvtárra váltás után kerülnek betöltésre, ahol minden firmware fájl rendelkezésre áll a sys-kernel/linux-firmware (és mások) által a /lib/firmware alatt. Ha a rendszer ezzel a módszerrel sikeresen bootol, akkor a fenti parancs futtatásával megkaphatjuk az összes szükséges firmware fájl teljes listáját. Ezek a fájlok beépíthetők az initramfs képfájlba (vagy magába a kernel képfájlba), lehetővé téve, hogy az illesztőprogramok közvetlenül a kernelbe kerüljenek fordításra, * a kernel beállításában, vagy az illesztőprogramok modulokként az initramfs képfájlba is bekerüljenek. Mindkét esetben a modulok korábban kerülnek betöltésre, és sikeres lesz a betöltés, ha a firmware fájlok elérhetők az bináris initramfs képfájlban, amelyeket a kernel mellett kell betölteni, például a GRUB használatával.

Távoli mentésre szolgáló shell

A genkernel képes beágyazni a net-misc/dropbear SSH szolgáltatását a bináris initramfs képfájlba, amely lehetővé teszi bizonyos problémák távoli megoldását a bootolás során, amikor az initramfs legalább betölthető. A leggyakrabban használt funkció a távoli feloldási lehetőség LUKS-titkosított root vagy swap eszközökhöz, illetve ZFS kötetekhez.

SSH szolgáltatás támogatásához előkövetelmény az initramfs képfájlban

A authorized_keys fájlnak léteznie kell, mielőtt a genkernel meghívásra kerül. Alapértelmezés szerint a genkernel a /etc/dropbear/authorized_keys helyen fog keresni. A --ssh-authorized-keys-file=/path/to/custom/authorized_keys parancssori argumentum vagy a genkernel beállítási opció SSH_AUTHORIZED_KEYS_FILE használható az alapértelmezett érték módosítására.

Tip
Hozzon létre egy /etc/dropbear/authorized_keys szimbolikus hivatkozást /root/.ssh/authorized_keys fájlra például azért, hogy a root hozzáférést és a távoli mentő shell hozzáférést szinkronban tartsa!

SSH támogatás hozzáadása az bináris initramfs képfájlhoz

Az SSH szolgáltatás beágyazásához a genkernel initramfs képfájlba, futtassa a genkernel parancsot a --ssh parancssori argumentummal, vagy állítsa be a genkernel beállításfájlban a SSH="yes" értéket. Fontos megemlíteni, hogy ez a funkció működő hálózatot igényel a rendszer bootolásakor. Az alábbi példa csak az initramfs újbóli létrehozására szolgál, beágyazott SSH szolgáltatással:

root #genkernel --ssh initramfs
* Gentoo Linux Genkernel; Version 4.0.1
* Using genkernel configuration from '/etc/genkernel.conf' ...
* Running with options: --ssh initramfs

* Working with Linux kernel 5.3.14-gentoo-r1-x86_64 for x86_64
* Using kernel config file '/etc/kernels/kernel-config-5.3.14-gentoo-r1-x86_64' ...

* initramfs: >> Initializing ...
*         >> Appending devices cpio data ...
*         >> Appending base_layout cpio data ...
*         >> Appending auxilary cpio data ...
*         >> Appending blkid cpio data ...
*         >> Appending busybox cpio data ...
*         >> Appending dropbear cpio data ...
=================================================================
This initramfs' sshd will use the following host key(s):
256 MD5:a5:13:09:90:5b:f6:a1:95:49:9f:87:d9:fa:e5:d8:02 (ECDSA)
256 SHA256:5dxNGEOwH9hvX4+sV4WtzRV/9m8/hrhgnNtTplZf5x8 (ECDSA)
2048 MD5:1d:e6:cc:ce:c8:96:a0:73:3e:4c:2a:56:ce:b9:10:26 (RSA)
2048 SHA256:V4WrMKhfVSxSeW3XIbW8dSaAmXiwN6jiMA/geNKLcqA (RSA)
=================================================================
*         >> Appending modprobed cpio data ...
*         >> Appending modules cpio data ...
*         >> Appending linker cpio data ...
*         >> Deduping cpio ...
*         >> Pre-generating initramfs' /etc/ld.so.cache ...
*         >> Compressing cpio data (.xz) ...
*
* You will find the initramfs in '/boot/initramfs-5.3.14-gentoo-r1-x86_64.img'.

* WARNING... WARNING... WARNING...
* Additional kernel parameters that *may* be required to boot properly:
* - Add "dosshd" to start SSH daemon in initramfs

* Do NOT report kernel bugs as genkernel bugs unless your bug
* is about the default genkernel configuration...
*
* Make sure you have the latest ~arch genkernel before reporting bugs.
Note
Alapértelmezés szerint a genkernel saját, dedikált SSH host számítógép kulcsokat generál minden hiányzó, támogatott kulcsalgoritmushoz a beágyazott SSH szolgáltatás számára. Ez lehetővé teszi a valódi rendszer SSH szolgáltatásának és az initramfs SSH szolgáltatásának a megkülönböztetését. Ha a host számítógép SSH host kulcsait szeretné használni, vagy minden bootoláskor új kulcsokat generálna futásidőben, akkor használja a --ssh-host-keys parancssori opciót, és további részletekért tekintse meg a genkernel man súgóját.

SSH szolgáltatás engedélyezése a bootoláskor

Az SSH szolgáltatás egyszerű hozzáadása a bináris initramfs képfájlhoz nem elegendő. Mivel bármilyen hálózati szolgáltatás kitettsége biztonsági kockázatot jelenthet, ezt a funkciót kötelező engedélyezni a kernel parancssori argumentummal: dosshd! A hálózat beállításával kapcsolatos információkért tekintse meg a genkernel hálózati beállítására vonatkozó részt.

Távoli feloldás

Két lehetőség van a LUKS-titkosított root és/vagy swap kötet feloldására: Egy manuális mód, amelyben SSH kapcsolaton keresztül futtat egy parancsot, és felszólítják a jelszó megadására, vagy egy automatikus mód, amelyben a felhasználó az SSH kapcsolaton keresztül parancsként adja át a jelszót.

Note
Ehhez szükség van egy olyan kernelre/initramfs-re, amelyet a --luks parancssori argumentummal generáltak, és a kernelt a crypt_root (és/vagy crypt_swap) kernel parancssori argumentummal kell indítani. A ZFS-felhasználónak a kernelképfájlt/initramfs képfájlt a --zfs parancssori argumentummal kell generálnia, és a kernelképfájlt a dozfs kernel parancssori argumentummal kell indítani.
Manuális feloldás

Csatlakozzon a távoli rendszerhez SSH kapcsolaton keresztül, és futtassa a következő parancsokat:

user $ssh root@remote-system-running-genkernel-initramfs-with-dosshd
>> Welcome to Genkernel 4.0.1 (2019-12-16 22:34:14 UTC) remote rescue shell!
>> ...running Linux kernel 5.3.14-gentoo-r1-x86_64

>> The lockfile '/tmp/remote-rescueshell.lock' was created.
>> In order to resume boot process, run 'resume-boot'.
>> Be aware that it will kill your connection which means
>> you will no longer be able to work in this shell.
>> To remote unlock LUKS-encrypted root device, run 'unlock-luks root'.

remote rescueshell ~ # unlock-luks root
>> Detected real_root as a md device. Setting up the device node ...
Enter passphrase for /dev/md126:
>> LUKS device /dev/md126 opened
remote rescueshell ~ # resume-boot
>> Resuming boot process ...
Note
Ebben a példában a rendszer csak a crypt_root= beállítással indult a kernel parancssorában. Ha a rendszer a crypt_swap= beállítással indult, akkor egy további felszólítást fog kapni a swap feloldásának módjáról. A ZFS-felhasználók a unlock-zfs parancs használatára kapnak felszólítást.
Automatikus feloldás

Ez alapvetően ugyanaz, mint a manuális feloldás, csak nincs szükség a resume-boot kézi futtatására. Abban az esetben, ha a felhasználónak mindkettője van, titkosított root és swap kötet, akkor először a swap kötetet kell feloldania:

user $cat /path/to/secret.key/on/local/disk | ssh root@remote-system-running-genkernel-initramfs-with-dosshd post root
>> Detected real_root as a md device. Setting up the device node ...
>> LUKS device /dev/md126 opened
>> Resuming boot process ...
Note
Az automatikus feloldás nem érhető el a ZFS-felhasználók számára.

Bootolás hálózatról

Telepítő CD lemezről

A genkernel segédprogram képes olyan bináris kernel képfájlokat és bináris initrd képfájlokat létrehozni, amelyek támogatják a hálózatról történő bootolást, vagy netbootot. Optimális esetben a felhasználók bármelyik újabb számítógépet hálózaton keresztül képesek bootolni a Gentoo telepítő CD által biztosított környezetbe.

A varázslat a genkernel linuxrc szkriptjében rejlik: Megpróbálja hálózaton keresztül felcsatolni a telepítő CD lemezt az NFS fájlrendszer használatával. Innen a telepítő CD init szkriptjei veszik át az irányítást, mintha a CD helyben lenne jelen.

Kernel és initramfs bináris képfájlok létrehozása netboot támogatással

A hálózati indítás (netbooting) támogatásának engedélyezéséhez a kernel beállításakor az alábbi opciókat kell beállítani:

Warning
A genkernel által biztosított netboot támogatás kísérleti jellegű, és hibákat tartalmazhat.

Először is, a bináris kernelképfájlnak tartalmaznia kell a rendszer Hálózati Interfész Kártyáinak (NIC) az illesztőprogramjait. Általában az ilyen hálózati eszközökhöz tartozó illesztőprogramok kernelmodulokként kerülnek lefordításra. Azonban a hálózati indítás (netboot) érdekében alapvető fontosságú, hogy ezek az illesztőprogramok közvetlenül a bináris kernelképfájlba legyenek beágyazva, és ne külső modulokként legyenek létrehozva.

KERNEL 3.x.x sorozatú kernel beállítása különféle NIC illesztőprogramok támogatásához
Device Drivers --->
   Networking Support --->
      Ethernet (10 or 100Mbit)  --->
         [*] Ethernet (10 or 100Mbit)
         <*>   The driver(s) for each network card
Note
Győződjön meg arról, hogy a <*> lehetőséget választja, és nem a <M> opciót.

Másodszor, ajánlott engedélyezni az IP: kernel szintű automatikus konfiguráció és az IP: DHCP támogatási opciók funkciókat. Ez elkerüli az indokolatlan komplexitást, mivel az IP-cím és a telepítő CD lemezhez tartozó NFS-útvonal beállítható egy DHCP-szerveren. Természetesen ez azt is jelenti, hogy a kernel parancssora minden számítógépnél állandó marad, ami különösen fontos az etherboot szempontjából.

KERNEL 3.x.x sorozatú kernel beállítása a DHCP támogatásához
Device Drivers --->
   Networking Support --->
      Networking options
         [*] TCP/IP networking--->
         [*]   IP: kernel level autoconfiguration
         [*]     IP: DHCP support

Utasítja a kernelt, hogy indításkor DHCP-kérelmet küldjön.

Továbbá engedélyezze a SquashFS támogatását, mivel a legtöbb modern Gentoo telepítő CD megköveteli ezt. A SquashFS támogatás nem része az alapértelmezett kernelforráskód fájának. A SquashFS engedélyezéséhez alkalmazza a szükséges javításokat az általános kernel forráskód fájára, vagy telepítse a gentoo-sources szoftvercsomagot.

KERNEL Kernel beállítása az SquashFS támogatásához
File systems--->
   Miscellaneous filesystems --->
      [*] SquashFS 2.X - Squashed file system support

Miután a forráskód fordítási folyamata befejeződött, hozzon létre egy tömörített tarball (tar.gz) fájlt, amely a kernel moduljait tartalmazza. Erre a lépésre csak akkor van szükség, ha a kernel verziója nem egyezik meg a telepítő CD lemezen található kernelképfájl verziójával.

Ahhoz, hogy létrehozzon egy tömörített fájlt, amely az összes modult tartalmazza, kövesse az alábbi lépéseket:

root #cd /
root #tar -cf /tmp/modules-X.Y.Z.tar.gz /lib/modules/X.Y.Z/

A hálózati indítási mechanizmustól függően az alábbi lépések egyikét kell követni:

Egy etherboot bináris képfájl létrehozásához kövesse az alábbi lépéseket:

root #emerge --ask net-misc/mknbi
root #cd /boot
root #mkelf-linux -params="root=/dev/ram0 init=/linuxrc ip=dhcp" kernel... initrd... > etherboot.img

Egy OpenBoot/SPARC64 TFTP bináris képfájl létrehozásához:

root #emerge --ask sys-apps/sparc-utils
root #cd /boot
root #elftoaout kernel... -o kernel.aout
root #piggyback64 kernel.aout System.map-... initrd-...
root #mv kernel.aout openboot.img

A openboot.img fájl maga a boot bináris képfájl.

Végül másolja át ezt a kernelt a TFTP szerverre. A részletek architektúrafüggőek, és túlmutatnak ezen útmutató keretein. Kérjük, hogy tekintse meg az adott platformhoz kapcsolódó dokumentációt.

NFS beállítása

Az NFS megosztás beállításához, amely tartalmazza a telepítő CD lemezképfájlt, használja a loop eszközt az ISO-képfájl felcsatolásához, majd másolja át a CD tartalmát az NFS megosztásba. Egy kellemes extra funkcióként a genkernel initrd szkriptjei automatikusan kicsomagolják az összes tar.gz tömörített fájlt, amelyek a /nfs/livecd/add/ könyvtárban találhatók. Az egyetlen teendő itt az, hogy a modules-X.Y.Z.tar.gz tömörített fájlt bemásolja a /nfs/livecd/add/ könyvtárba.

A következő lépések feltételezik, hogy a /nfs/livecd egy exportált NFS-megosztás:

root #mount /tmp/gentoo-livecd.iso /mnt/cdrom -o loop
root #cp -p /mnt/cdrom /nfs/livecd
root #umount /mnt/cdrom

Most másolja be a modules.tar.gz fájlt a /add könyvtárba:

root #mkdir /nfs/livecd/add
root #cp /tmp/modules-X.Y.Z.tar.gz /nfs/livecd/add

DHCP beállítása

A netboot képfájlok kérni fognak a hálózaton lévő DHCP szervertől egy IP-címet, valamint egy root-path opciót. Mindkettőt meg lehet adni egyes host számítógépek esetében a számítógépek azonosítására használt MAC-cím alapján:

FILE /etc/dhcpd.confPélda a kliens számítógép dhcpd.conf beállítására
# Here, 192.168.1.2 is the NFS server while 192.168.1.10 will be the IP address of the netbooted machine
host netbootableMachine {
         hardware ethernet 11:22:33:44:55:66;
         fixed-address 192.168.1.10;
         option root-path "192.168.1.2:/nfs/livecd";
}

Netbooting utasítások

A hálózati indítás (netbooting) szintén nagyon platformspecifikus. A lényeg az, hogy a kernel parancssorában meg kell adni az ip=dhcp és init=/linuxrc paramétereket, mivel ezek indítják el a hálózati interfészt, és arra utasítják az initrd szkripteket, hogy az NFS-en keresztül csatolják a telepítő CD lemezt. Íme néhány platformspecifikus tipp.

Etherboot esetében helyezze be az etherboot lemezt a meghajtóba, majd indítsa újra a rendszert. A kernel parancssora a képfájl létrehozásakor lett meghatározva.

Sparc64 esetén nyomja meg a Stop+A billentyűgombokat a boot promptnál, majd írja be a következőt:

okboot net ip=dhcp init=/linuxrc

PXE esetében állítsa be a pxelinux-ot (a syslinux része), majd hozzon létre egy pxelinux.cfg/default fájlt, valami ilyesmi tartalommal:

FILE pxelinux.cfg/defaultAlapértelmezett bejegyzés
DEFAULT gentoo
TIMEOUT 40
PROMPT 1
  
LABEL gentoo
    KERNEL kernel-X.Y.Z
    APPEND initrd=initrd-X.Y.Z root=/dev/ram0 init=/linuxrc ip=dhcp

Genkernel initramfs indítása

Bevezetés

Ha egy initramfs telepítve van a genkernel segítségével, akkor nézze meg a különböző boot opciókat, amelyeket meg kell (vagy ajánlott) határozni az bootloader beállításában. Az ebben az útmutatóban felsoroltak a leggyakoribbak közé tartoznak.

LVM vagy szoftver-RAID betöltése

Ha a rendszer LVM-et vagy szoftver-RAID-et használ, akkor az bináris initramfs képfájlt a --lvm és --mdadm opciók használatával kell létrehozni. Ne felejtse el az indítás során is engedélyezni a támogatást! Ezt a dolvm és domdadm opciókkal lehet megtenni.

FILE /boot/grub/grub.confLVM és/vagy MDADM támogatás engedélyezése
# Example for GRUB 1.x
title Gentoo Linux
root (hd0,0)
kernel /vmlinuz root=/dev/md3 dolvm domdadm
initrd /initramfs-genkernel-x86_64-3.4.3
Egyszerfelhasználós módú bootolás

Ha valamilyen okból az indítás sikertelen, akkor a rendszer mentése még lehetséges az egyszerfelhasználós módú indítással. Ez csak a legszükségesebb szolgáltatásokat tölti be, majd a felhasználót egy mentő (root) shellbe helyezi.

FILE /boot/grub/grub.confEgyszerfelhasználós módú indítás
# Example for GRUB 1.x
title Gentoo Linux
root (hd0,0)
kernel /vmlinuz root=/dev/md3 init_opts=S
initrd /initramfs-genkernel-x86_64-3.4.3

Keresztfordítás támogatása

A bináris kernelképfájl és/vagy bináris initramfs képfájl különböző platform számára történő létrehozásához, miközben a genkernel futtatása folyamatban van, a kernel/initramfs-t keresztfordítással kell elkészíteni.

root #genkernel --mdadm --no-install --cross-compile=aarch64-linux-gnu all

A fentebb említett parancs arra készteti a genkernel szoftvert, hogy olyan bináris kernelképfájlt hozzon létre, amely támogatja az MD raidet, és beágyazza az mdadm-ot a bináris initramfs képfájlba (--mdadm). Mind az elkészült bináris kernelképfájl, mind az elkészült bináris initramfs képfájl kézi telepítést igényel majd (--no-install). A kernelképfájlba és az initramfs képfájlba ágyazott programok arm64 platformon futnak majd (--cross-compile=aarch64-linux-gnu).

--cross-compile=<target triplet>
A target triple-nek (pl. aarch64-linux-gnu) az a célja, hogy egy olyan architektúrára építsen, amely különbözik attól a rendszertől, amelyen a genkernel fut. Ez csak akkor szükséges, ha a létrehozott kernel/initramfs-t indító rendszer architektúrája eltér a jelenlegi rendszertől.
Tip
A keresztfordítási környezet létrehozásának ajánlott módja a sys-devel/crossdev használata. További részletekért tekintse meg a kereszt-fordítási környezet létrehozásáról szóló cikket.

Az initramfs kernel parancssori paraméterei

Note
A következő paraméterlista csupán egy kivonat. Mindig ellenőrizze a verzióhoz tartozó man genkernel fájlt.
root=<...>
Meghatározza a felcsatolandó root fájlrendszer eszközcsomópontját. Például root=/dev/sda3, root=UUID=a1e5968c-bd1b-41ee-bf08-2d0ed376fa83.
cdroot
Megpróbálja betölteni a livecd.squashfs fájlt, és az live médiumok betöltésére szolgál.
crypt_root=<...>
Ez meghatározza a LUKS által titkosított eszközt, amely tartalmazza a felcsatolandó root fájlrendszert. Ugyanazt a szintaxist támogatja, mint a fent említett root kernel parancssori paraméter.
Note
Ez megköveteli, hogy az initramfs képfájl legalább --luks opcióval legyen létrehozva.
crypt_swap=<...>
Meghatározza a LUKS által titkosított swap adathordozót. További részletekért tekintse meg a fent említett crypt_root kernel parancssori paramétert.
root_trim=(yes|no)
Engedélyezi a TRIM támogatást LUKS-alapú root eszköz esetén.
Note
Megköveteli, hogy az initramfs képfájl legalább --luks opcióval legyen létrehozva, és csak flash-alapú kötetek esetén hasznos.
ip=<dhcp,addr/cidr>
Általában arra használják, hogy a kernelt utasítsák egy hálózati interfész indítására, amelyet a gk.net.iface kernel paraméterrel lehet megadni. Alapértelmezés szerint a dhcp lesz használatban. Egy konkrét IP-cím beállítható az addr/CIDR szintaxis segítségével, például 1.2.3.4/24.
gk.net.dhcp.retries=<...>
Alapértelmezés szerint legfeljebb 3 DHCP felfedezési kérést küld.
gk.net.iface=<interface,macaddr>
Alapértelmezés szerint az eth0 nevű interfészt használja. Ezzel a kernelparaméterrel lehet megadni egy másik interfészt.
MAC-cím is megadható (00:00:00:00:00:00 formátumban) az interfész neve helyett.
gk.net.gw=<...>
Opcionális átjáró. Ha az IP dhcp protokollra van állítva, akkor ez a kernelparaméter figyelmen kívül lesz hagyva.
gk.net.routes=<...>
Opcionális további útvonalak. Ha az IP dhcp protokollra van állítva, akkor ez a kernelparaméter figyelmen kívül lesz hagyva.
gk.net.timeout.dad=<...>
Alapértelmezés szerint várjon legfeljebb 10 másodpercet az IPv6 DAD (Duplicate Address Detection) folyamatának befejezésére. Jelenleg a DAD-ra csak egy interfész leállítása közben vár, hogy elkerülje a versenyhelyzetet.
gk.net.timeout.deconfiguration=<...>
Alapértelmezés szerint várjon legfeljebb 10 másodpercet egy interfész leállítása közben, hogy elkerülje a versenyhelyzetet.
gk.net.timeout.dhcp=<...>
Alapértelmezés szerint várjon legfeljebb 10 másodpercet egy DHCP szerver válaszára.
gk.net.timeout.interface=<...>
Alapértelmezés szerint várjon legfeljebb 10 másodpercet, amíg az interfész elérhetővé válik.
gk.prompt.timeout=<...>
Alapértelmezés szerint a genkernel initramfs képfájlban megjelenő prompt, például amikor a root nem található, soha nem fog időtúllépni. Ezzel az opcióval beállíthat egy időkorlátot.
Note
Ha a dosshd használatban van, és a gk.prompt.timeout nincs beállítva, akkor alapértelmezés szerint 30 másodpercre lesz állítva. Ez lehetővé teszi, hogy a távoli felhasználó válaszokat adjon a GK_PROMPT_FILE-en keresztül, amely alapértelmezés szerint /tmp/current_prompt értékre van állítva.
dosshd
Elindít egy interfészt és elindítja az SSH szolgáltatást az initramfs képfájlban, lehetővé téve a távolról történő titkosított eszközök feloldását vagy pusztán a hibakeresési célokra. Tekintse meg az "ip" opciót a hálózat beállításának a részleteiről.
Note
Megköveteli, hogy az initramfs képfájl legalább --ssh opcióval legyen létrehozva.
gk.sshd.port=<...>
Alapértelmezés szerint az sshd a 22-es porton fog hallgatni.
gk.sshd.wait=<...>
X másodperc várakozás az sshd beállítása után. Hasznos a bejelentkezéshez (ezáltal szüneteltetve a boot folyamatot), mielőtt a valódi rendszer indulna.
dolvm
Engedélyezi az LVM kötetek aktiválását rendszerindításkor.
Note
Ez megköveteli, hogy az initramfs képfájl legalább --lvm opcióval legyen létrehozva.
lvmraid=<...>
Megadja a RAID adathordozókat, amelyeket az LVM kötetek aktiválása előtt kell beállítani. Ez magában foglalja a fenti dolvm opciót.
domdadm (A Genkernel 4.2.0 verziójában elavult, mivel az MD összeállítást most már az udev szabályok vezérlik.)
RAID tömbök keresése rendszerindításkor.
Note
Ez megköveteli, hogy az initramfs képfájl legalább --mdadm opcióval legyen létrehozva.
dozfs[=cache,force]
Bootolható ZFS poolok keresése rendszerindításkor. Szükség esetén opcionálisan használhat cachefile-t vagy kényszerített importálást, illetve elvégezheti mindkét műveletet.
Note
Ez megköveteli, hogy az initramfs képfájl legalább --zfs opcióval legyen létrehozva.
gk.log.disabled=<...>
Alapértelmezés szerint minden megjelenített üzenet és külső parancshívás naplózásra kerül az initramfs képfájlban a /tmp/init.log fájlba. Ez a beállítás kikapcsolja a naplózást.
gk.log.keep=<...>
Ha logikai értékre van állítva, akkor a genkernel megőrzi a /tmp/init.log fájlt (részletek fent), és átmásolja a fájlt a /genkernel-boot.log helyre a root eszközön (részletek a fent említett root vagy real_root kernel parancssori paramétereknél). A napló testreszabásához használhat egy egyedi fájlt, például /root/my-genkernel-boot.log.
Note
Az alapértelmezett /genkernel-boot.log fájlt a root-on azért választották, mert a genkernel initramfs alapértelmezés szerint csak a root fájlrendszert csatolja fel. Ha a naplófájlt a /var/log/genkernel-boot.log helyre szeretné tárolni, akkor a csatolási pontnak elérhetőnek kell lennie (részletek: /etc/initramfs.mounts).
gk.hw.load-all=<...>
Alapértelmezés szerint a genkernel különféle modulcsoportokat (nvme, sata, scsi, pata, usb...) tölt be, amíg a fent említett root paraméterben megadott blokkeszköz elérhetővé nem válik. Ez a logikai opció arra használható, hogy kényszerítse az összes modulcsoport betöltését, függetlenül attól, hogy a root eszköz már elérhető-e, ha yes értékre van állítva.

Gyakran ismételt kérdések

Használható-e a genkernel systemd-alapú rendszerekhez?

Igen.

Genkernel? Genkernel-next? Dracut?

Note
A sys-kernel/genkernel-next 2020. augusztus 20-án eltávolításra került a Gentoo szoftvercsomag-tárolóból.

A Gentoo a választásokról szól. A sys-kernel/genkernel-next a sys-kernel/genkernel fejlesztési elágazódásaként jött létre, amikor a genkernel fejlesztése elakadt. Akkoriban probléma volt egy systemd-alapú rendszer indítása a sys-kernel/genkernel által létrehozott kernel/initramfs segítségével (a sys-kernel/genkernel systemd támogatása már egy ideje javítva lett), és néhány fejlesztő támogatni akarta az olyan dolgokat, mint a sys-boot/plymouth, amely sys-fs/udev szoftvercsomagot igényel, ami nem és jelenleg sem kompatibilis a genkernel alapvető elképzelésével (részletek a "Megjegyzés" résznél a cikk elején). Bár a név arra utal, hogy a sys-kernel/genkernel-next a sys-kernel/genkernel utódja vagy az lesz, ez valójában félrevezető: 2013 óta vannak olyan kérések, hogy egyesítsék vissza a genkernel-next szoftvert a genkernel szoftverbe, de a folyamat elakadt. A sys-kernel/genkernel-4 kiadásának megjelenésével, amely jelentős változásokat hozott, és mivel a sys-kernel/genkernel-next fejlesztésében 2018 óta nem történt előrelépés, most már nagyon valószínűtlen, hogy a genkernel-next valaha is egyesülni fog a genkernel szoftverrel.

A sys-kernel/dracut egy általános szoftver az initramfs létrehozásához a sys-kernel/genkernel szoftverhez képest. Nem hoz létre kernelt, mint ahogy azt a genkernel teszi. Például, bár mind a genkernel, mind a dracut támogatja a LUKS-titkosított root kötetből történő indítást, csak a genkernel biztosítja, hogy a kernelhez minden szükséges opció be legyen állítva. Érdemes megemlíteni, hogy a genkernel saját maga fordítja le az initramfs fájlban használt legtöbb szoftvercsomagot (LVM, cryptsetup, mdadm, sshd...), míg a dracut a host számítógépes rendszerből másolja a bináris fájlokat, ami problémát okozhat bizonyos beállításoknál. Így a genkernel támogatja a kernel/initramfs létrehozását más rendszerhez (keresztfordítás), ellentétben a dracut szoftverrel vagy a genkernel-next szoftverrel.

Létrehozható külön kernel/initramfs tesztelési célokra?

root #genkernel --kernel-config=/proc/config.gz --kernel-append-localversion=-test42 --menuconfig all

A fenti parancs arra készteti a genkernel szoftvert, hogy új bináris kernelképfájlt és új bináris initramfs képfájlt készítsen (all), az aktuálisan futó kernelbeállítás alapján (--kernel-config=/proc/config.gz). Ezenkívül elindítja a menuconfig szoftvert (--menuconfig), amely lehetővé teszi a felhasználónak, hogy módosítsa a beállítást. A kernel LOCALVERSION változójához pedig hozzáfűzi a -test42 értéket (--kernel-append-localversion=-test42), amely alapértelmezés szerint hatással lesz a kernelképfájl, a kernelmodulok könyvtárának és az initramfs képfájl elnevezésére.

Hogyan lehet a külső kernelmodulokat (például xtables-addons, nvidia-drivers...) az új kernelhez újból létrehozni?

Alapértelmezés szerint a genkernel a emerge @module-rebuild parancsot hívja meg a kernel létrehozása során, hogy biztosítsa, hogy a szoftvercsomag-kezelőn keresztül telepített külső kernelmodulok továbbra is elérhetők legyenek az újra létrehozott kernelben. Ez a funkció a --[no-]module-rebuild parancssori argumentummal vagy a /etc/genkernel.conf fájlban található MODULEREBUILD beállítással kapcsolható ki és be.

Hogyan lehet további parancsokat futtatni a kernel fordítása után?

A Genkernel lehetőséget biztosít erre egy callback segítségével (a 4-es verzió előtt a callback-et külső kernelmodulok újbóli létrehozására használták). További részletekért tekintse meg a /etc/genkernel.conf fájlban található CMD_CALLBACK részt.

Hogyan használható a ccache vagy a distcc a genkernel szoftverrel?

Állítsa be a ccache szotvert vagy a distcc szotvert a szokásos módon, ahogy a sys-apps/portage esetében. A kívánt eszköz használatához adja meg a --kernel-cc parancssori paramétert, vagy módosítsa a /etc/genkernel.conf fájlban a KERNEL_CC értékét. Ugyanezt tegye meg a UTILS_CC (--utils-cc) és a UTILS_CXX (--utils-cxx) esetében is.

ERROR: compile_kernel(): compile_generic() failed to compile the "bzImage" target!

Ellenőrizze először a /var/log/genkernel.log fájlt. A legtöbb esetben az alapvető probléma valami ilyesmi formájában fog megjelenni:

FILE /var/log/genkernel.log
[...]
  AR      drivers/usb/built-in.a
  AR      drivers/built-in.a
  GEN     .version
  CHK     include/generated/compile.h
  AR      built-in.a
  LD      vmlinux.o
  MODPOST vmlinux.o
ld: .tmp_vmlinux1: final close failed: No space left on device
make: *** [Makefile:1032: vmlinux] Error 1
 
* ERROR: compile_kernel(): compile_generic() failed to compile the "bzImage" target!
* Please consult '/var/log/genkernel.log' for more information and any
* errors that were reported above.
*
* Report any genkernel bugs to bugs.gentoo.org and
* assign your bug to genkernel@gentoo.org. Please include
* as much information as you can in your bug report; attaching
* '/var/log/genkernel.log' so that your issue can be dealt with effectively.
*
* Please do *not* report kernel compilation failures as genkernel bugs!
*
 
* mount: >> Boot partition state on '/boot' was not changed; Skipping restore boot partition state ...
>>> Ended on: 2019-12-16 02:30:19 (after 0 days 0 hours 07 minutes 49 seconds)
</pre>

Más szavakkal: A rendszer kifogyott a lemezterületből (No space left on device) a fordítás során.

Az ilyen problémák elkerülése érdekében állítsa be a CHECK_FREE_DISK_SPACE_BOOTDIR=50 és CHECK_FREE_DISK_SPACE_KERNELOUTPUTDIR=4000 értékeket a /etc/genkernel.conf fájlban, így a genkernel már korán hibát jelezne egy olyan üzenettel, mint például:

root #genkernel --kernel-config=/proc/config.gz all
* Gentoo Linux Genkernel; Version 4.0.1
* Using genkernel configuration from '/etc/genkernel.conf' ...
* Running with options: --kernel-config=/proc/config.gz all
 
* Working with Linux kernel 4.19.89-gentoo-x86_64 for x86_64
* Using kernel config file '/proc/config.gz' ...
*
* Note: The version above is subject to change (depends on config and status of kernel sources).
* ERROR: 4000 MB free disk space is required in '/usr/src/linux' but only 1026 MB is available!
[...]

Fontos a kernel parancssori argumentumainak sorrendje?

Nem.

Hiányzó szükséges kernel opció: 'CONFIG_MICROCODE_INTEL' vagy 'CONFIG_MICROCODE_AMD', amelyet a genkernel megpróbált beállítani!

A kernel v6.6 véglegesen alkalmazta a kernel beállítási paramétereket (részletek: ezt a commitot). Ez a [https://packages.gentoo.org/packages/sys-kernel/genkernel sys-kernel/genkernel 4.3.10-es verziójában] került javításra.

Segítség! Valami nem működik!

A probléma bejelentéséhez mindig biztosítsa a /var/log/genkernel.log fájlt (előfordulhat, hogy a fájlt tömöríteni kell, mielőtt megosztaná vagy csatolná a hibajelentéshez), mivel ez nagymértékben segítheti a fejlesztőket. Még akkor is, ha a parancsot --loglevel=1 (alapértelmezett) opcióval futtatja, a naplófájl mindig tartalmazni fogja a teljes kimenetet (nincs szükség újrafuttatásra bekapcsolt naplózással). Ez segíti a fejlesztőket a probléma megértésében, reprodukálásában és esetlegesen a javításában is.

További olvasnivaló a témában

  • Dracut — an initramfs infrastructure and aims to have as little as possible hard-coded into the initramfs.
  • Kernel — az operációs rendszer magja.
  • Kernel/Configuration — describes the manual configuration and setup of the Linux kernel.
  • Project:Distribution Kernel — aims to maintain sys-kernel/*-kernel packages.
    This page is based on a document formerly found on our main website gentoo.org.
    The following people contributed to the original document: Tim Yamin, Jimi Ayodele, Thomas Seiler, Joshua Saddler (nightmorph), Sebastian Pipping (sping) , José Fournier (jaaf)
    They are listed here because wiki history does not allow for any external attribution. If you edit the wiki article, please do not add yourself here; your contributions are recorded on each article's associated history page.