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

Configurare il kernel Linux

From Gentoo Wiki (test)
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.
Manuale AMD64
Installazione
Riguardo l'installazione
Il mezzo d'installazione
Configurare la rete
Preparare i dischi
Installare lo stage3
Installare il sistema base
Configurare il kernel
Configurare il sistema
Strumenti di sistema
Configurare l'avviatore
Ultimare l'installazione
Lavorare con Gentoo
Introduzione a Portage
Opzioni USE
Funzionalità di Portage
Sistema script di init
Variabili d'ambiente
Lavorare con Portage
File e cartelle
Variabili
Mixare i rami del software
Strumenti aggiuntivi
Repositorio pacchetti personalizzato
Funzionalità avanzate
Configurare la rete
Come iniziare
Configurazione avanzata
Networking modulare
Wireless
Aggiungere funzionalità
Gestione dinamica


Installare i sorgenti

Il nucleo su cui tutte le distribuzioni si basano è il kernel Linux, che fa da intermediario tra i programmi dell'utente ed il sistema fisico (hardware). Gentoo offre ai suoi utenti numerosi possibili sorgenti per il kernel. Una lista completa con descrizioni è disponibile alla pagina panoramica sui kernel.

Per sistemi basati su amd64 Gentoo raccomanda il pacchetto sys-kernel/gentoo-sources.

Scegliere un sorgente kernel appropriato ed installarlo usando emerge:

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

Questo comando installerà i sorgenti del kernel Linux in /usr/src/ in cui un collegamento simbolico chiamato linux punterà ai sorgenti appena installati:

root #ls -l /usr/src/linux
lrwxrwxrwx    1 root   root    12 Oct 13 11:04 /usr/src/linux -> linux-3.16.5-gentoo

Adesso è ora di configurare e compilare i sorgenti del kernel. Ci sono due approcci per farlo:

  1. Il kernel sarà configurato e compilato manualmente.
  2. Un programma di nome genkernel sarà usato per compilare ed installare il kernel automaticamente.

La configurazione predefinita è quella manuale poiché è il modo migliore di ottimizzare l'ambiente di sistema.

Predefinito: Configurazione manuale

Introduzione

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 ;)

Comunque, una cosa è vera: è di vitale importanza conoscere il sistema quando si configura il kernel manualmente. La maggior parte delle informazioni si possono raccogliere installando sys-apps/pciutils che contiene il comando lspci:

root #emerge --ask sys-apps/pciutils
Nota
Dentro la chroot (radice cambiata), si possono ignorare con sicurezza gli avvisi pcilib (come pcilib: cannot open /sys/bus/pci/devices) che lspci potrebbere tirar fuori.

Un'altra fonte di informazioni è lsmod per vedere quali moduli del kernel il CD di installazione usa, poiché ciò potrebbe dare buone idee su cosa abilitare.

Adesso bisogna spostarsi nella directory del sorgente del kernel ed eseguire make menuconfig. Questo farà apparire il menù di configurazione.

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

La configurazione del kernel Linux ha molte, molte sezioni. Per prima cosa saranno elencate le opzioni che devono essere attivate (altrimenti Gentoo non funzionerà, o non funzionerà correttamente senza modifiche aggiuntive). Esiste anche una guida alla configurazione del kernel Gentoo nel wiki di Gentoo che potrebbe aiutare ulteriormente.

Abilitare le opzioni richieste

Assicurarsi che ogni driver vitale per l'avvio del sistema (come un controller SCSI, ecc.) sia compilato nel kernel e non come modulo, altrimenti il sistema non sarà in grado di avviarsi completamente.

Proseguire selezionando l'esatto tipo di processore. È anche raccomandato abilitare le funzionalità MCE (se disponibili) così che gli utenti possano ricevere notifiche su eventuali problemi hardware. Su alcune architetture (come x86_64), questi errori non sono scritti su dmesg, ma su /dev/mcelog. Ciò richiede il pacchetto app-admin/mcelog.

Selezionare anche Maintain a devtmpfs file system to mount at /dev (Mantenere un file system devtmpfs da montare su /dev) così che i file dei dispositivi critici siano già presenti durante il processo di avvio (CONFIG_DEVTMPFS e CONFIG_DEVTMPFS_MOUNT):

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

Verificare che il supporto dischi SCSI sia stato attivato (CONFIG_BLK_DEV_SD):

KERNEL Abilitare il supporto dischi SCSI
Device Drivers --->
   SCSI device support  --->
      <*> SCSI disk support

Adesso andare su File Systems e selezionare il supporto ai file system desiderati. Non si compili il file system usato per la radice (root) come modulo, altrimenti Gentoo non sarà in grado di montare questa partizione. Selezionare anche Virtual memory e /proc file system. Selezionare una o più delle seguenti opzioni come richiesto dal sistema (CONFIG_EXT2_FS, CONFIG_EXT3_FS, CONFIG_EXT4_FS, CONFIG_MSDOS_FS, CONFIG_VFAT_FS, CONFIG_PROC_FS, e CONFIG_TMPFS):

