This is Gentoo's testing wiki. It is a non-operational environment and its textual content is outdated.
Please visit our production wiki at https://wiki.gentoo.org
Handbook:Parts/Installation/Kernel/cs
Instalace zdrojových kódů
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.
Pro systémy založené na Gentoo doporučuje balíček sys-kernel/.
Vyberte vhodné jádro a nainstalujte je pomocí emerge:
root #
emerge --ask sys-kernel/
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:
root #
ls -l /usr/src/linux
lrwxrwxrwx 1 root root 12 Oct 13 11:04 /usr/src/linux -> linux-
Nyní je čas nakonfigurovat a sestavit jádro. K tomu lze přistoupit dvěma způsoby:
- Jádro se konfiguruje a sestaví ručně.
- K automatickému sestavení a instalaci jádra Linux se použije nástroj zvaný genkernel.
Ruční konfiguraci vysvětlíme jako výchozí volbu, protože se jedná a nejlepší cestu jak vyladit prostředí
Výchozí: Ruční konfigurace
Úvod
Manually configuring a kernel is often seen as the most difficult procedure a Linux user ever has to perform. Nothing is less true - after configuring a couple of kernels no-one even remembers that it was difficult ;)
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
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
Make sure that every driver that is vital to the booting of the system (such as SCSI controller, etc.) is compiled in the kernel and not as a module, otherwise the system will not be able to boot completely.
Next select the exact processor type. It is also recommended to enable MCE features (if available) so that users are able to be notified of any hardware problems. On some architectures (such as x86_64), these errors are not printed to dmesg, but to /dev/mcelog. This requires the app-admin/mcelog package.
Also select Maintain a devtmpfs file system to mount at /dev so that critical device files are already available early in the boot process (CONFIG_DEVTMPFS and CONFIG_DEVTMPFS_MOUNT):
Device Drivers ---> Generic Driver Options ---> [*] Maintain a devtmpfs filesystem to mount at /dev [ ] Automount devtmpfs at /dev, after the kernel mounted the rootfs
Verify SCSI disk support has been activated (CONFIG_BLK_DEV_SD):
Device Drivers ---> SCSI device support ---> <*> SCSI disk support
Now go to File Systems and select support for the filesystems you use. Don't compile the file system that is used for the root filesystem as module, otherwise the Gentoo system will not be able to mount the partition. Also select Virtual memory and /proc file system. Select one or more of the following options as needed by the system (CONFIG_EXT2_FS, CONFIG_EXT3_FS, CONFIG_EXT4_FS, CONFIG_MSDOS_FS, CONFIG_VFAT_FS, CONFIG_PROC_FS, and CONFIG_TMPFS):
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)
If PPPoE is used to connect to the Internet, or a dial-up modem, then enable the following options (CONFIG_PPP, CONFIG_PPP_ASYNC, and CONFIG_PPP_SYNC_TTY):
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.
Most systems also have multiple cores at their disposal, so it is important to activate Symmetric multi-processing support (CONFIG_SMP):
Processor type and features ---> [*] Symmetric multi-processing support
U vícejaderných systémů se každé jádro počítá jako jeden procesor.
If USB input devices (like keyboard or mouse) or other USB devices will be used, do not forget to enable those as well (CONFIG_HID_GENERIC and CONFIG_USB_HID, CONFIG_USB_SUPPORT, CONFIG_USB_XHCI_HCD, CONFIG_USB_EHCI_HCD, CONFIG_USB_OHCI_HCD):
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
Architecture specific kernel configurations
Placeholder for architecture-specific kernel build information
Compiling and installing
Placeholder for instructions for building and installing the kernel sources
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í.
K instalaci initramfs nejprve nainstalujte sys-kernel/genkernel a pak jej nechte generovat initramfs:
root #
emerge --ask sys-kernel/genkernel
root #
genkernel --install initramfs
In order to enable specific support in the initramfs, such as LVM or RAID, add in the appropriate options to genkernel. See genkernel --help for more information. In the next example support is enabled for LVM and software RAID (mdadm):
root #
genkernel --lvm --mdadm --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.
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 funguje tak, že nastaví jádro téměř shodně s tím, jak je nastaveno instalační CD. To znamená, že pokud je genkernel použit k sestavení jádra, systém v podstatě detekuje veškerý hardware během startu systému, stejně jako to dělá instalační CD. Protože genkernel nevyžaduje žádné manuální nastavování, jedná se o ideální řešení pro ty uživatele, kteří se nemusí při kompilaci vlastního jádra cítit v pohodě.
Nyní se podívejme na to, jak genkernel použít. Nejprve nainstalujeme ebuild sys-kernel/genkernel.
root #
emerge --ask sys-kernel/genkernel
Následně upravíme soubor /etc/fstab tak, aby řádek obsahující /boot/ ve druhém poli v prvním poli odkazoval na správné zařízení. Pokud jste se řídíli příkladem rozdělení diskových oddílů z příručky, pak je tímto zařízením nejspíše se souborovým systémem ext2. Záznam v /etc/fstab tak bude vypadat takto:
root #
nano -w /etc/fstab
/etc/fstab
Configuring the /boot mountpoint/boot ext2 defaults 0 2
Později při instalaci bude /etc/fstab znovu upravován. Nyní nastavujeme /boot z důvodu, že program genkernel s ním pracuje.
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!
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
.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*
Moduly jádra
Konfigurace modulů
Hardware modules are optional to be listed manually. udev will normally load all hardware modules that are detected to be connected in most cases. However, it is not harmful for automatically detected modules to be listed. Sometimes exotic hardware requires help to load their drivers.
Vypište moduly, které je třeba načíst automaticky v souboru /etc/conf.d/modules. Je-li to potřeba, mohou být k modulům přidány dodatečné volby.
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
For instance, to automatically load the 3c59x.ko module (which is the driver for a specific 3Com network card family), edit the /etc/modules-load.d/network.conf file and enter the module name in it. The actual file name is insignificant to the loader.
root #
nano -w /etc/conf.d/modules
modules="3c59x"
/etc/modules-load.d/network.conf
Force loading 3c59x module3c59x
V instalaci pokračujte Konfigurací systému.
Volitelné: Instalace firmwaru
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. Většina firmwaru je součástí sys-kernel/linux-firmware:
root #
emerge --ask sys-kernel/linux-firmware