Traccia: modular-build

Modular Build

  • AUTORE: Jim Gifford <lfs-hints at jg555.com>
  • DATA:2004-05-18
  • TRADUTTORE:Sandro Cardelli <sacarde at tiscali.it>
  • LICENZA: GNU Free Documentation License Version 1.2
  • SYNOPSIS: Guida per un Kernel Modulare
  • DESCRIZIONE: Questo hint fornisce informazioni per assistere nell'utilizzo di un kernel modulare. E' una guida non dettagliata su come compilare il kernel.
  • PREREQUISITI: Nessuno

HINT:

INTRODUZIONE

In questo hint sarà spiegato come utilizzare i moduli con LFS. Ciò non è un requisito. Le informazioni qui utilizzate come esempio, come ogni compilazione di LFS, sono specifiche della macchina sulla quale si compila.
Se non si è sicuri di quali moduli caricare, può non essere utile usare le informazioni raccolte in questa appendice. Se si è alla prima compilazione di LFS, è raccomandato utilizzare un kernel monolitico. Leggere per intero questa appendice prima di compilare un kernel modulare.

PREREQUISITI

Questa sezione spiega come impostare correttamente il Kernel 2.6 per il supporto dei moduli.
Requisiti del Kernel per i Moduli
Per utilizzare i moduli con il kernel è raccomandata la compilazione con le opzioni seguenti. I seguenti sono solo i requisiti minimi.
Prima selezionare

Loadable module support  --->
        [*] Enable loadable module support

Questo permette di compilare i componenti di sistema come moduli.
Avvertimenti
Non tutto nel kernel può essere compilato come modulo, per verificare se una particolare opzione può essere compilata come modulo cercare < > questi caratteri prima del nome del componente del kernel.
Anche se il componente viene compilato come modulo, una particolare impostazione può non funzionare correttamente con i moduli. Un ottimo esempio potrebbe essere l'initrd. Si può compilare <M> RAM disk support come modulo, ma potrebbe essere persa la funzionalità di initrd, poiché initrd dipende da ramfs, e poiché ramfs è un modulo, la funzionalità di initrd non sarebbe disponibile.
Un'altro esempio di ciò è dato dai dispositivi di Frame Buffer Console, se si vogliono disponibili al processo di boot, occorre compilarli nel kernel e non come moduli. La lista proseguirebbe, ma la maggior parte delle volte un tentativo e l'errore mostra come mai un sistema modulare non funziona.
Selezionare [*] Enable loadable module support
Dopo aver selezionato l'opzione sopra, è possibile creare moduli caricabili sul sistema LFS. Questo aggiungerà più passi di compilazione alla compilazione finale del kernel.
Da quando è stato selezionato il supporto per i moduli caricabili, occorrerà rivedere la compilazione del kernel aggiungendo i seguenti due comandi al processo di compilazione dopo make bzImage occorrerà eseguire i seguenti comandi.

make modules
make modules_install

Selezionate <userinput>[*] Automatic kernel module loading
Dopo aver selezionato queste opzioni il kernel supporterà i moduli e l'autocaricamento dei moduli attraverso il comando modprobe.

MODPROBE:

In questa sezione sarà spiegato come impostare un propriofile modprobe.conf per l'utilizzo con LFS.
Configurazione di Base
Il file modprobe.conf segue la disposizione della struttura dei dispositivi che è inclusa con il kernel. Controllare il file linux-{linux-version}/Documentation/devices.txt per informazioni. Questo file è la guida su come configurare modprobe.conf.
ATTENZIONE Questo può essere eccessivamente complesso per i novizi e le direttive necessitano di essere seguite esattamente in tutto per far funzionare tutto correttamente.
Sarà dato un esempio utilizzando l'unità floppy. Ogni unità floppy ha un numero major e un numero minor. Ma ogni unità floppy usa lo stesso driver chiamato floppy. Adesso è possibile dare uno sguardo al file devices.txt e si troverà che il numero major per un'unità floppy è 2, e che è un dispositivo a blocchi. Nel file modprobe.conf si dovrà specificare la seguente riga:

alias block-major-2 floppy

Configurazione Avanzata

Se si ha più di una interfaccia SCSI vanno applicate le stesse regole,ma con una leggera modifica. Si supponga di avere un controller mega-raid e un dispositivo aic7xxx, di voler caricare per primo l'adattatore mega-raid, e l'aic7xx come successivo dispositivo. Si cerchi in devices.txt trovando quale sia il numero major e minor della prima unità SCSI. In questo esempio il numero major è 8 e il numero minor è 1. Ricordarsi che prima di utilizzare un disco SCSI,occorre prima caricare il driver sd_mod. Adesso, secondo il numero di unità che si hanno sul controller mega-raid, occorrerà rintracciare quale sia la prima unità per il controller aic7xxx.
Ricordarsi di guardare devices.txt e rintracciare quale sia l'intervallo tra le unità, per unità SCSI è 16.
Occorrerà aggiungere, partendo dal numero di unità disponibili sul controller mega-raid,supponiamo di utilizzare 3 moltiplicato 16, che darà 48.
Così i prossimi controller driver partiranno da 64, il successivo valore logico. Per realizzare questo, occorrerà specificare le seguenti righe nel file modprobe.conf:

alias block-major-8 sd_mod
alias block-major-8-1 megaraid
alias block-major-8-48 aic7xxx

