Konfigurace jádra Linux

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Handbook:AMD64/Installation/Kernel and the translation is 100% complete.
AMD64 Handbook
Instalace
O instalaci
Výběr média
Konfigurace sítě
Příprava disků
Instalace stage3
Instalace základního systému
Konfigurace jádra
Konfigurace systému
Instalace nástrojů
Konfigurace zavaděče
Dokončení
Práce s Gentoo
Úvod do Portage
Přepínače USE
Funkce portage
Systém initskriptů
Proměnné prostředí
Práce s Portage
Soubory a adresáře
Proměnné
Mísení softwarových větví
Doplňkové nástroje
Vlastní strom Portage
Pokročilé funkce
Konfigurace sítě
Začínáme
Pokročilá konfigurace
Modulární síťování
Bezdrátové sítě
Přidání funkcí
Dynamická správa

Firmware

Některé ovladače vyžadují pro svoje fungování instalaci doplňkového firmwaru. Často se jedná o síťová rozhraní, zvláště u bezdrátových síťových karet. Také moderní grafické čipy od výrobců jako je AMD, NVidia a Intel vyžadují často externí soubory s firmwarem jsou-li použity open source ovladače. Většina firmwaru je součástí sys-kernel/linux-firmware:

It is recommended to have the sys-kernel/linux-firmware package installed before the initial system reboot in order to have the firmware available in the event that it is necessary:

root #emerge --ask sys-kernel/linux-firmware
Poznámka
Installing certain firmware packages often requires accepting the associated firmware licenses. If necessary, visit the license handling section of the Handbook for help on accepting licenses.

It is important to note that kernel symbols that are built as modules (M) will load their associated firmware files from the filesystem when they are loaded by the kernel. It is not necessary to include the device's firmware files into the kernel's binary image for symbols loaded as modules.

Microcode

In addition to discrete graphics hardware and network interfaces, CPUs also can require firmware updates. Typically this kind of firmware is referred to as microcode. Newer revisions of microcode are sometimes necessary to patch instability, security concerns, or other miscellaneous bugs in CPU hardware.

Microcode updates for AMD CPUs are distributed within the aforementioned sys-kernel/linux-firmware package. Microcode for Intel CPUs can be found within the sys-firmware/intel-microcode package, which will need to be installed separately. See the Microcode article for more information on how to apply microcode updates.

Kernel configuration and compilation

Nyní je čas nakonfigurovat a sestavit jádro. K tomu lze přistoupit dvěma způsoby:

Ranked from least involved to most involved:

  1. Jádro se konfiguruje a sestaví ručně.
  2. K automatickému sestavení a instalaci jádra Linux se použije nástroj zvaný genkernel.

Základ, kolem něhož jsou vybudovány všechny distribuce, je jádro Linux. Je to vrstva mezi uživatelskými programy a systémovým hardwarem. Gentoo nabízí svým uživatelům několik možný zdrojů jádra. Celý seznam s popisem je dostupný na stránce Přehled jader.

Distribution kernels

Distribution Kernels are ebuilds that cover the complete process of unpacking, configuring, compiling, and installing the kernel. The primary advantage of this method is that the kernels are updated to new versions by the package manager as part of @world upgrade. This requires no more involvement than running an emerge command. Distribution kernels default to a configuration supporting the majority of hardware, however two mechanisms are offered for customization: savedconfig and config snippets. See the project page for more details on configuration.

Installing the correct installkernel package

Before using the distribution kernels, please verify that the correct installkernel package for the system has been installed. When using systemd-boot (formerly gummiboot) as the bootloader, install:

root #emerge --ask sys-kernel/installkernel-systemd-boot

When using a traditional a /boot layout (e.g. GRUB, LILO, etc.), the gentoo variant should be installed by default. If in doubt:

root #emerge --ask sys-kernel/installkernel-gentoo

If using GRUB with installkernel-gentoo, users may want to enable USE=grub for it to automatically run grub-mkconfig for new kernels with dist kernels.