KERNEL Selezionare i file system necessari
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)

Se PPPoE è usato per connettersi ad Internet, o un modem dial-up, allora abilitare le seguenti opzioni (CONFIG_PPP, CONFIG_PPP_ASYNC, e CONFIG_PPP_SYNC_TTY):

KERNEL Selezionare i driver necessari per PPPoE
Device Drivers --->
  Network device support --->
    <*> PPP (point-to-point protocol) support
    <*>   PPP support for async serial ports
    <*>   PPP support for sync tty ports

Le due opzioni di compressione non causaranno danni, ma non sono assolutamente necessarie, né lo è l'opzione PPP attraverso Ethernet, che potrebbe essere utilizzata solo da ppp quando configurata per eseguire PPPoE in modalità kernel.

Non si dimentichi di includere il supporto nel kernel per le schede di rete (Ethernet o wireless).

La maggior parte dei sistemi dispone di più core, quindi è importante attivare Symmetric multi-processing support (CONFIG_SMP):

KERNEL Abilitare il supporto SMP
Processor type and features  --->
  [*] Symmetric multi-processing support
Nota
Nei sistemi multi-core, ogni core conta come un processore.

Se verranno utilizzati dispositivi di input USB (come tastiera o mouse) o altri dispositivi USB, non si dimentichi di abilitare anche quelli (CONFIG_HID_GENERIC e CONFIG_USB_HID, CONFIG_USB_SUPPORT, CONFIG_USB_XHCI_HCD, CONFIG_USB_EHCI_HCD, CONFIG_USB_OHCI_HCD):

KERNEL Abilitare supporto USB per dispositivi di input
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


Configurazioni del kernel specifiche per architettura

Assicurarsi di selezionare Emulazione IA32 se i programmi a 32 bit devono essere supportati (CONFIG_IA32_EMULATION). Gentoo intallerà un sistema multilib (sistema misto a 32 e 64 bit) per impostazione predefinita. Quindi, a meno che un profilo no-multilib sia stato scelto, questa opzione è richiesta.

KERNEL Selezionare il tipo di processore e le sue caratteristiche
Processor type and features  --->
   [ ] Machine Check / overheating reporting 
   [ ]   Intel MCE Features
   [ ]   AMD MCE Features
  Processor family (AMD-Opteron/Athlon64)  --->
    ( ) Opteron/Athlon64/Hammer/K8
    ( ) Intel P4 / older Netburst based Xeon
    ( ) Core 2/newer Xeon
    ( ) Intel Atom
    ( ) Generic-x86-64
Executable file formats / Emulations  --->
   [*] IA32 Emulation

Abilitare il supporto alle tabelle di partizione GPT se ciò era stato precedentemente usato per partizionare il disco (CONFIG_PARTITION_ADVANCED e CONFIG_EFI_PARTITION):

KERNEL Abilitare il supporto a GPT
-*- Enable the block layer --->
   Partition Types --->
      [*] Advanced partition selection
      [*] EFI GUID Partition support

Abilitare il supporto ad EFI stub ed alle variabili EFI nel kernel Linux se UEFI viene usato per avviare il sistema (CONFIG_EFI, CONFIG_EFI_STUB, CONFIG_EFI_MIXED, e CONFIG_EFI_VARS):

KERNEL Abilitare il supporto a UEFI
Processor type and features  --->
    [*] EFI runtime service support 
    [*]   EFI stub support
    [*]     EFI mixed-mode support
 
Firmware Drivers  --->
    EFI (Extensible Firmware Interface) Support  --->
        <*> EFI Variable Support via sysfs

Compilare e installare

Ora che la configurazione è completata, è il momento di compilare e installare il kernel. Uscire dalla configurazione ed avviare il processo di compilazione:

root #make && make modules_install
Nota
È possibile abilitare la compilazione parallela usando make -jX, dove X è un numero intero pari alle attività parallele che il processo di compilazione è abilitato a far girare. Le istruzioni sono similie a quelle usate precedentemente per /etc/portage/make.conf, con la variabile MAKEOPTS.

Quando il kernel ha terminato la compilazione, copiare l'immagine del kernel dentro /boot/. L'operazione viene gestita dal comando make install:

root #make install

Questo comando copierà l'immagine del kernel dentro /boot/ insieme al file System.map ed al file di configurazione del kernel.


Opzionale: Creare un'immagine initramfs

In alcuni casi è necessario costruire un initramfs - un file system iniziale basato sulla RAM. Il motivo più frequente per esso è quando posizioni di importanti file system (come /usr/ o /var/) sono su partizioni separate. Con un initramfs, queste partizioni possono essere montate usando gli strumenti disponibili all'interno di initramfs.