MODPROBE.CONF:

In questa sezione verrà fornito un esempio pratico di un appropriato file modprobe.conf per l'utilizzo con LFS.
Esempio di modprobe.conf
Di seguito è riportato un esempio di file modprobe.conf. Occorrerà editarlo e rimpiazzare i valori tra parentesi con i valori specifici del proprio sistema.
Creare il file /etc/modprobe.conf eseguendo i seguenti comandi:

cat > /etc/modprobe.conf << "EOF"
# Binary Format
alias binfmt-0000 binfmt_misc
# Block Major
alias block-major-1 rd
alias block-major-2 floppy
alias block-major-7 loop
alias block-major-8 sd_mod
alias block-major-8-1 [scsi module for /dev/sda]
alias block-major-8-16 [scsi module for /dev/sdb]
alias block-major-8-32 [scsi module for /dev/sdc]
alias block-major-11 sr_mod
alias block-major-11-0 [scsi module for /dev/sr0]
alias block-major-11-1 [scsi module for /dev/sr1]
# Character Major
alias char-major-3 ide-core
alias char-major-4 serial_core
alias char-major-5 serial_core
alias char-major-4-64 8250
alias char-major-4-65 8250
alias char-major-5-64 8250
alias char-major-5-65 8250
alias char-major-6 lp
alias char-major-9 st
alias char-major-9-1 [scsi module for /dev/st0]
alias char-major-10 misc
alias char-major-10-1 psaux
alias char-major-10-130 softdog
alias char-major-10-135 rtc
alias char-major-10-144 nvram
alias char-major-10-184 microcode
alias char-major-13 input
alias char-major-13-32 mousedev
alias char-major-21 sg
alias char-major-22 ide-core
alias char-major-33 ide-core
alias char-major-34 ide-core
alias char-major-37 ide-tape
alias char-major-56 ide-core
alias char-major-57 ide-core
alias char-major-108 ppp_generic
alias char-major-188 usbserial
# Net PF
alias net-pf-1 unix
alias net-pf-2 ipv4
alias net-pf-10 off
alias net-pf-17 af_packet
# Aliases
alias dos msdos
alias dummy0 dummy
alias dummy1 dummy
alias iso9660 isofs
alias parport_lowlevel parport_pc
# Network Devices
alias eth0 [network module for eth0]
alias eth1 [network module for eth1]
alias ppp0 ppp
alias ppp-compress-18 ppp_mppe
alias ppp-compress-21 bsd_comp
alias ppp-compress-24 ppp_deflate
alias ppp-compress-26 ppp_deflate
alias tty-ldisc-3 ppp_async
alias tty-ldisc-14 ppp_synctty
# SCSI Devices
alias scsi_hostadapter [first scsi device module]
alias scsi_hostadapter1 [second scsi device module]
# USB Devices
alias usbdevfs usbcore
alias usb-controller [module for first usb controller]
alias usb-controller1 [module for second usb controller]
alias char-major-81 videodev
# Video Devices
alias fb0 [module for framebuffer]
# Character Sets
alias charCE nls_iso8859_1
alias codeUS nls_cp437
alias codeUTF nls_utf8
EOF

Come aggiornare modprobe.conf

Se si ha bisogno di aggiungere altre periferiche al modprobe.conf occorrerà utilizzare le informazioni dall'help del modulo e dal file devices.txt che si trova nella Documentazione dei sorgenti del kernel.
Di seguito alcuni dati di esempio dal devices.txt e come utilizzarli nel modprobe.conf
Da devices.txt

8 block       SCSI disk devices (0-15)
      	0 = /dev/sda          Primo disco SCSI, disco intero
              16 = /dev/sdb          Secondo disco SCSI disco intero
              32 = /dev/sdc          Terzo disco SCSI disco intero
              ...
              240 = /dev/sdp         Sedicesimo dico SCSI disco intero

Le partizioni sono gestite nello stesso modo per i dischi IDE (vedere il numero major 3) ad eccezione del limite sulle partizioni che è 15.
Occorrerà estrarre le necessarie informazioni da sopra. Ipotizzando di avere un /dev/sdp il quale è connesso al controller aic7xxx, per aggiungerlo all'esistente modprobe.conf, occorrerà sapere il numero major, in questo caso è block 8 e il numero minor, in questo caso è 240. Adesso aggiungiamolo al file modprobe.conf,si aggiungerebbe la riga seguente:

alias block-major-8-240 [scsi module for /dev/sdp]

INITRD:
Questo non è consigliato se non si è mai compilato un sistema LFS prima. Se si prova, è a proprio rischio. Cambiamenti dal libro possono concludersi in un costruzione di LFS non funzionante.
Se si ha intenzione di compilare un kernel interamente modulare, occorrerà creare un initrd per avviare il sistema. Si possono avere istruzioni complete seguendo le istruzioni dettagliate riportate in linux-{linux-version}/Documentation/initrd.txt.
E' possibile vedere anche le informazioni contenute nell'hint initrd che si trova a http://www.linuxfromscratch.org/hints/downloads/files/initrd.txt

  • VERSIONE: 1.0
  • CHANGELOG: 1.0 Rilascio Iniziale

Le nuove versioni di questo documento possono essere prelevate da http://cvs.jg555.com/viewcvs.cgi/lfs-hint

 
modular-build.txt · Ultima modifica: 2015/08/08 14:22 (modifica esterna)