Installing a distribution kernel

To build a kernel with Gentoo patches from source, type:

root #emerge --ask sys-kernel/gentoo-kernel

System administrators who want to avoid compiling the kernel sources locally can instead use precompiled kernel images:

root #emerge --ask sys-kernel/gentoo-kernel-bin

Upgrading and cleaning up

Once the kernel is installed, the package manager will automatically update it to newer versions. The previous versions will be kept until the package manager is requested to clean up stale packages. To reclaim disk space, stale packages can be trimmed by periodically running emerge with the --depclean option:

root #emerge --depclean

Alternatively, to specifically clean up old kernel versions:

root #emerge --prune sys-kernel/gentoo-kernel sys-kernel/gentoo-kernel-bin

Post-install/upgrade tasks

Distribution kernels are capable of rebuilding kernel modules installed by other packages. linux-mod.eclass provides the dist-kernel USE flag which controls a subslot dependency on virtual/dist-kernel.

Enabling this USE flag on packages like sys-fs/zfs and sys-fs/zfs-kmod allows them to automatically be rebuilt against a newly updated kernel and, if applicable, will re-generate the initramfs accordingly.

Manually rebuilding the initramfs

If required, manually trigger such rebuilds by, after a kernel upgrade, executing:

root #emerge --ask @module-rebuild

If any kernel modules (e.g. ZFS) are needed at early boot, rebuild the initramfs afterward via:

root #emerge --config sys-kernel/gentoo-kernel
root #emerge --config sys-kernel/gentoo-kernel-bin

Instalace zdrojových kódů

Poznámka
This section is only relevant when using the following genkernel (hybrid) or manual kernel management approach.

When installing and compiling the kernel for amd64-based systems, Gentoo recommends the sys-kernel/gentoo-sources package.

Choose an appropriate kernel source and install it using emerge:

root #emerge --ask sys-kernel/gentoo-sources

Tím nainstalujete zdrojové kódy jádra do /usr/src, v němž bude symbolický odkaz linux ukazovat na nainstalované zdrojové kódy jádra:

It is conventional for a /usr/src/linux symlink to be maintained, such that it refers to whichever sources correspond with the currently running kernel. However, this symbolic link will not be created by default. An easy way to create the symbolic link is to utilize eselect's kernel module.

For further information regarding the purpose of the symlink, and how to manage it, please refer to Kernel/Upgrade.

First, list all installed kernels:

root #eselect kernel list
Available kernel symlink targets:
  [1]   linux-6.1.38-gentoo

In order to create a symbolic link called linux, use:

root #eselect kernel set 1
root #ls -l /usr/src/linux
lrwxrwxrwx    1 root   root    12 Oct 13 11:04 /usr/src/linux -> linux-6.1.38-gentoo

Alternativa: Použití genkernelu

Pokud ve vás ruční konfigurace vzbuzuje obavy, pak doporučujeme použití genkernel. Nakonfiguruje a sestaví jádro automaticky.

Genkernel provides a generic kernel configuration file and will compile the kernel and initramfs, then install the resulting binaries to the appropriate locations. This results in minimal and generic hardware support for the system's first boot, and allows for additional update control and customization of the kernel's configuration in the future.

Be informed: while using genkernel to maintain the kernel provides system administrators with more update control over the system's kernel, initramfs, and other options, it will require a time and effort commitment to perform future kernel updates as new sources are released. Those looking for a hands-off approach to kernel maintenance should use a distribution kernel.

For additional clarity, it is a misconception to believe genkernel automatically generates a custom kernel configuration for the hardware on which it is run; it uses a predetermined kernel configuration that supports most generic hardware and automatically handles the make commands necessary to assemble and install the kernel, the associate modules, and the initramfs file.

Binary redistributable software license group

If the linux-firmware package has been previously installed, then skip onward to the to the installation section.