Senza un initramfs, c'è un alto rischio che il sistema non si avvii correttamente, in quanto gli strumenti che sono responsabili del montaggio dei file system hanno bisogno di informazioni che risiedono sui file system stessi. Un initramfs caricherà i file necessari in un archivio che sarà usato subito appena il kernel si avvia, ma prima che il controllo passi allo strumento di init. Gli script sull'initramfs faranno sì che le partizioni siano montate correttamente prima che il sistema prosegua il suo avvio.

Per installare un'immagine initramfs, installare prima sys-kernel/genkernel, poi fargli generare un'immagine initramfs:

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

Per abilitare un supporto specifico nell'initramfs, per esempio LVM o RAID, aggiungere le opzioni appropriate a genkernel. Consultare genkernel --help per ulteriori informazioni. Nell'esempio successivo, viene abilitato il supporto per LVM e software RAID (mdadm):

root #genkernel --lvm --mdadm --install initramfs

L'initramfs verrà conservato dentro /boot/. Il file risultante può essere trovato elencando semplicemente i file che iniziano con initramfs:

root #ls /boot/initramfs*

Adesso si continui con i Moduli del kernel.

Alternativa: Usare genkernel

Se la configurazione manuale risulta troppo difficoltosa, allora è raccomandato usare genkernel. Esso configurerà e costruirà il kernel in modo automatico.

genkernel configura un kernel in modo pressoché identico al kernel configurato per il CD di installazione. Ciò significa che quando viene usato genkernel per costruire il kernel, il sistema generalmente rileverà tutto l'hardware durante l'avvio, proprio come fa il CD di installazione. Poiché genkernel non richiede alcuna configurazione manuale del kernel, risulta una soluzione ideale per gli utenti che non si sentono sicuri di compilare da sé il proprio kernel.

Vediamo ora come usare genkernel. Prima di tutto, installare sys-kernel/genkernel:

root #emerge --ask sys-kernel/genkernel

Poi, modificare il file /etc/fstab in modo tale che la linea, contenente /boot/ nel secondo campo, nel primo campo punti al dispositivo corretto. Se si segue l'esempio di partizionamento del manuale, allora questo dispositivo sarà probabilmente /dev/sda2 con un filesystem ext2. Ciò significa che l'inserimento nel file dovrebbe essere simile a quanto segue:

root #nano -w /etc/fstab
FILE /etc/fstabConfigurazione del punto di montaggio di /boot
/dev/sda2	/boot	ext2	defaults	0 2
Nota
Più avanti nell'installazione di Gentoo, /etc/fstab verrà nuovamente configurato. L'impostazione di /boot è necessaria ora poiché l'applicazione genkernel legge ora in questa configurazione.

Ora, compilare i sorgenti del kernel eseguendo genkernel all. Attenzione, genkernel compila un kernel che supporta quasi tutto l'hardware possibile, questa compilazione richiederà molto tempo prima di arrivare alla fine!

Nota
Se la partizione di boot non usa ext2 o ext3 come filesystem potrebbe essere necessario configurare manualmente il kernel usando genkernel --menuconfig all e aggiungere il supporto a questo tipo particolare di filesystem nel kernel (ovvero, non come modulo). Gli utenti di LVM2 dovranno probabilmente aggiungere anche --lvm come argomento.
root #genkernel all

Quando genkernel conclude, vengono creati un kernel, un insieme completo di moduli e un disco RAM iniziale (initramfs). Useremo il kernel e l'initrd per configurare un boot loader più avanti in questo documento. Annotarsi i nomi del kernel e dell'initrd, in quanto queste informazioni verranno usate quando verrà modificato il file di configurazione del boot loader. L'initrd verrà avviato immediatamente dopo che il processo di avvio avrà effettuato l'autorilevamento dell'hardware (proprio come fa il CD di installazione) prima che il sistema "reale" si avvii.

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

Moduli del kernel

Configurazione dei moduli

Note
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.

Elencare i moduli, che serve caricare automaticamente, su /etc/conf.d/modules. Anche le opzioni extra possono essere aggiunte ai moduli se necessario.

Per visualizzare tutti i moduli disponibili, eseguire il seguente comando find. Non dimenticarsi di sostituire "<versione del kernel>" con la versione del kernel appena compilata:

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

Per esempio, per caricare automaticamente il modulo 3c59x.ko (che è il driver per una famiglia specifica di schede di rete 3Com), modificare il file /etc/conf.d/modules ed inserirvi il nome del modulo.

root #nano -w /etc/conf.d/modules
modules="3c59x"
FILE /etc/modules-load.d/network.confForce loading 3c59x module
3c59x

Continuare l'installazione con la Configurazione del sistema.

Opzionale: Installare il firmware

Alcuni driver richiedono firmware addizionali da installare nel sistema affinché funzioni. Questo caso riguarda spesso le interfacce di rete, specialmente le interfacce di rete wireless. La maggior parte dei firmware si trovano su sys-kernel/linux-firmware:

root #emerge --ask sys-kernel/linux-firmware