Genkernel

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Genkernel and the translation is 70% complete.
Outdated translations are marked like this.
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
Data provided by the Gentoo Package Database · Last update: 2026年07月29日 05:17 More information about USE flags

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.
CODE Enable or disable a certain option
--[no-]menuconfig : Activates [deactivates] ...

Where options have only a negative effect, the no-, and its effect, which are not optional in this case, are figured without square brackets. }}

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
Points to the Genkernel configuration file to use (defaults to /etc/genkernel.conf).
--kernel-config=/path/to/kernel.config
Points to the kernel configuration file to use. To re-use the kernel configuration from the currently running kernel, it is possible to specify /proc/config.gz if it exists. By default, genkernel uses the config from the previous build of the same kernel version or a default kernel config if there isn't a previous config. Use the special value default to force usage of genkernel's generic kernel config. This location must not be /usr/src/linux/.config as it risks being lost or causing errors.
--[no-]menuconfig
Activates (or deactivates) the make menuconfig command (which invokes an interactive configuration menu) before building the kernel.
--gconfig
Provides a kernel configuration utility which depends on the GTK libraries. The advantage of this option is that most users find it easier and clearer to configure the kernel using this tool, since it relies on the X-windowing system. The disadvantage of this option is that the X-windowing system is required to use it, so it will not work on the command line.
--xconfig
Provides a kernel configuration utility which depends on the QT libraries. The advantage of this option is that most users find it easier and clearer to configure the kernel using this tool, since it relies on the X-windowing system. The disadvantage of this option is that the X-windowing system is needed to use it, so it will not work on the command line.
--[no-]save-config
Saves [or does not save] the kernel configuration to a file in the /etc/kernels directory for later use.
--kernel-append-localversion=-mycfg42
Allows the modification of kernel's LOCALVERSION value which will affect kernel's and and initramfs' filename in /boot and modules in /lib/modules/ directory. This is especially helpful to build a new independent revision with its own kernel binary, initramfs and modules. The example above, with =sys-kernel/gentoo-sources-5.4.2, would create /boot/vmlinuz-5.4.2-gentoo-x86_64-mycfg42, /boot/initramfs-5.4.2-gentoo-x86_64-mycfg42.img and /lib/modules/4.19.88-gentoo-x86_64-mycfg42 on amd64 with default settings.

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.
--splash-res=PreferredResolution
This option allows to select which splash screen resolutions will be supported in the initrd during the start-up of the system. This is useful for two reasons. First, to be able to select only the splash screen resolution(s) relevant to the system. Second, to avoid the unnecessary increase in the disk space required by initrd (since the initrd does not have to support resolutions that are irrelevant for the system's configuration.) However, the option is best omitted if the kernel is being compiled for an Installation CD; this allows splash support for all possible resolutions.
--do-keymap-auto
Force keymap selection during the boot sequence.
--keymap
Enables keymap selection at boot (e.g. for LUKS container password input). The desired keymap can be passed in boot options as the value of keymap (name of the keymap file without .map). Available keymap files can be found in /usr/share/genkernel/defaults/keymaps/.
If a needed keymap is not available in genkernel, it is possible to convert one of the existing sys-apps/kbd keymaps (available in /usr/share/genkernel/defaults/keymaps/) using loadkeys --bkeymap. See loadkeys man page for details.
--lvm
Includes support for storage using via Logical Volume Management (LVM2) from static binaries, if available to the system. Relevant (static) LVM2 binaries are compiled when unavailable. Be sure to install the sys-fs/lvm2 package on the system (emerge sys-fs/lvm2) before enabling this option.
--dmraid
Includes support for DMRAID; the utility which creates RAID mappings using the kernel device-mapper subsystem. DMRAID discovers, activates, deactivates and displays properties of software RAID sets (ATARAID, for example) and contained DOS partitions.
--luks
Includes support for Linux Unified Key Setup. This will allow to use a device encrypted by LUKS which contains the root filesystem. On the bootloader, set that encrypted device as the value of crypt_root, and root shall be the unencrypted device LUKS creates ( i.e /dev/mapper/root will be path to mount, and proper boot parameters line will look, like this: GRUB_CMDLINE_LINUX="... crypt_root=UUID=<crypto_LUKS uuid> root=/dev/mapper/root ...").
--iscsi
Adds support for iSCSI to the initrd.
--multipath
Adds support for Multipath to the initrd.
--linuxrc=/path/to/the/linuxrc_file
Specifies a user-created linuxrc — a script that is initialized during the start-up stage of the kernel, prior to the actual boot process. A default linuxrc script can be found in the /usr/share/genkernel/ directory. This script allows booting into a small, modularized kernel; it tries to load the minimum amount of drivers that are needed (as modules) by the system.
--cachedir=/path/to/alt/dir
Overrides the default cache location used while compiling the kernel.
--tmpdir=/path/to/new/tempdir
Specifies the location of the temporary directory used by genkernel while compiling the kernel.
--unionfs
Includes support for the Unification File System in the initrd image.
--mountboot
Detects whether or not the /boot directory needs to be mounted on a separate partition. It will check /etc/fstab script for instructions on how to mount the boot partition on a file system (if needed).
--microcode
Creates an early cpio filled with microcode for Intel/AMD processors for Linux early microcode support.

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
Specifies the compiler employed during the kernel compilation process.
--kernel-ld=someLinker
Specifies the linker employed during the kernel compilation process.
--kernel-as=someAssembler
Specifies the assembler employed during the kernel compilation process.
--kernel-make=someMake
Specifies an alternative to the GNU make utility employed during the kernel compilation process.
--utils-cc=someCompiler
Specifies the compiler employed during the compilation of support utilities.
--utils-ld=someLinker
Specifies the linker employed during the compilation of support utilities.
--utils-as=someAssembler
Specifies the assembler employed during the compilation of support utilities.
--utils-make=someMake
Specifies an alternative to the GNU make utility employed during the compilation of support utilities.
--makeopts=-jX
Specifies the number of concurrent threads that the make utility can implement while the kernel (and utilities) are being compiled. The variable X is a number to be freely chosen, although the most common values are obtained by adding one (1) to the number of cores used by the system, or just use the number of cores on the system. So, for a system with one core, most common option values are -j2 or -j1; a system with two cores most likely uses the -j3 or -j2 options, and so on. (A system with one processor that supports Hyper-ThreadingTM (HT) Technology can be assumed to have 2 cores, provided Symmetric Multi-Processing (SMP) support is enabled in the kernel.)

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/
Specifies an alternative kernel source location, rather than the default /usr/src/linux/ location.
--kernel-config=/path/to/config-file
Specifies which kernel configuration will be used. By default, genkernel will determine kernel version found in --kerneldir and look for kernel config (KV) in /etc/kernels/kernel-config-$KV. If no kernel configuration was found, genkernel will look for a generic kernel configuration in /usr/share/genkernel/$ARCH. A special value default can be used to force usage of genkernel's generic kernel configuration.
Tip
Use --kernel-config=/proc/config.gz to start building a new kernel based on kernel configuration from currently running kernel.
Note: This will only work if current active kernel was built with CONFIG_IKCONFIG=y which is normally the case.
--module-prefix=/path/to/prefix-directory/
Specifies a prefix to the directory where kernel modules will be installed (default path is the /lib/modules directory.)
--[no-]clean
Activates (or deactivates) the make clean command before compiling the kernel. The make clean command removes all object files and dependencies from the kernel's source tree.
--[no-]mrproper
Activates (or deactivates) the make mrproper command before kernel compilation. Like the make clean command listed above, make mrproper removes all object files and dependencies from the kernel's source tree. However, any previous configuration files (in /path/to/sources/.config or /path/to/sources/.config.old) will also be purged from the kernel's source tree. If it is undesirable that the kernel's .config file keeps disappearing, be sure to disable this option!
--oldconfig
Issues the make oldconfig command, which attempts to collect configuration information for the system's architecture from a generic script in /usr/share/genkernel. This is a non-interactive process; no user input is entertained. Also, if --oldconfig is used in conjunction with --clean, the latter option is negated, resulting in the activation of the --no-clean option.
--[no-]module-rebuild
Runs, or does not run emerge @module-rebuild to build out-of-tree modules after kernel and kernel modules have been built. This option is enabled by default.
--callback="echo hello"
Calls the specified arguments (echo hello, in this case) after the kernel and the relevant modules have been built, but before building the initramfs.
Note
Before genkernel-4, this callback was used to trigger rebuild of out-of-tree modules. Since genkernel-4, a dedicated command-line parameter --module-rebuild was introduced, see above.
--[no-]install
Activates (or deactivates) the make install command, which installs the new kernel image, configuration file, initrd image and system map onto the boot partition. Any compiled modules will be installed as well. By default genkernel will attempt mount /boot if it is on a separate partition before running the install command.
--no-ramdisk-modules
Refrains from copying any modules to the genkernel-created initrd image. This option is an exception to the rule about the no- prefix; omission of this prefix creates an invalid genkernel option.
--all-ramdisk-modules
Copies all available modules to the genkernel-created initrd image.
--genzimage
Creates the initrd image, prior to the kernel image (this hack currently applies only to PPC Pegasos systems).

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>
Controls the level of verbosity for information printed by genkernel. The variable LOGLEVEL is an integer between 0 and 5. The level '0' represents minimal output (=no output), while '5' provides as much information as possible about genkernel's activities during the kernel compilation and initramfs assemble process.
Note
Genkernel will always log complete output to /var/log/genkernel.log by default. --loglevel only controls output shown on screen.
--logfile=/path/to/output_file
Log file where genkernel outputs to by default. Defaults to /var/log/genkernel.log.
--[no-]color
Activates (or deactivates) colored output.
--[no-]cleanup
Activates (or deactivates) the full post-run cleanup for debug purposes.

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:

Action Description
all Builds all stages — the initrd, kernel image and modules.
bzImage Only builds the kernel image.
kernel Only builds the kernel image and modules.
initramfs Only builds the initramfs/ramdisk image.
ramdisk Only builds the initramfs/ramdisk image.

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.
  • Secure Boot expecting a hard coded ESP kernel path
  • Making GRUB2 independent of the root partition for stability or security
  • GRUB2 not supporting the root file-system (bcachefs)
  • Using a grub.cfg not generated by grub-mkconfig


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.

default0
timeout5
splashimage=(hd1,0)/boot/grub/splash.xpm.gz

titleGentooLinux
root(hd0,6)
kernel/boot/kernelinitrd=/dev/ram0root=/dev/sda7rootfstype=ext4
initrd/boot/initramfs

titleGentooLinuxoldkernel
root(hd0,6)
kernel/boot/kernel.oldinitrd=/dev/ram0root=/dev/sda7rootfstype=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
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:

  • 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'.
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
</div>
{{Note|Ebben a példában a rendszer csak a <code>crypt_root{{=}}</code> beállítással indult a kernel parancssorában. Ha a rendszer a <code>crypt_swap{{=}}</code> 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 <code>unlock-zfs</code> 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 {{c|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:
{{Cmd
|cat /path/to/secret.key/on/local/disk {{!}} ssh root@remote-system-running-genkernel-initramfs-with-dosshd post root
|collapse-output=true
|output=<pre>
>> 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=<...>
Specifies the device node of the root filesystem to mount. I.e. root=/dev/sda3, root=UUID=a1e5968c-bd1b-41ee-bf08-2d0ed376fa83.
cdroot
This attempts to load livecd.squashfs and is used for loading live media.
crypt_root=<...>
This specifies the device encrypted by LUKS, which contains the root filesystem to mount. Supports same syntax like root kernel command-line parameter from above.
Note
Will require that at least initramfs was built with --luks option set.
crypt_swap=<...>
This specifies the swap device encrypted by LUKS. For more details please see crypt_root kernel command-line parameter from above.
root_trim=(yes|no)
Enables TRIM support for a LUKS-based root device.
Note
Will require that at least initramfs was built with --luks option set and is only useful for flash-based volumes.
ip=<dhcp,addr/cidr>
Normally used to tell the kernel that it should start a network interface which can be specified using gk.net.iface kernel parameter. By default, dhcp will be used. A specific IP address can be set using addr/CIDR notation, i.e. 1.2.3.4/24.
gk.net.dhcp.retries=<...>
Sends up to 3 DHCP discovery requests by default.
gk.net.iface=<interface,macaddr>
Use the interface named eth0 by default. Use this kernel parameter to specify another interface.
A MAC address (00:00:00:00:00:00 format) can be specified instead of an interface name.
gk.net.gw=<...>
Optional gateway. If ip is set to dhcp, this kernel parameter will be ignored.
gk.net.routes=<...>
Optional additional routes. If ip is set to dhcp, this kernel parameter will be ignored.
gk.net.timeout.dad=<...>
Wait up to 10 seconds by default for IPv6's DAD to complete. At the moment, only wait for DAD while bringing down an interface to prevent a race condition.
gk.net.timeout.deconfiguration=<...>
Wait up to 10 seconds by default while bringing down an interface to prevent a race condition.
gk.net.timeout.dhcp=<...>
Wait up to 10 seconds by default for a DHCP server reply.
gk.net.timeout.interface=<...>
Wait up to 10 seconds by default for interface to show up.
gk.prompt.timeout=<...>
By default a prompt within genkernel initramfs like shown when set root could not be found will never timeout. Use this option to set a timeout.
Note
When dosshd is used, gk.prompt.timeout will be set to 30 seconds when not set. This will allow remote user to provide answer through GK_PROMPT_FILE which is set to /tmp/current_prompt by default.
dosshd
Will bring up an interface and start a SSH daemon within initramfs allowing to remotely unlock encrypted devices or just for debugging purpose. See ip option for how to configure network.
Note
Will require that initramfs was built at least with --ssh option set.
gk.sshd.port=<...>
By default, sshd will listen on port 22.
gk.sshd.wait=<...>
Wait X seconds after setting up sshd. Useful for login (and thus pause boot process) before booting real system.
dolvm
Activate LVM volumes on bootup.
Note
Will require that initramfs was built at least with --lvm option set.
lvmraid=<...>
Specify RAID devices to set up before the activation of LVM volumes. Implies option dolvm from above.
domdadm (Deprecated in Genkernel 4.2.0, udev rules now control MD assembly)
Scan for RAID arrays on bootup.
Note
Will require that initramfs was built at least with --mdadm option set.
dozfs[=cache,force]
Scan for bootable ZFS pools on bootup. Optionally use cachefile or force import if necessary or perform both actions.
Note
Will require that initramfs was built at least with --zfs option set.
gk.log.disabled=<...>
By default, any shown message and external command calls will be logged to /tmp/init.log in initramfs. Disables logging.
gk.log.keep=<...>
When set to a boolean value, genkernel will preserve /tmp/init.log, see above, and copy file to /genkernel-boot.log on root device (see root or real_root kernel command-line parameter above). Customize to a file like /root/my-genkernel-boot.log to copy the log.
Note
The default file /genkernel-boot.log on root was chosen because genkernel's initramfs will only mount root filesystem by default. To store the log file at /var/log/genkernel-boot.log, the mount point must be accessible (see /etc/initramfs.mounts).
gk.hw.load-all=<...>
By default, genkernel loads various module groups (nvme, sata, scsi, pata, usb...) until block device specified in root parameter (see above) becomes available. This boolean option can be used to force loading of all module groups regardless whether root device is already available when set to yes.

Gyakran ismételt kérdések

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

Igen.

Genkernel? Genkernel-next? Dracut?

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


Authorship information
This page is based on a document formerly found on 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)

Editors: please do not add yourself here. Contributions are recorded on each article's associated history page, this list is only present to preserve authorship information, as wiki history does not allow for any external attribution.