As a prerequisite, due to the firwmare USE flag being enabled by default for the sys-kernel/genkernel package, the package manager will also attempt to pull in the sys-kernel/linux-firmware package. The binary redistributable software licenses are required to be accepted before the linux-firmware will install.

This license group can be accepted system-wide for any package by adding the @BINARY-REDISTRIBUTABLE as an ACCEPT_LICENSE value in the /etc/portage/make.conf file. It can be exclusively accepted for the linux-firmware package by adding a specific inclusion via a /etc/portage/package.license/linux-firmware file.

If necessary, review the methods of accepting software licenses available in the Installing the base system chapter of the handbook, then make some changes for acceptable software licenses.

If in analysis paralysis, the following will do the trick:

root #mkdir /etc/portage/package.license
FILE /etc/portage/package.license/linux-firmwareAccept binary redistributable licenses for the linux-firmware package
sys-kernel/linux-firmware @BINARY-REDISTRIBUTABLE

Installation

Nyní se podívejme na to, jak genkernel použít. Nejprve nainstalujeme ebuild sys-kernel/genkernel.

root #emerge --ask sys-kernel/genkernel

Generation

Nyní sestavte zdrojové kódy jádra spuštěním příkazu genkernel all. Vemte na vědomí, že genkernel sestaví jádro s podporou téměř veškerého hardwaru, tudíž sestavování může trvat docela dlouho!

Poznámka
Pokud oddíl boot neobsahuje systém souborů ext2 nebo ext3, bude nejspíše třeba ručně nakonfigurovat jádro pomocí příkazu genkernel --menuconfig all a přidat podporu pro odpovídající systém souborů přímo do jádra (tedy nikoli jako modul). Uživatelé LVM2 budou pravděpodobně chtít také přidat přepínač --lvm.
Poznámka
Users of LVM2 should add --lvm as an argument to the genkernel command below.
root #genkernel all

Na konci genkernel vytvoří jádro a kompletní sada modulů a počáteční ram disk (initramfs). Jádro a initrd použijeme později v tomto dokumentu při konfiguraci zavaděče.

root #ls /boot/kernel* /boot/initramfs*

Výchozí: Ruční konfigurace

Úvod

Ruční konfigurace jádra je často vnímána na jako ta vůbec nejsložitější procedura, kterou musí uživatel Linuxu provádět. Nic není dál od pravdy - po konfiguraci několika jader si málokdo vzpomene, že to kdy bylo složité ;)

Nicméně jedno je pravdou: při manuální konfiguraci je nutné znát systém. Většinu informací získáte nainstalováním balíčku sys-apps/pciutils, který obsahuje příkaz lspci:

root #emerge --ask sys-apps/pciutils
Poznámka
Uvnitř chrootu můžete bezpečně ignorovat varování pcilib (jako je "pcilib cannot open /sys/bus/pci/devices"), které může lspci vypisovat.

Dalším zdrojem informací o systému je spuštění lsmod, po němž uvidíte jaké moduly jádra používá instalační CD, čímž můžete získat indicii o tom, co povolit.

Nyní přejděte do adresáře se zdrojovým kódem jádra a spusťte příkaz make menuconfig. Po něm na vás vyskočí obrazovka s konfiguračním menu.

root #cd /usr/src/linux
root #make menuconfig

Konfigurace jádra Linux má mnoho a mnoho sekcí. Nejprve si vypišme ty volby, které musejí být aktivovány (jinak by Gentoo nefungovalo nebo nefungovalo správně bez dodatečného poladění). Na Gentoo wiki máme k dispozici také Průvodce Gentoo nastavením jádra, který vám může poskytnout další pomoc.

Aktivace vyžadovaných voleb

When using sys-kernel/gentoo-sources, it is strongly recommend the Gentoo-specific configuration options be enabled. These ensure that a minimum of kernel features required for proper functioning is available:

KERNEL Enabling Gentoo-specific options
Gentoo Linux --->
  Generic Driver Options --->
    [*] Gentoo Linux support
    [*]   Linux dynamic and persistent device naming (userspace devfs) support
    [*]   Select options required by Portage features
        Support for init systems, system and service managers  --->
          [*] OpenRC, runit and other script based systems and managers
          [*] systemd

Naturally the choice in the last two lines depends on the selected init system (OpenRC vs. systemd). It does not hurt to have support for both init systems enabled.

When using sys-kernel/vanilla-sources, the additional selections for init systems will be unavailable. Enabling support is possible, but goes beyond the scope of the handbook.

Enabling support for typical system components

Zajistěte, že všechny ovladače nezbytné pro zavedení systému (jako je řadič SCSI atd.) jsou sestaveny jako součást jádra a ne jako modul, jinak systém nebude schopen plně najet.

Potom zvolte přesný model procesoru. Doporučuje se zapnout prvky MCE (pokud jsou v nabídce), tak aby byl uživatel upozorněn na chyby hardwaru. Na některých architekturách (jako je x86_64) tyto chyby nejsou zapisovány do dmesg ale /dev/mcelog. To vyžaduje balíček app-admin/mcelog.

Zvolte také "Maintain a devtmpfs file system to mount at /dev", aby byly kritické soubory zařízení dostupné už zkraje procesu zavádění (CONFIG_DEVTMPFS a CONFIG_DEVTMPFS_MOUNT):

KERNEL Zapnutí podpory devtmpfs
Device Drivers --->
  Generic Driver Options --->
    [*] Maintain a devtmpfs filesystem to mount at /dev
    [ ]   Automount devtmpfs at /dev, after the kernel mounted the rootfs

Ověřte, že byla aktivována podpora pro SCSI diky (CONFIG_BLK_DEV_SD):

KERNEL Enabling SCSI disk support
Device Drivers --->
   SCSI device support  --->
      <*> SCSI disk support
KERNEL Enabling basic SATA and PATA support (CONFIG_ATA_ACPI, CONFIG_SATA_PMP, CONFIG_SATA_AHCI, CONFIG_ATA_BMDMA, CONFIG_ATA_SFF, CONFIG_ATA_PIIX)
Device Drivers --->
  <*> Serial ATA and Parallel ATA drivers (libata)  --->
    [*] ATA ACPI Support
    [*] SATA Port Multiplier support
    <*> AHCI SATA support (ahci)
    [*] ATA BMDMA support
    [*] ATA SFF support (for legacy IDE and PATA)
    <*> Intel ESB, ICH, PIIX3, PIIX4 PATA/SATA support (ata_piix)

Verify basic NVMe support has been enabled:

KERNEL Enable basic NVMe support for Linux 4.4.x (CONFIG_BLK_DEV_NVME)
Device Drivers  --->
  <*> NVM Express block device
KERNEL Enable basic NVMe support for Linux 5.x.x (CONFIG_DEVTMPFS)
Device Drivers --->
  NVME Support --->
    <*> NVM Express block device

It does not hurt to enable the following additional NVMe support:

KERNEL Enabling additional NVMe support (CONFIG_NVME_MULTIPATH, CONFIG_NVME_MULTIPATH, CONFIG_NVME_HWMON, CONFIG_NVME_FC, CONFIG_NVME_TCP, CONFIG_NVME_TARGET, CONFIG_NVME_TARGET_PASSTHRU, CONFIG_NVME_TARGET_LOOP, CONFIG_NVME_TARGET_FC, CONFIG_NVME_TARGET_FCLOOP, CONFIG_NVME_TARGET_TCP
[*] NVMe multipath support
[*] NVMe hardware monitoring
<M> NVM Express over Fabrics FC host driver
<M> NVM Express over Fabrics TCP host driver
<M> NVMe Target support
  [*]   NVMe Target Passthrough support
  <M>   NVMe loopback device support
  <M>   NVMe over Fabrics FC target driver
  < >     NVMe over Fabrics FC Transport Loopback Test driver (NEW)
  <M>   NVMe over Fabrics TCP target support

Nyní přejděte na Souborové systémy (File Systems) a vyberte podporu pro soubory systémy, které používáte. Nesestavte souborový systém použitý pro kořen (root) jako modul, jinak Gentoo nebude moci připojit tento diskový oddíl. Vyberte také Virtual memory a /proc file system. Vyberte jednu nebo více z násedujících možností dle potřeb systému (CONFIG_EXT2_FS, CONFIG_EXT3_FS, CONFIG_EXT4_FS, CONFIG_MSDOS_FS, CONFIG_VFAT_FS, CONFIG_PROC_FS, and CONFIG_TMPFS):

KERNEL Selecting necessary file systems
File systems --->
  <*> Second extended fs support
  <*> The Extended 3 (ext3) filesystem
  <*> The Extended 4 (ext4) filesystem
  <*> Reiserfs support
  <*> JFS filesystem support
  <*> XFS filesystem support
  <*> Btrfs filesystem support
  DOS/FAT/NT Filesystems  --->
    <*> MSDOS fs support
    <*> VFAT (Windows-95) fs support
 
Pseudo Filesystems --->
    [*] /proc file system support
    [*] Tmpfs virtual memory file system support (former shm fs)

Pokud používáte pro připojení k internetu PPPoE nebo modem, aktivujte následující volby (CONFIG_PPP, CONFIG_PPP_ASYNC, and CONFIG_PPP_SYNC_TTY):

KERNEL Selecting PPPoE necessary drivers
Device Drivers --->
  Network device support --->
    <*> PPP (point-to-point protocol) support
    <*>   PPP support for async serial ports
    <*>   PPP support for sync tty ports

Zvolení dvou možností komprese nijak neublíží, ale ani není nezbytně nutné, stejně jako volba "PPP over Ethernet", kterou ppp použije pouze v případě, že bude nastaveno pro použití PPPoE v módu jádra.

Nezapomeňte do jádra zahrnout podporu síťových (ethernetových nebo bezdrátových) karet.

Většina systémů má k dispozici více jader, proto je důležité aktivovat Symmetric multi-processing support (CONFIG_SMP):

KERNEL Activating SMP support
Processor type and features  --->
  [*] Symmetric multi-processing support
Poznámka
U vícejaderných systémů se každé jádro počítá jako jeden procesor.

Pokud používáte vstupní zařízení USB (jako je klávesnice nebo myš) nebo jiná USB zařízení, nezapomeňte je také povolit (CONFIG_HID_GENERIC and CONFIG_USB_HID, CONFIG_USB_SUPPORT, CONFIG_USB_XHCI_HCD, CONFIG_USB_EHCI_HCD, CONFIG_USB_OHCI_HCD):

KERNEL Activating USB support for input devices
Device Drivers --->
  HID support  --->
    -*- HID bus support
    <*>   Generic HID driver
    [*]   Battery level reporting for HID devices
      USB HID support  --->
        <*> USB HID transport layer
  [*] USB support  --->
    <*>     xHCI HCD (USB 3.0) support
    <*>     EHCI HCD (USB 2.0) support
    <*>     OHCI HCD (USB 1.1) support


Konfigurace jádra specifická pro architekturu

Pokud mají být podporovány 32bitové programy (multilib), ujistěte se, že jste zapnuli volbu "IA32 Emulation". Gentoo instaluje ve výchozím stavu systém s podporou multilib (mix 32bitového a 64bitového prostředí), tudíž pokud nepoužíváte profil no-multilib, je tato volba vyžadována.

KERNEL Selecting processor types and features
'"`UNIQ--pre-0000001B-QINU`"'

Zapněte podporu pro popisky oddílů GPT, pokud jste je v předchozí části použili při rozdělování disku:

KERNEL Enable support for GPT
'"`UNIQ--pre-0000001E-QINU`"'

Zapněte podporu "EFI stub" a "EFI variables" v jádře Linux, pokud je pro spuštění systému používáno UEFI:

KERNEL Enable support for UEFI
'"`UNIQ--pre-00000021-QINU`"'

Sestavení a instalace

Po té, co je konfigurace dokončena, je čas sestavit a nainstalovat jádro. Opusťte konfiguraci a zahajte proces kompilace:

root #make && make modules_install
Poznámka
Můžete zapnout paralelní sestavování pomocí make -jX s tím, že X je přirozené číslo značící počet paralalelních úloh, které dovolíte sestavovacímu procesu spustit. Je to podobné jako dřívější instrukce k proměnné MAKEOPTS v souboru /etc/portage/make.conf.

Jakmile je sestavování jádra hotové, zkopírujte obraz jádra do adresáře /boot. Učiní tak příkaz make install:

root #make install

Tím bude obraz jádra zkopírován do /boot/ společně se souborem Systém.map a konfiguračním souborem jádra.


Volitelné: Sestavení initramfs

V některých případech je nutné sestavit initramfs - počáteční souborový systém v RAM. Nejběžnějším důvodem je, pokud se důležité souborové systémy (jako je /usr nebo /var) nacházejí na samostatném diskovém oddíle. S pomocí initramfs mohou být tyto oddíly připojeny za použití nástrojů v něm obsažených.

Bez initramfs je velké riziko toho, že systém správně nenajede protože nástroje, které jsou odpovědné za připojení těchto souborových systémů, potřebují informace, které jsou na nich uložené. Initramfs vloží tyto nezbytné soubory do archivu, který se použije bezprostředně po zavedení jádra, ale předtím než bude kontrola předána nástroji init. Skripty v initramfs potom zajistí správné připojení diskových oddílů před tím, než bude systém pokračovat ve spouštění.

Důležité
If using genkernel, it should be used for both building the kernel and the initramfs. When using genkernel only for generating an initramfs, it is crucial to pass --kernel-config=/path/to/kernel.config to genkernel or the generated initramfs may not work with a manually built kernel. Note that manually built kernels go beyond the scope of support for the handbook. See the kernel configuration article for more information.

K instalaci initramfs nejprve nainstalujte sys-kernel/genkernel a pak jej nechte generovat initramfs:

root #emerge --ask sys-kernel/genkernel
root #genkernel --install initramfs

Initramfs bude uložen v boot. Výsledný soubor může být najít jednoduše vypsáním souborů začínajících na "initramfs":

root #ls /boot/initramfs*

Nyní pokračujte na Moduly jádra.

Moduly jádra

Konfigurace modulů

Poznámka
Volitelně lze moduly hardwaru vypsat ručně. Obyčejně udev většinou nahraje všechny moduly detekovaného připojeného hardwaru. Nicméně ničemu neublíží, pokud jsou automaticky detekované moduly zapsány na seznam. Občas nějaký exotický hardware potřebuje pomoc při nahrávání svých ovladačů.

VLožte moduly, které je třeba načíst automaticky, do souborů /etc/modules-load.d/*.conf, vždy jeden modul na řádek. Je-li potřeba je možné dodatečné volby modulů nastavit v souborech /etc/modprobe.d/*.conf.

Všechny dostupné moduly lze zobrazit spuštěním příkazu find. Nezapomeňte nahradit "<verze jádra>" verzí právě sestaveného jádra.

root #find /lib/modules/<kernel version>/ -type f -iname '*.o' -or -iname '*.ko' | less

Force loading particular kernel modules

Například pro automatické načtení modulu 3c59x.ko (což je ovladač síťové karty zn. 3Com), upravte soubor /etc/modules-load.d/network.conf a vložte do něj název modulu. Jméno souboru nemá pro načítač význam.

root #mkdir -p /etc/modules-load.d
root # nano -w /etc/modules-load.d/network.conf

Note that the module's .ko file suffix is insignificant to the loading mechanism and left out of the configuration file:

FILE /etc/modules-load.d/network.confVynucení načtení modulu 3c59x
3c59x

V instalaci pokračujte Konfigurací systému.