LKN: Installare ed Avviare con un Kernel: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
Nessun oggetto della modifica
m (aggiunto link pdf originale)
Riga 1: Riga 1:
<big>'''''Introduzione'''''</big>
''Torna all'indice: [[Linux Kernel in a Nutshell]]''
__TOC__


In questa pagina troverete la configurazione del kernel 2.6.13 usata sul mio pc desktop, condita con varie considerazioni sparse che possano aiutare a comprendere le varie voci. Alcune parti della configurazioni sono generiche; altre, sebbene specifiche del mio hardware, possono servire da spunto per altri che stiano cercando di configurare il proprio kernel.
I precedenti capitoli hanno mostrato come scaricare e compilare il kernel. Ora che si ha un file eseguibile -- con tutti i moduli compilati -- è ora di installare il kernel e provare a fare il boot. In questo capitolo, a differenza dei precedenti, tutti i comandi necessitano di essere eseguiti come utente root. Questo  può essere fatto anteponendo ad ogni comando ''sudo'', usando il comando ''su'' per diventare root, oppure accedendo come ''root''.


La presente configurazione � orientata ad ottenere la pi� bassa latenza possibile da un kernel vanilla, tipicamente per applicazioni audio realtime. Forse in futuro aggiunger� una sezione riguardo l'applicazioni delle patch realtime al kernel (necessarie per ottenere latenze ancora pi� basse).
Per vedere se si ha ''sudo'' installato e gli appropriati diritti di accesso, lanciate:


Il secondo scopo di questa configurazione � quello di ottenere il kernel minimo (compilando meno cose possibili) per ottenere la funzionalit� richiesta. Per questo motivo invito chiunque abbia consigli per ridurre ulteriormente questa configurazione, o che sappia anche solo chiarire certe voci pi� oscure della configurazione, a scrivere qui ampliando e integrando il testo.
<pre>
  $ sudo ls ~/linux/linux-2.6.17.11/Makefile
  Password:
  Makefile
</pre>
 
Inserite la vostra password personale al prompt di password, o la password dell'amministratore di sistema (root). La scelta dipende da come il comando di ''sudo'' è stato impostato. Se non ci sono problemi, e si vede una riga che contiene:
 
<pre> Makefile </pre>
 
allora potete passare alla prossima sezione.


Attraverso l'indice � possibile accedere direttamente alle varie sezioni della configurazione del kernel. Per cui questa guida pu� essere anche usata come veloce riferimento o confronto.
Se ''sudo'' non è installato o non si hanno i diritti appropriati, si provi ad usare il comando ''su'':


Come ultima cosa aggiungo che con questa configurazione riesco a non avere mai interruzioni nella musica che ascolto anche se st� ricompilando il kernel o installando openoffice (queste prestazioni le raggiungo soltanto usando l'[[Esempio_configurazione_kernel#IO_Schedulers__---.3E|I/O Scheduler]] '''cfq''').
<pre>
  $ su
  Password:
  # exit
  exit
  $
</pre>


Happy Debian!
Al prompt della password, inserite la password dell'amministratore di sistema (''root''). Quando ''su'' accetta con successo la password, si è trasferiti ad eseguire ogni cosa con i pieni privilegi di root. State molto attenti mentre siete ''root'', e fate solo il minimo necessario; dopodiché uscite dal programma per tornare con il vostro utente normale.


{{Warningbox|Ottimizzare un kernel per la bassa latenza implica la diminuzione del throughput complessivo del processore, e quindi una diminuzione delle prestazioni assolute. La bassa latenza si ottiene a scapito delle prestazioni, questa una limitazione intrinseca dei sistemi realtime (non specifica di linux).  Quindi questa configurazione sconsigliata per applicazioni server. Per macchine poco potenti (indicativamente sotto il GHz) si consiglia comunque di usare un kernel 2.4 patchato per la bassa latenza, in tal modo possibile ottenere delle ottime prestazioni realtime anche su pc relativamente vetusti.}}


== Descrizione PC ==
== Usare uno script di installazione di una distribuzione ==


Il pc un desktop abbastanza standard, nessuna periferica scsi, hard disk EIDE ata 100, cdrom e masterizzare EIDE, scheda audio Audigy 1, scheda video ati radeon 7000ve, floppy, porte usb (sono abilitati nella configurazione l'uso di chiavette usb).


La connessione avviene tramite scheda di rete ethernet 10/100, quindi non � necessario nessun particolare supporto per modem. Inoltre '''non viene usata l'immagine initrd''' e quindi i relativi supporti (file system, chipset, ecc...) vengono compilati staticamente.
Quasi tutte le distribuzioni hanno uno script chiamato ''installkernel'' che può essere usato dal sistema di creazione del kernel per installarne uno pronto automaticamente nel giusto posto e per modificare il bootloader così che nulla di più debba essere fatto dallo sviluppatore *.


Ecco per completezza l'output di lspci:
<pre>
<pre>
0000:00:00.0 Host bridge: Advanced Micro Devices [AMD] AMD-760 [IGD4-1P] System Controller (rev 13)
Le distribuzioni offrono installkernel solitamente in un pacchetto chiamato mkinitrd, provate ad installare
0000:00:01.0 PCI bridge: Advanced Micro Devices [AMD] AMD-760 [IGD4-1P] AGP Bridge
questo pacchetto se non trovate lo script sulla vostra macchina.
0000:00:07.0 ISA bridge: VIA Technologies, Inc. VT82C686 [Apollo Super South] (rev 40)
0000:00:07.1 IDE interface: VIA Technologies, Inc. VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (rev 06)
0000:00:07.2 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 1a)
0000:00:07.3 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 1a)
0000:00:07.4 SMBus: VIA Technologies, Inc. VT82C686 [Apollo Super ACPI] (rev 40)
0000:00:0b.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
0000:00:0f.0 Multimedia audio controller: Creative Labs SB Audigy (rev 03)
0000:00:0f.1 Input device controller: Creative Labs SB Audigy MIDI/Game port (rev 03)
0000:00:0f.2 FireWire (IEEE 1394): Creative Labs SB Audigy FireWire Port
0000:01:05.0 VGA compatible controller: ATI Technologies Inc Radeon RV100 QY [Radeon 7000/VE]
</pre>
</pre>


== Code maturity level options  ---> ==
Se avete compilato qualsiasi modulo e volete usare questo metodo per installare un kernel, inserite:
  ? ?      [*] Prompt for development and/or incomplete code/drivers        ? ?
  ? ?      [*]  Select only drivers expected to compile cleanly            ? ?


== General setup  ---> ==
'''# make modules_install'''
  ? ?????????????????????????????????????????????????????????????????????????? ?
  ? ?  ()  Local version - append to kernel release                        ? ?
  ? ?  [*] Support for paging of anonymous memory (swap)                    ? ?
  ? ?  [*] System V IPC                                                    ? ?
  ? ?  [ ] POSIX Message Queues                                            ? ?
  ? ?  [*] BSD Process Accounting                                          ? ?
  ? ?  [ ]  BSD Process Accounting version 3 file format                  ? ?
  ? ?  [*] Sysctl support                                                  ? ?
  ? ?  [ ] Auditing support                                                ? ?
  ? ?  [*] Support for hot-pluggable devices                                ? ?
  ? ?  [*] Kernel Userspace Events                                          ? ?
  ? ?  [ ] Kernel .config support                                          ? ?
  ? ?  [ ] Configure standard kernel features (for small systems)  --->    ? ?
  ? ?????????????????????????????????????????????????????????????????????????? ?


== Loadable module support  ---> ==
Questo installerà tutti i moduli che avete compilato e li metterà nelle appropriate locazioni del filesystem per farli trovare correttamente dal nuovo kernel. I moduli sono posti in ''/lib/modules/kernel_version'', dove per ''kernel_version'' si intende la versione del nuovo kernel che state preparando.
  ? ?            [*] Enable loadable module support                          ? ?
  ? ?            [*]  Module unloading                                      ? ?
  ? ?            [ ]    Forced module unloading                            ? ?
  ? ?            [*]  Module versioning support (EXPERIMENTAL)              ? ?
  ? ?            [ ]  Source checksum for all modules                       ? ?
  ? ?            [*]  Automatic kernel module loading                      ? ?


== Processor type and features  ---> ==
Dopo che i moduli sono stati installati con successo, l'immagine principale del kernel deve essere installata:
Questa sezione � particolarmente importante. Qui si seleziona il tipo di processore, l'mtrr, il tipo di preemption. Notare in particolare le voci:


* Preemption Model (Preemptible Kernel (Low-Latency Desktop))
'''# make install'''
* Preempt The Big Kernel Lock


per ottenere bassa latenza e
Questo causerà:


* Timer frequency (1000 HZ)
1. Il sistema di creazione del kernel verificherà che il kernel sia stato correttamente costruito.


per avere un timer pi� preciso.
2. Il sistema di creazione copierà la parte statica nella directory ''/boot'' e rinominerà l'eseguibile sulla base della versione del kernel.


  ? ?????????????????????????????????????????????????????????????????????????? ?
3. Qualsiasi immagine di ramdisk iniziale necessaria verrà creata automaticamente, usando i moduli che sono appena stati installati durante la fase di ''modules_install''.
  ? ?    Subarchitecture Type (PC-compatible)  --->                          ? ?
  ? ?    Processor family (Athlon/Duron/K7)  --->                            ? ?
  ? ?[ ] Generic x86 support                                                ? ?
  ? ?[*] HPET Timer Support                                                  ? ?
  ? ?[ ] Symmetric multi-processing support                                  ? ?
  ? ?    Preemption Model (Preemptible Kernel (Low-Latency Desktop))  --->  ? ?
  ? ?[*] Preempt The Big Kernel Lock                                        ? ?
  ? ?[*] Local APIC support on uniprocessors                                ? ?
  ? ?[*]  IO-APIC support on uniprocessors                                  ? ?
  ? ?[*] Machine Check Exception                                            ? ?
  ? ?<*>  Check for non-fatal errors on AMD Athlon/Duron / Intel Pentium 4  ? ?
  ? ?[ ]  check for P4 thermal throttling interrupt.                       ? ?
  ? ?< > Toshiba Laptop support                                              ? ?
  ? ?< > Dell laptop support                                                ? ?
  ? ?[ ] Enable X86 board specific fixups for reboot                        ? ?
  ? ?< > /dev/cpu/microcode - Intel IA32 CPU microcode support              ? ?
  ? ?<M> /dev/cpu/*/msr - Model-specific register support                    ? ?
  ? ?<M> /dev/cpu/*/cpuid - CPU information support                          ? ?
  ? ?    Firmware Drivers  --->                                              ? ?
  ? ?    High Memory Support (off)  --->                                    ? ?
  ? ?    Memory model (Flat Memory)  --->                                    ? ?
  ? ?[ ] Math emulation                                                      ? ?
  ? ?[*] MTRR (Memory Type Range Register) support                          ? ?
  ? ?[ ] Boot from EFI support (EXPERIMENTAL)                                ? ?
  ? ?[ ] Use register arguments (EXPERIMENTAL)                              ? ?
  ? ?[*] Enable seccomp to safely compute untrusted bytecode                ? ?
  ? ?    Timer frequency (1000 HZ)  --->                                    ? ?
  ? ?[ ] kexec system call (EXPERIMENTAL)                                    ? ?
  ? ?????????????????????????????????????????????????????????????????????????? ?


== Power management options (ACPI, APM)  ---> ==
4. Al programma di bootloader verrà correttamente notificato che un nuovo kernel è presente, e verrà aggiunto nel giusto menu così che l'utente possa selezionarlo la prossima volta che la macchina verrà avviata.
  ? ?[*] Power Management support                                            ? ?
  ? ?[ ]  Power Management Debug Support                                    ? ?
  ? ?[ ]  Software Suspend                                                  ? ?
  ? ?      ACPI (Advanced Configuration and Power Interface) Support  --->  ? ?
  ? ?      APM (Advanced Power Management) BIOS Support  --->                ? ?
  ? ?    CPU Frequency scaling  --->                                        ? ?
=== ACPI (Advanced Configuration and Power Interface) Support  ---> ===
  ? ?  [*] ACPI Support                                                      ? ?
  ? ?  [ ]  Sleep States (EXPERIMENTAL)                                    ? ?
  ? ?  < >  AC Adapter                                                      ? ?
  ? ?  < >  Battery                                                        ? ?
  ? ?  < >  Button                                                          ? ?
  ? ?  <M>  Video                                                          ? ?
  ? ?  < >  Generic Hotkey                                                  ? ?
  ? ?  <M>  Fan                                                            ? ?
  ? ?  <M>  Processor                                                      ? ?
  ? ?  <M>    Thermal Zone                                                  ? ?
  ? ?  < >  ASUS/Medion Laptop Extras                                      ? ?
  ? ?  < >  IBM ThinkPad Laptop Extras                                      ? ?
  ? ?  < >  Toshiba Laptop Extras                                          ? ?
  ? ?  (0)  Disable ACPI for systems before Jan 1st this year              ? ?
  ? ?  [ ]  Debug Statements                                                ? ?
  ? ?  [ ]  Power Management Timer Support                                  ? ?
  ? ?  < >  ACPI0004,PNP0A05 and PNP0A06 Container Driver (EXPERIMENTAL)    ? ?


5. Dopo questo ha finito, il kernel è installato con successo, si può tranquillamente riavviare e provare la nuova immagine di kernel. Notare che questa installazione non sovrascrive nessuna vecchia immagine dei kernel, così se c'è un problema con la vostra nuova immagine del kernel, il vecchio kernel potrà essere selezionato al boot time.


== Bus options (PCI, PCMCIA, EISA, MCA, ISA)  ---> ==
<pre>
Non sono sicuro se la voce "PCI device name database" sia necessaria. Se qualcuno ha informazioni in proposito per favore lo segnali.
* Eccezioni da riportare a questa regola sono Gentoo e altre distribuzioni tipo "from scratch", le quali si
aspettano che l'utente sappia come installare i kernel da solo. Questi tipi di distribuzioni includono la
documentazione su come installare un nuovo kernel, si consulti quest'ultima per l'esatto metodo richiesto.
</pre>


  ? ??????????????????????????????????????????????????????????????????????? ?
== Installazione manuale ==
  ? ?        [*] PCI support                                            ? ?
  ? ?              PCI access mode (Any)  --->                          ? ?
  ? ?        [ ]  PCI Express support                                  ? ?
  ? ?        [ ]  Message Signaled Interrupts (MSI and MSI-X)          ? ?
  ? ?        [ ]  Legacy /proc/pci interface                            ? ?
  ? ?        [*]  PCI device name database                              ? ?
  ? ?        [ ]  PCI Debugging                                        ? ?
  ? ?        [ ] ISA support                                            ? ?
  ? ?        [ ] MCA support                                            ? ?
  ? ?        < > NatSemi SCx200 support                                  ? ?
  ? ?            PCCARD (PCMCIA/CardBus) support  ---> (niente)          ? ?
  ? ?            PCI Hotplug Support  --->            (niente)          ? ?
  ? ??????????????????????????????????????????????????????????????????????? ?


== Executable file formats  ---> ==
  ? ??????????????????????????????????????????????????????????????????????? ?
  ? ?          [*] Kernel support for ELF binaries                        ? ?
  ? ?          <*> Kernel support for a.out and ECOFF binaries            ? ?
  ? ?          <M> Kernel support for MISC binaries                      ? ?
  ? ??????????????????????????????????????????????????????????????????????? ?


== Networking  ---> ==
Se la distribuzione non è provvista del comando ''installkernel'', o si desidera semplicemente fare il lavoro a mano per capire i passi che servono, eccoli qua:
  ? ??????????????????????????????????????????????????????????????????????? ?
  ? ?          [*] Networking support                                    ? ?
  ? ?                Networking options  --->                            ? ?
  ? ?          [ ]  Amateur Radio support  --->                        ? ?
  ? ?          < >  IrDA (infrared) subsystem support  --->            ? ?
  ? ?          < >  Bluetooth subsystem support  --->                  ? ?
  ? ??????????????????????????????????????????????????????????????????????? ?
=== Networking options  ---> ===
Sono attivate solo le opzioni minime per navigare. Nessun firewall, o capacit� di routing � attivata. Se qualcuno sa cosa si pu� ancora togliere � ben gradito un consiglio. Con questa configurazione � possibile fare file-sharing e ricevere trasmissioni broadcast tramite internet.
  ? ??????????????????????????????????????????????????????????????????????? ?
  ? ?      <*> Packet socket                                              ? ?
  ? ?      [*]  Packet socket: mmapped IO                                ? ?
  ? ?      <*> Unix domain sockets                                        ? ?
  ? ?      < > PF_KEY sockets                                            ? ?
  ? ?      [*] TCP/IP networking                                          ? ?
  ? ?      [*]  IP: multicasting                                        ? ?
  ? ?      [ ]  IP: advanced router                                      ? ?
  ? ?      [ ]  IP: kernel level autoconfiguration                      ? ?
  ? ?      < >  IP: tunneling                                            ? ?
  ? ?      < >  IP: GRE tunnels over IP                                  ? ?
  ? ?      [ ]  IP: multicast routing                                    ? ?
  ? ?      [ ]  IP: ARP daemon support (EXPERIMENTAL)                    ? ?
  ? ?      [ ]  IP: TCP syncookie support (disabled per default)        ? ?
  ? ?      < >  IP: AH transformation                                    ? ?
  ? ?      < >  IP: ESP transformation                                  ? ?
  ? ?      < >  IP: IPComp transformation                                ? ?
  ? ?      < >  IP: tunnel transformation                                ? ?
  ? ?      < >  IP: TCP socket monitoring interface                      ? ?
  ? ?      [ ]  TCP: advanced congestion control                        ? ?
  ? ?      < >  The IPv6 protocol                                        ? ?
  ? ?      [ ] Network packet filtering (replaces ipchains)  ---> (niente)? ?
  ? ?          SCTP Configuration (EXPERIMENTAL)  --->            (niente)? ?
  ? ?      < > Asynchronous Transfer Mode (ATM) (EXPERIMENTAL)            ? ?
  ? ?      < > 802.1d Ethernet Bridging                                  ? ?
  ? ?      < > 802.1Q VLAN Support                                        ? ?
  ? ?      < > DECnet Support                                            ? ?
  ? ?      < > ANSI/IEEE 802.2 LLC type 2 Support                        ? ?
  ? ?      < > The IPX protocol                                          ? ?
  ? ?      < > Appletalk protocol support                                ? ?
  ? ?      < > CCITT X.25 Packet Layer (EXPERIMENTAL)                    ? ?
  ? ?      < > LAPB Data Link Driver (EXPERIMENTAL)                      ? ?
  ? ?      [ ] Frame Diverter (EXPERIMENTAL)                              ? ?
  ? ?      < > Acorn Econet/AUN protocols (EXPERIMENTAL)                  ? ?
  ? ?      < > WAN router                                                ? ?
  ? ?      [ ] QoS and/or fair queueing  --->  (niente)                  ? ?
  ? ?          Network testing  --->          (niente)                  ? ?
  ? ?                                                                    ? ?
  ? ??????????????????????????????????????????????????????????????????????? ?


== Device Drivers  ---> ==
I moduli devono essere installati:
  ? ??????????????????????????????????????????????????????????????????????? ?
  ? ?              Generic Driver Options  --->                          ? ?
  ? ?              Memory Technology Devices (MTD)  --->    (niente)    ? ?
  ? ?              Parallel port support  --->              (niente)    ? ?
  ? ?              Plug and Play support  --->              (niente)    ? |
  ? ?              Block devices  --->                                  ? ?
  ? ?              ATA/ATAPI/MFM/RLL support  --->                      ? ?
  ? ?              SCSI device support  --->                            ? ?
  ? ?              Multi-device support (RAID and LVM)  --->  (niente)  ? ?
  ? ?              Fusion MPT device support  --->            (niente)  ? ?
  ? ?              IEEE 1394 (FireWire) support  --->        (niente)  ? ?
  ? ?              I2O device support  --->                              ? ?
  ? ?              Network device support  --->                          ? ?
  ? ?              ISDN subsystem  --->                      (niente)  ? ?
  ? ?              Telephony Support  --->                    (niente)  ? ?
  ? ?              Input device support  --->                            ? ?
  ? ?              Character devices  --->                              ? ?
  ? ?              I2C support  --->                                    ? ?
  ? ?              Dallas's 1-wire bus  --->                  (niente)  ? ?
  ? ?              Hardware Monitoring support  --->                    ? ?
  ? ?              Misc devices  --->                        (niente)  ? ?
  ? ?              Multimedia devices  --->                  (niente)  ? ?
  ? ?              Graphics support  --->                                ? ?
  ? ?              Sound  --->                                          ? ?
  ? ?              USB support  --->                                    ? ?
  ? ?              MMC/SD Card support  --->                  (niente)  ? ?
  ? ?              InfiniBand support  --->                  (niente)  ? ?
  ? ?              SN Devices  --->                          (niente)  ? ?
  ? ??????????????????????????????????????????????????????????????????????? ?
=== Generic Driver Options  ---> === 
  | ?[*] Select only drivers that don't need compile-time external firmwar? ?
  ? ?[*] Prevent firmware from being built                                ? ?
  ? ?< > Hotplug firmware loading support                                ? ?
  ? ?[ ] Driver Core verbose debug messages                              ? ?


<pre>  # make modules_install </pre>


=== Block devices  ---> ===
L'immagine statica del kernel deve essere copiata nella directory /boot. Per un kernel basato su piattaforma i386, fare:
  ? ??????????????????????????????????????????????????????????????????????? ?
  ? ? <M> Normal floppy disk support                                      ? ?
  ? ? < > Compaq SMART2 support                                          ? ?
  ? ? < > Compaq Smart Array 5xxx support                                ? ?
  ? ? < > Mylex DAC960/DAC1100 PCI RAID Controller support                ? ?
  ? ? < > Micro Memory MM5415 Battery Backed RAM support (EXPERIMENTAL)  ? ?
  ? ? <M> Loopback device support                                        ? ?
  ? ? < >  Cryptoloop Support                                            ? ?
  ? ? < > Network block device support                                    ? ?
  ? ? < > Promise SATA SX8 support                                        ? ?
  ? ? < > Low Performance USB Block driver                                ? ?
  ? ? < > RAM disk support                                                ? ?
  ? ? ()  Initramfs source file(s)                                        ? ?
  ? ? [ ] Support for Large Block Devices                                ? ?
  ? ? < > Packet writing on CD/DVD media                                  ? ?
  ? ?    IO Schedulers  --->                                            ? ?
  ? ? < > ATA over Ethernet support                                      ? ?
  ? ??????????????????????????????????????????????????????????????????????? ?
==== IO Schedulers  ---> ====
Questi sono gli scheduler per da usare per l'I/O su disco. Ecco come li descrive il kernel hacker ''Jen Axboe'' ([http://bhhdoa.org.au/pipermail/ck/2006-April/005817.html link]):


:''On Thursday 06 April 2006 20:31, Jens Axboe wrote:
<pre> 
:> Low latency isn't always the primary goal. If you want that, you'd just
  # make kernelversion
:> use noop - that will always get you the lowest latency. deadline is a
  2.6.17.11
:> little worse than noop, but latency is still very good. cfq has higher
</pre>
:> latency, which is a design goal as you simply need to for good
:> throughput. So while deadline does 100ms read latencies for 8 threads
:> reading 8 files, cfq will get you average 700ms latency per thread
:> there. cfq will also maintain 50MiB/sec throughput (or whatever your
:> disk does sequentially) distributed evenly between threads, while
:> deadline will probably do 2MiB/sec there.''


Generalmente il <tt>cfq</tt> d� i migliori risultati grazie al suo elevato throughput, infatti per applicazioni audio di solito non � importante la latenza di accesso al disco ma throughput complessivo.
Notare che la versione del kernel probabilmente sarà differente da quella del vostro. Usate questo valore al posto del testo KERNEL_VERSION nei seguenti passaggi:


In ogni caso meglio compilarli tutti (questo non genera overhead). Di default viene scelto "Anticipatory" ma pu� essere cambiato a sistema avviato con:
<pre>
  # cp arch/i386/boot/bzImage /boot/bzImage-KERNEL_VERSION
  # cp System.map /boot/System.map-KERNEL_VERSION
</pre>


# echo cfq > /sys/block/hda/queue/scheduler
Modificate il bootloader in modo che conosca il nuovo kernel. Questo implica modificare il file di configurazione per il bootloader che si usa, è spiegato più avanti in "Modificare il bootloader per il nuovo kernel" in GRUB e LILO.


''(ad esempio se vogliamo impostare il '''cfq''')''
Se il processo di avvio non funziona, solitamente è perché una immagine iniziale di ramdisk (initial ramdisk) è necessaria. Per crearla correttamente, si usino i passi all'inizio di questo capitolo per installare un kernel automaticamente, poich&eacute; lo script di installazione della distribuzione sa come creare adeguatamente il ramdisk usando gli script e gli strumenti necessari. Dato che ogni distribuzione fa questo in maniera differente, è oltre lo scopo di questo libro ricoprire tutti i differenti metodi di costruzione dell'immagine di ramdisk.


oppure usando il parametro di boot del kernel <code>elevator</code>, es:
Qui c'è uno script comodo che può essere usato per installare un kernel automaticamente invece di dover digitare tutti i precedenti comandi ogni volta:


elevator=cfq
<pre>
  #!/bin/sh
  #
  # installs a kernel
  #
  make modules_install


I valori possibili si ottengono con un cat di <code>/sys/block/hda/queue/scheduler</code> (lo scheduler in uso � indicato tra parentesi quadre).
  # find out what kernel version this is
  for TAG in VERSION PATCHLEVEL SUBLEVEL EXTRAVERSION ; do
    eval `sed -ne "/^$TAG/s/ //gp" Makefile`
  done
  SRC_RELEASE=$VERSION.$PATCHLEVEL.$SUBLEVEL$EXTRAVERSION


Ecco la configurazione:
   # figure out the architecture
  ? ??????????????????????????????????????????????????????????????????????? ?
   ARCH=`grep "CONFIG_ARCH " include/linux/autoconf.h | cut -f 2 -d "\""`
   ? ?                  <*> Anticipatory I/O scheduler                    ? ?
   ? ?                  <*> Deadline I/O scheduler                        ? ?
  ? ?                  <*> CFQ I/O scheduler                              ? ?
  ? ??????????????????????????????????????????????????????????????????????? ?


=== ATA/ATAPI/MFM/RLL support  ---> ===
  # copy the kernel image
  cp arch/$ARCH/boot/bzImage /boot/bzImage-"$SRC_RELEASE"


Qui al posto di "VIA82CXXX chipset support" (alla fine) selezionate il supporto per il chipset del vostro hardware. Per il resto la configurazione � abbastanza generica.
  # copy the System.map file
  cp System.map /boot/System.map-"$SRC_RELEASE"


   ? ??????????????????????????????????????????????????????????????????????? ?
   echo "Installed $SRC_RELEASE for $ARCH"
  ? ?<*> ATA/ATAPI/MFM/RLL support                                        ? ?
</pre>
  ? ?<*>  Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support            ? ?
  ? ?---    Please see Documentation/ide.txt for help/info on IDE drives ? ?
  ? ?[ ]    Support for SATA (deprecated; conflicts with libata SATA driv? ?
  ? ?[ ]    Use old disk-only driver on primary interface                ? ?
  ? ?<*>    Include IDE/ATA-2 DISK support                              ? ?
  ? ?[ ]    Use multi-mode by default                                    ? ?
  ? ?<M>    Include IDE/ATAPI CDROM support                              ? ?
  ? ?< >    Include IDE/ATAPI TAPE support (EXPERIMENTAL)                ? ?
  ? ?< >    Include IDE/ATAPI FLOPPY support                            ? ?
  ? ?< >    SCSI emulation support                                      ? ?
  ? ?[ ]    IDE Taskfile Access                                          ? ?
  ? ?---    IDE chipset support/bugfixes                                ? ?
  ? ?<*>    generic/default IDE chipset support                          ? ?
  ? ?[ ]    CMD640 chipset bugfix/support                                ? ?
  ? ?[*]    PCI IDE chipset support                                      ? ?
  ? ?[ ]      Sharing PCI IDE interrupts support                        ? ?
  ? ?[ ]      Boot off-board chipsets first support                      ? ?
  ? ?< >       Generic PCI IDE Chipset Support                            ? ?
  ? ?< >      OPTi 82C621 chipset enhanced support (EXPERIMENTAL)        ? ?
  ? ?< >      RZ1000 chipset bugfix/support                              ? ?
  ? ?[*]      Generic PCI bus-master DMA support                        ? ?
  ? ?[ ]        Force enable legacy 2.0.X HOSTS to use DMA              ? ?
  ? ?[*]        Use PCI DMA by default when available                    ? ?
  ? ?[ ]          Enable DMA only for disks                              ? ?
  ? ?< >        AEC62XX chipset support                                  ? ?
  ? ?< >        ALI M15x3 chipset support                                ? ?
  ? ?< >        AMD and nVidia IDE support                              ? ?
  ? ?< >        ATI IXP chipset IDE support                              ? ?
  ? ?< >        CMD64{3|6|8|9} chipset support                          ? ?
  ? ?< >        Compaq Triflex IDE support                              ? ?
  ? ?< >        CY82C693 chipset support                                ? ?
  ? ?< >        Cyrix CS5510/20 MediaGX chipset support (VERY EXPERIMENTA? ?
  ? ?< >        Cyrix/National Semiconductor CS5530 MediaGX chipset suppo? ?
  ? ?< >        HPT34X chipset support                                  ? ?
  ? ?< >        HPT36X/37X chipset support                              ? ?
  ? ?< >        National SCx200 chipset support                          ? ?
  ? ?< >        Intel PIIXn chipsets support                            ? ?
  ? ?< >        IT821X IDE support                                      ? ?
  ? ?< >        NS87415 chipset support                                  ? ?
  ? ?< >        PROMISE PDC202{46|62|65|67} support                      ? ?
  ? ?< >        PROMISE PDC202{68|69|70|71|75|76|77} support            ? ?
  ? ?< >        ServerWorks OSB4/CSB5/CSB6 chipsets support              ? ?
  ? ?< >        Silicon Image chipset support                            ? ?
  ? ?< >        SiS5513 chipset support                                  ? ?
  ? ?< >        SLC90E66 chipset support                                ? ?
  ? ?< >        Tekram TRM290 chipset support                            ? ?
  ? ?<*>        VIA82CXXX chipset support                                ? ?
  ? ?[ ]    IGNORE word93 Validation BITS                                ? ?
  ? ??????????????????????????????????????????????????????????????????????? ?


=== SCSI device support  ---> ===
Queste voci sono necessarie per avere l'emulazione scsi ed usare le chiavette usb.
  ? ??????????????????????????????????????????????????????????????????????? ?
  ? ?  <M> SCSI device support                                            ? ?
  ? ?  [*]  legacy /proc/scsi/ support                                  ? ?
  ? ?  ---  SCSI support type (disk, tape, CD-ROM)                      ? ?
  ? ?  <M>  SCSI disk support                                            ? ?
  ? ?  < >  SCSI tape support                                            ? ?
  ? ?  < >  SCSI OnStream SC-x0 tape support                            ? ?
  ? ?  < >  SCSI CDROM support                                          ? ?
  ? ?  <M>  SCSI generic support                                        ? ?
  ? ?  < >  SCSI media changer support                                  ? ?
  ? ?  ---  Some SCSI devices (e.g. CD jukebox) support multiple LUNs    ? ?
  ? ?  [ ]  Probe all LUNs on each SCSI device                          ? ?
  ? ?  [ ]  Verbose SCSI error reporting (kernel size +=12K)            ? ?
  ? ?  [ ]  SCSI logging facility                                        ? ?
  ? ?        SCSI Transport Attributes  --->              (nessuno)      ? ?
  ? ?        SCSI low-level drivers  --->                  (nessuno)      ? ?
  ? ??????????????????????????????????????????????????????????????????????? ?


==  Modificare il bootloader per il nuovo kernel ==


=== I2O device support  ---> ===
Queste voci servono per attivare i sensori (temperatura, ventola, ecc...).


  ? ?                  <M> I2O support                                    ? ?
Esistono due bootloader comuni per i kernel Linux: GRUB e LILO. GRUB è quello maggiormente usato nelle distribuzioni moderne, e fa' alcune cose un po' più facilmente di LILO, ma LILO é tuttora anch'esso utilizzato. Li vedremo entrambi in questa sezione.
  ? ?                  [ ]  Enable Adaptec extensions                    ? ?
  ? ?                  < >  I2O Configuration support                    ? ?
  ? ?                  < >  I2O Bus Adapter OSM                          ? ?
  ? ?                  < >  I2O Block OSM                                ? ?
  ? ?                  < >  I2O SCSI OSM                                ? ?
  ? ?                  <M>  I2O /proc support                            ? ?


=== Network device support  ---> ===
Per determinare quale bootloader il vostro sistema usa, guardate nella directory ''/boot/''. Se esiste una sottodirectory ''grub'':
Tutto deselezionato tranne:
  Ethernet (10 or 100Mbit)  --->
  ? ??????????????????????????????????????????????????????????????????????? ?
  ? ?[*] Ethernet (10 or 100Mbit)                                        ? ?
  ? ?<M>  Generic Media Independent Interface device support            ? ?
  ? ?[*] EISA, VLB, PCI and on board controllers                          ? ?
  ? ?<M> RealTek RTL-8129/8130/8139 PCI Fast Ethernet Adapter support    ? ?
  ? ??????????????????????????????????????????????????????????????????????? ?


<pre>
  $ ls -F /boot | grep grub
  grub/
</pre>


=== Input device support  ---> ===
allora si sta utilizzando GRUB come programma per fare il boot. Se questa directory non è presente, si guardi se è presente il file ''/etc/lilo.conf'':
Tutto delesezionato tranne:
  ? ??????????????????????????????????????????????????????????????????????? ?
  ? ?    --- Generic input layer (needed for keyboard, mouse, ...)      ? ?
  ? ?    ---  Userland interfaces                                      ? ?
  ? ?    ---  Mouse interface                                          ? ?
  ? ?    [*]    Provide legacy /dev/psaux device                        ? ?
  ? ?    (1024)  Horizontal screen resolution                            ? ?
  ? ?    (768)  Vertical screen resolution                              ? ?
  ? ?    [*]  Mouse  --->                                              ? ?
  ? ??????????????????????????????????????????????????????????????????????? ?


==== Mouse  ---> ====
<pre>
Supporto per mouse ps2:
  $ ls /etc/lilo.conf
   <*>   PS/2 mouse
   /etc/lilo.conf
</pre>


=== Character devices  ---> ===
se è presente, state usando LILO come programma per fare il boot.
Attenzione questa sezione � particolarmente delicata. Le due voci da adattare al vostro hardware sono:
I passi che implicano l'aggiunta del nuovo kernel a ognuno di questi programmi sono differenti, per cui si segua solo la sezione che corrisponde al programma che si sta usando.
* AMD Irongate, 761, and 762 chipset support
* ATI Radeon
Per il resto la configurazione dovrebbe essere abbastanza generica.  


Come curiosit�, notare l'ultima voce tramite la quale � possibile aggiungere il supporto per il cos� detto '''[http://www.gnu.org/philosophy/can-you-trust.html "hardware inaffidabile"]''', qui chiamato '''TPM''' (Trusted Platform Module).
==='''GRUB'''===


  ? ??????????????????????????????????????????????????????????????????????? ?
Per fare in modo che GRUB sappia che un nuovo kernel è presente, tutto ciò che dovete fare è modificare il file ''/boot/grub/menu/lst''. Per i dettagli completi della struttura di questo file, e tutte le differenti opzioni disponibili, consultate le pagine di info di GRUB:
  ? ?[ ] Non-standard serial port support                                ? ?
  ? ?    Serial drivers  --->                                            ? ?
  ? ?[*] Legacy (BSD) PTY support                                        ? ?
  ? ?(256) Maximum number of legacy PTY in use                            ? ?
  ? ?    IPMI  --->                                                      ? ?
  ? ?    Watchdog Cards  --->                                            ? ?
  ? ?<M> Intel/AMD/VIA HW Random Number Generator support                ? ?
  ? ?< > /dev/nvram support                                              ? ?
  ? ?<M> Enhanced Real Time Clock Support                                ? ?
  ? ?<M> Generic /dev/rtc emulation                                      ? ?
  ? ?[*]  Extended RTC operation                                        ? ?
  ? ?< > Double Talk PC internal speech card support                      ? ?
  ? ?< > Siemens R3964 line discipline                                    ? ?
  ? ?< > Applicom intelligent fieldbus card support                      ? ?
  ? ?< > Sony Vaio Programmable I/O Control Device support (EXPERIMENTAL) ? ?
  ? ?    Ftape, the floppy tape device driver  --->                      ? ?
  ? ?<M> /dev/agpgart (AGP Support)                                      ? ?
  ? ?< >  ALI chipset support                                            ? ?
  ? ?< >  ATI chipset support                                            ? ?
  ? ?<M>  AMD Irongate, 761, and 762 chipset support                    ? ?
  ? ?< >  AMD Opteron/Athlon64 on-CPU GART support                      ? ?
  ? ?< >  Intel 440LX/BX/GX, I8xx and E7x05 chipset support              ? ?
  ? ?< >  NVIDIA nForce/nForce2 chipset support                          ? ?
  ? ?< >  SiS chipset support                                            ? ?
  ? ?< >  Serverworks LE/HE chipset support                              ? ?
  ? ?< >  VIA chipset support                                            ? ?
  ? ?< >  Transmeta Efficeon support                                    ? ?
  ? ?<M> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)  ? ?
  ? ?< >  3dfx Banshee/Voodoo3+                                          ? ?
  ? ?< >  ATI Rage 128                                                  ? ?
  ? ?<M>  ATI Radeon                                                    ? ?
  ? ?< >  Matrox g200/g400                                              ? ?
  ? ?< >  SiS video cards                                                ? ?
  ? ?< >  Via unichrome video cards                                      ? ?
  ? ?< > ACP Modem (Mwave) support                                        ? ?
  ? ?< > RAW driver (/dev/raw/rawN) (OBSOLETE)                            ? ?
  ? ?[ ] HPET - High Precision Event Timer                                ? ?
  ? ?< > Hangcheck timer                                                  ? ?
  ? ?    TPM devices  --->                                                ? ?
  ? ??????????????????????????????????????????????????????????????????????? ?


=== I2C support  ---> ===
Selezionati solo:
  <*>  I2C device interface


e le sottovoci degli algoritmi
'''$ info grub'''


  I2C Algorithms  --->
  <M> I2C PCF 8584 interfaces
  <M> I2C PCA 9564 interfaces


e del chip che governa i sensori (questo � da adattare al proprio hardware):
Il metodo più veloce per aggiungere una nuova voce kernel a ''/boot/grub/menu.lst'' è quello di copiare una voce già esistente. Per esempio, considerate il seguente ''menu.lst'' da un sistema Gentoo:


  <*> VIA 82C586B
<pre>
  timeout 300
  default 0


=== Hardware Monitoring support  ---> ===
  splashimage=(hd0,0)/grub/splash.xpm.gz
Solo le voci (da adattare al proprio hardware):
  <M> Hardware Monitoring support
  <M>  VIA686A


=== Graphics support  ---> ===
  title 2.6.16.11
Qui si configura il supporto per il frame buffer. In genere � consigliabile usare il driver generico vesa:
    root (hd0,0)
    kernel /bzImage-2.6.16.11 root=/dev/sda2 vga=0x0305


* VESA VGA graphics support
  title 2.6.16
    root (hd0,0)
    kernel /bzImage-2.6.16 root=/dev/sda2 vga=0x0305
</pre>


tuttavia nel mio caso uso il modulo radeon che mi permette di avere un frame buffer accelerato, con una risoluzione di 1280x1024 e un'alta frequenza di refresh (~ 74 Hz). Nella mia esperienza il modulo vesa ha la precedenza sul radeon, quindi per usare quest'ultimo bisogna disabilitare il vesa.
La linea che comincia con la parola title definisce una nuova voce di kernel, in questo modo questo file contiene due voci. Copiate semplicemente un blocco di linee che cominciano con la linea title, come:


  ? ??????????????????????????????????????????????????????????????????????? ?
<pre>
  ? ?  <*> Support for frame buffer devices                              ? ?
   title 2.6.16.11
  ? ?  ---  Enable Video Mode Handling Helpers                          ? ?
    root (hd0,0)
  ? ?  [ ]  Enable Tile Blitting Support                                ? ?
    kernel /bzImage-2.6.16.11 root=/dev/sda2 vga=0x0305
  ? ?  < >  Cirrus Logic support                                        ? ?
</pre>
  ? ?  < >   Permedia2 support                                          ? ?
   ? ?  < >  CyberPro 2000/2010/5000 support                            ? ?
  ? ?  < >  Arc Monochrome LCD board support                            ? ?
  ? ?  [ ]  Chips 69000 display support                                ? ?
  ? ?  [ ]  IMS Twin Turbo display support                              ? ?
  ? ?  < >  VGA 16-color graphics support                              ? ?
  ? ?  [ ]  VESA VGA graphics support                                  ? ?
  ? ?  < >  Hercules mono graphics support                              ? ?
  ? ?  < >  nVidia Framebuffer Support                                  ? ?
  ? ?  < >  nVidia Riva support                                        ? ?
  ? ?  < >  Intel 810/815 support (EXPERIMENTAL)                       ? ?
  ? ?  < >  Intel 830M/845G/852GM/855GM/865G support (EXPERIMENTAL)    ? ?
  ? ?  < >  Matrox acceleration                                        ? ?
  ? ?  < >  ATI Radeon display support (Old driver)                    ? ?
  ? ?  <*>  ATI Radeon display support                                  ? ?
  ? ?  [*]    DDC/I2C for ATI Radeon support                            ? ?
  ? ?  [ ]    Lots of debug output from Radeon driver                  ? ?
  ? ?  < >  ATI Rage128 display support                                ? ?
  ? ?  < >  ATI Mach64 display support                                  ? ?
  ? ?  < >  S3 Savage support                                          ? ?
  ? ?  < >  SiS acceleration                                            ? ?
  ? ?  < >  NeoMagic display support                                    ? ?
  ? ?  < >  IMG Kyro support                                            ? ?
  ? ?  < >  3Dfx Banshee/Voodoo3 display support                        ? ?
  ? ?  < >  3Dfx Voodoo Graphics (sst1) support                        ? ?
  ? ?  < >  Trident support                                            ? ?
  ? ?  [ ]  AMD Geode family framebuffer support (EXPERIMENTAL)        ? ?
  ? ?  < > Epson S1D13XXX framebuffer support                            ? ?
  ? ?  < > Virtual Frame Buffer support (ONLY FOR TESTING!)              ? ?
  ? ?      Console display driver support  --->                         ? ?
  ? ?      Logo configuration  --->                                      ? ?
  ? ?  [ ] Backlight & LCD device support  --->                          ? ?
  ? ?                                                                    ? ?
  ? ??????????????????????????????????????????????????????????????????????? ?


==== Console display driver support  ---> ====
Dopodiché aggiungete il blocco alla fine del file, e modificate il numero di versione con la nuova versione del nuovo kernel che si è appena installato. Il titolo non ha alcuna importanza, purché unico, ma visualizzato nel menu di boot, per cui si dovrebbe dargli qualcosa che abbia un significato. Nel nostro esempio, abbiamo installato il kernel 2.6.17.11, per tanto la copia finale del file assomiglierà a:
  ? ??????????????????????????????????????????????????????????????????????? ?
  ? ?                --- VGA text console                                ? ?
  ? ?                [*]  Video mode selection support                  ? ?
  ? ?                <*> Framebuffer Console support                      ? ?
  ? ?                [ ] Select compiled-in fonts                        ? ?
  ? ??????????????????????????????????????????????????????????????????????? ?


=== Sound  ---> ===
<pre>
  ? ??????????????????????????????????????????????????????????????????????? ?
   timeout 300
  ? ?            <*> Sound card support                                  ? ?
   default 0
   ? ?                Advanced Linux Sound Architecture  --->              ? ?
  ? ?                Open Sound System  --->                    (niente) ? ?
   ? ??????????????????????????????????????????????????????????????????????? ?


==== Advanced Linux Sound Architecture ====
  splashimage=(hd0,0)/grub/splash.xpm.gz
Supporti generici ed emulazione oss:
  ? ??????????????????????????????????????????????????????????????????????? ?
  ? ?              <*> Advanced Linux Sound Architecture                ? ?
  ? ?              <*>  Sequencer support                              ? ?
  ? ?              <M>    Sequencer dummy client                        ? ?
  ? ?              <M>  OSS Mixer API                                  ? ?
  ? ?              <M>  OSS PCM (digital audio) API                    ? ?
  ? ?              [*]  OSS Sequencer API                              ? ?
  ? ?              <M>  RTC Timer support                              ? ?
  ? ?              [ ]  Verbose printk                                  ? ?
  ? ?              [ ]  Debug                                          ? ?
  ? ?                    Generic devices  --->                          ? ?
  ? ?                    PCI devices  --->                              ? ?
  ? ?                    USB devices  --->                              ? ?
  ? ??????????????????????????????????????????????????????????????????????? ?


===== Generic devices  ---> =====
  title 2.6.16.11
Qui seleziono solo il virtualmidi che talvolta pu� tornare utile:
    root (hd0,0)
  <M> Virtual MIDI soundcard 
    kernel /bzImage-2.6.16.11 root=/dev/sda2 vga=0x0305


===== PCI devices  ---> =====
  title 2.6.16
Scegliere il driver delle propria scheda audio PCI, nel mio caso:
    root (hd0,0)
  <M> Emu10k1 (SB Live!, Audigy, E-mu APS)
    kernel /bzImage-2.6.16 root=/dev/sda2 vga=0x0305


===== USB devices  ---> =====
  title 2.6.17.11
Da selezionare solo se si possiedono periferiche audio usb, io non ne possiedo e non seleziono niente.
    root (hd0,0)
    kernel /bzImage-2.6.17.11 root=/dev/sda2 vga=0x0305
</pre>


=== USB support  ---> ===
Dopo che si è salvato il file, riavviate il sistema e assicuratevi che il titolo della nuova immagine del kernel sia presente nel menu di boot. Usate la freccia verso il basso per evidenziare la versione del nuovo kernel, e premete enter per avviare la nuova immagine.
In questa sezione si attiva il supporto per l'usb. Se avete porte usb1 dovrete scegliere tra:


* OHCI HCD support
==='''LILO'''===
* UHCI HCD (most Intel and VIA) support


a seconda del vostro controller usb. Se invece avete un controller usb2 dovrete scegliere:
Per fare in modo che LILO sappia che un nuovo kernel è presente, dovete modificare il file di configurazione ''/etc/lilo.conf'' ed eseguire il comando ''lilo'' per applicare le modifiche fatte al file di configurazione. Per i dettagli completi sulla struttura del file di configurazione di LILO, consultate la manpage di LILO:


* EHCI HCD (USB 2.0) support
'''$ man lilo'''


Non metto il supporto HID non possedendo nessuna periferica che lo richiede. Inoltre la mia connessione � tramite scheda di rete, quindi non seleziono nessuna voce relativa a periferiche di networking usb.
Il modo pi&ugrave; facile per aggiungere una nuova voce di kernel nel file ''/etc/lilo.conf'' è copiare una voce esistente. Per esempio, considerate il seguente file di configurazione di LILO di un sistema Gentoo:


  ? ??????????????????????????????????????????????????????????????????????? ?
<pre>
  ? ?<M> Support for Host-side USB                                        ? ?
   boot=/dev/hda
  ? ?[ ]  USB verbose debug messages                                    ? ?
   prompt
  ? ?---  Miscellaneous USB options                                      ? ?
   timeout=50
  ? ?[*]  USB device filesystem                                          ? ?
   default=2.6.12
  ? ?[*]  Enforce USB bandwidth allocation (EXPERIMENTAL)                ? ?
  ? ?[ ]  Dynamic USB minor allocation (EXPERIMENTAL)                    ? ?
  ? ?[ ]  USB suspend/resume (EXPERIMENTAL)                              ? ?
  ? ?---  USB Host Controller Drivers                                    ? ?
  ? ?< >  EHCI HCD (USB 2.0) support                                    ? ?
  ? ?< >  ISP116X HCD support                                            ? ?
  ? ?< >  OHCI HCD support                                              ? ?
  ? ?<M>  UHCI HCD (most Intel and VIA) support                          ? ?
  ? ?< >  SL811HS HCD support                                            ? ?
  ? ?---  USB Device Class drivers                                      ? ?
  ? ?< >  USB Audio support                                              ? ?
  ? ?< >  USB Bluetooth TTY support                                      ? ?
  ? ?< >  USB MIDI support                                              ? ?
  ? ?< >  USB Modem (CDC ACM) support                                    ? ?
  ? ?<M>  USB Printer support                                            ? ?
  ? ?---  NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may als? ?
  ? ?<M>  USB Mass Storage support                                      ? ?
  ? ?[ ]    USB Mass Storage verbose debug                              ? ?
  ? ?[ ]    Datafab Compact Flash Reader support (EXPERIMENTAL)          ? ?
  ? ?[ ]    Freecom USB/ATAPI Bridge support                            ? ?
  ? ?[ ]    ISD-200 USB/ATA Bridge support                              ? ?
  ? ?[ ]    Microtech/ZiO! CompactFlash/SmartMedia support              ? ?
  ? ?[ ]    USBAT/USBAT02-based storage support (EXPERIMENTAL)          ? ?
  ? ?[ ]    SanDisk SDDR-09 (and other SmartMedia) support (EXPERIMENTAL)? ?
  ? ?[ ]    SanDisk SDDR-55 SmartMedia support (EXPERIMENTAL)            ? ?
  ? ?[ ]    Lexar Jumpshot Compact Flash Reader (EXPERIMENTAL)          ? ?
  ? ?---  USB Input Devices                                              ? ?
  ? ?< >   USB Human Interface Device (full HID) support                  ? ?
   ? ?        USB HID Boot Protocol drivers  --->          (nessuno)      ? ?
  ? ?< >  Aiptek 6000U/8000U tablet support                              ? ?
  ? ?< >  Wacom Intuos/Graphire tablet support                          ? ?
  ? ?< >  Acecad Flair tablet support                                    ? ?
   ? ?< >  KB Gear JamStudio tablet support                              ? ?
   ? ?< >  Griffin PowerMate and Contour Jog support                      ? ?
   ? ?< >  MicroTouch USB Touchscreen Driver                              ? ?
  ? ?< >  ITM Touch USB Touchscreen Driver                              ? ?
  ? ?< >  eGalax TouchKit USB Touchscreen Driver                        ? ?
  ? ?< >  X-Box gamepad support                                          ? ?
  ? ?< >  ATI / X10 USB RF remote control                                ? ?
  ? ?< >  Keyspan DMR USB remote control (EXPERIMENTAL)                  ? ?
  ? ?---  USB Imaging devices                                            ? ?
  ? ?< >  USB Mustek MDC800 Digital Camera support (EXPERIMENTAL)        ? ?
  ? ?< >  Microtek X6USB scanner support                                ? ?
  ? ?---  USB Multimedia devices                                        ? ?
  ? ?< >  DABUSB driver                                                  ? ?
  ? ?---  Video4Linux support is needed for USB Multimedia device support? ?
  ? ?      USB Network Adapters  --->                    (nessuno)      ? ?
  ? ?[ ]  USB Monitor                                                    ? ?
  ? ?---  USB port drivers                                              ? ?
  ? ?      USB Serial Converter support  --->            (nessuno)      ? ?
  ? ?---  USB Miscellaneous drivers                                      ? ?
  ? ?< >  EMI 6|2m USB Audio interface support                          ? ?
  ? ?< >  EMI 2|6 USB Audio interface support                            ? ?
  ? ?< >  USB Auerswald ISDN support (EXPERIMENTAL)                      ? ?
  ? ?< >  USB Diamond Rio500 support (EXPERIMENTAL)                      ? ?
  ? ?< >  USB Lego Infrared Tower support (EXPERIMENTAL)                ? ?
  ? ?< >  USB LCD driver support                                        ? ?
  ? ?< >  USB LED driver support                                        ? ?
  ? ?< >  Cypress USB thermometer driver support                        ? ?
  ? ?< >  USB PhidgetKit support                                        ? ?
  ? ?< >  USB PhidgetServo support                                      ? ?
  ? ?< >  Siemens ID USB Mouse Fingerprint sensor support                ? ?
  ? ?< >  USB LD driver                                                  ? ?
  ? ?< >  USB testing driver (DEVELOPMENT)                              ? ?
  ? ?      USB DSL modem support  --->                        (nessuno)  ? ?
  ? ?    USB Gadget Support  --->                            (nessuno)  ? ?
  ? ??????????????????????????????????????????????????????????????????????? ?


== File systems  ---> ==
  image=/boot/bzImage-2.6.15
Qui sceglieremo i filesystem che il nostro sistema dovr� supportare. Notare la presenza del nuovo inotify, usato ad esempio da beagle.
     label=2.6.15
  ? ??????????????????????????????????????????????????????????????????????? ?
     read-only
  ? ?    <*> Second extended fs support                                  ? ?
    root=/dev/hda2
  ? ?    [ ]  Ext2 extended attributes                                  ? ?
  ? ?    [ ]  Ext2 execute in place support                              ? ?
  ? ?    <*> Ext3 journalling file system support                        ? ?
  ? ?    [*]  Ext3 extended attributes                                  ? ?
  ? ?    [ ]     Ext3 POSIX Access Control Lists                          ? ?
  ? ?    [ ]     Ext3 Security Labels                                    ? ?
  ? ?    [ ] JBD (ext3) debugging support                                ? ?
  ? ?    <*> Reiserfs support                                            ? ?
  ? ?    [ ]  Enable reiserfs debug mode                                ? ?
  ? ?    [ ]  Stats in /proc/fs/reiserfs                                ? ?
  ? ?    [ ]  ReiserFS extended attributes                              ? ?
  ? ?    < > JFS filesystem support                                      ? ?
  ? ?        XFS support  --->                                            ? ?
  ? ?    < > Minix fs support                                            ? ?
  ? ?    < > ROM file system support                                      ? ?
  ? ?    [*] Inotify file change notification support                    ? ?
  ? ?    [ ] Quota support                                                ? ?
  ? ?    < > Kernel automounter support                                  ? ?
  ? ?    <M> Kernel automounter version 4 support (also supports v3)      ? ?
  ? ?        CD-ROM/DVD Filesystems  --->                                ? ?
  ? ?        DOS/FAT/NT Filesystems  --->                                ? ?
  ? ?        Pseudo filesystems  --->                                    ? ?
  ? ?        Miscellaneous filesystems  --->  (niente)                  ? ?
  ? ?        Network File Systems  --->                                  ? ?
  ? ?        Partition Types  --->            (niente)                  ? ?
  ? ?        Native Language Support  --->                                ? ?
  ? ??????????????????????????????????????????????????????????????????????? ?


Ecco ora le sottovoci non vuote:
  image=/boot/bzImage-2.6.12
    label=2.6.12
    read-only
    root=/dev/hda2
</pre>


=== CD-ROM/DVD Filesystems  ---> ===
La linea che comincia con la parola image= definisce una nuova voce kernel, quindi questo file contiene due voci. Copiate semplicemente un blocco di linee che cominciano con image=, come:
  ? ??????????????????????????????????????????????????????????????????????? ?
  ? ?            <M> ISO 9660 CDROM file system support                  ? ?
  ? ?            [*]  Microsoft Joliet CDROM extensions                ? ?
  ? ?            [*]  Transparent decompression extension              ? ?
  ? ?            < > UDF file system support                            ? ?
  ? ??????????????????????????????????????????????????????????????????????? ?


=== DOS/FAT/NT Filesystems  ---> ===
<pre>
  ? ??????????????????????????????????????????????????????????????????????? ?
  image=/boot/bzImage-2.6.15
  ? ?              <M> MSDOS fs support                                  ? ?
    label=2.6.15
  ? ?              <M> VFAT (Windows-95) fs support                      ? ?
    read-only
  ? ?              (850) Default codepage for FAT                        ? ?
    root=/dev/hda2
  ? ?              (iso8859-1) Default iocharset for FAT                ? ?
</pre>
  ? ?              <M> NTFS file system support                          ? ?
  ? ?              [*]  NTFS debugging support                          ? ?
  ? ?              [*]  NTFS write support                              ? ?
  ? ??????????????????????????????????????????????????????????????????????? ?


=== Pseudo filesystems  ---> ===
Aggiungete dopo il blocco alla fine del file, e modificate il numero di versione per contenere quella del nuovo kernel appena installato. La label non ha alcuna importanza, purché unica, ma è visualizzata nel menu di boot, per cui dovreste dargli qualcosa di sensato. Nel nostro esempio, abbiamo installato il kernel 2.6.17.11, per cui la copia finale del file sarà:
Molto importante questa sezione. Il server audio a bassa latenza '''jack''' necessita della voce
* Virtual memory file system support
per poter funzionare correttamente.


<pre>
  boot=/dev/hda
  prompt
  timeout=50
  default=2.6.12


   ? ??????????????????????????????????????????????????????????????????????? ?
   image=/boot/bzImage-2.6.15
  ? ?      [*] /proc file system support                                  ? ?
    label=2.6.15
  ? ?      [*]  /proc/kcore support                                      ? ?
    read-only
  ? ?      [ ] /dev/pts Extended Attributes                              ? ?
    root=/dev/hda2
  ? ?      [*] Virtual memory file system support (former shm fs)        ? ?
  ? ?      [ ]  tmpfs Extended Attributes                                ? ?
  ? ?      [ ] HugeTLB file system support                                ? ?
  ? ??????????????????????????????????????????????????????????????????????? ?
=== Network File Systems  ---> ===
Attivo il supporto per il NFS (Network File System), bastano le voci:
  <M> NFS file system support
  <M> NFS server support


=== Native Language Support  ---> ===
  image=/boot/bzImage-2.6.12
Non sono sicuro che questa sia la configurazione ottimale, la riporto solo per completezza. Sono elencate le sole voci selezionate:
    label=2.6.12
  ? ???????????????????????????????????????????????????????????????????????????? ?
    read-only
  ? ? <*> Base native language support                                        ? ?
    root=/dev/hda2
  ? ? (UTF8) Default NLS Option                                                ? ?
 
   ? ? <M>  Codepage 850 (Europe)                                              ? ?
   image=/boot/bzImage-2.6.17
  ? ? <M>  Codepage 852 (Central/Eastern Europe)                              ? ?
    label=2.6.17
  ? ? <M>  NLS ISO 8859-1  (Latin 1; Western European Languages)              ? ?
    read-only
  ? ? <M>  NLS ISO 8859-2 (Latin 2; Slavic/Central European Languages)      ? ?
    root=/dev/hda2
  ? ? <M>  NLS ISO 8859-15 (Latin 9; Western European Languages with Euro)    ? ?
</pre>
  ? ? <M>   NLS UTF8                                                          ? ?
  ? ???????????????????????????????????????????????????????????????????????????? ?


== Profiling support  ---> ==
Dopo aver salvato il file, lanciate il programma ''/sbin/lilo'' per salvare i cambiamenti del file di configurazione nella sezione di boot del disco:
Niente, non siamo sviluppatori del kernel (almeno io :-P).


== Kernel hacking  ---> ==
<pre> # /sbin/lilo </pre>
Con queste opzioni si attivano i tasti magici che permettono di uscire da configurazione di stallo del sistema. Molto utile se si provano molti sofware audio (e non solo) sperimentali che rischiano di destabilizzare il sistema.
Per maggiori informazioni vedere la documentazione del kernel.
  ? ??????????????????????????????????????????????????????????????????????? ?
  ? ?      [ ] Show timing information on printks                        ? ?
  ? ?      [*] Kernel debugging                                          ? ?
  ? ?      [*]  Magic SysRq key                                          ? ?
  ? ?      (14)  Kernel log buffer size (16 => 64KB, 17 => 128KB)        ? ?
  ? ?      [ ]  Collect scheduler statistics                            ? ?
  ? ?      [ ]  Debug memory allocations                                ? ?
  ? ?      [ ]  Debug preemptible kernel                                ? ?
  ? ?      [ ]  Spinlock debugging                                      ? ?
  ? ?      [ ]  Sleep-inside-spinlock checking                          ? ?
  ? ?      [ ]  kobject debugging                                        ? ?
  ? ?      [ ]  Compile the kernel with debug info                      ? ?
  ? ?      [ ]  Debug Filesystem                                        ? ?
  ? ?      [ ]  Compile the kernel with frame pointers                  ? ?
  ? ?      [*]  Check for stack overflows                                ? ?
  ? ?      [ ]  Kprobes                                                  ? ?
  ? ?      [ ]  Stack utilization instrumentation                        ? ?
  ? ?      [ ]  Page alloc debugging                                    ? ?
  ? ?      [ ]  Use 4Kb for kernel stacks instead of 8Kb                ? ?
  ? ??????????????????????????????????????????????????????????????????????? ?


== Security options  ---> ==
Ora il sistema può essere riavviato in sicurezza. La scelta del nuovo kernel si può vedere tra le scelte disponibili al momento del boot. Usate la freccia verso il basso per evidenziare la versione del nuovo kernel, premete Invio per avviare la nuova immagine.
Queste voci sono necessarie per poter compilare successivamente il modulo realtime-lsm che permette di eseguire applicazioni in realtime anche ad utenti non-root.
  ? ??????????????????????????????????????????????????????????????????????? ?
  ? ?          [ ] Enable access key retention support                    ? ?
  ? ?          [*] Enable different security models                      ? ?
  ? ?          [ ]  Socket and Networking Security Hooks                ? ?
  ? ?          <M>  Default Linux Capabilities                          ? ?
  ? ?          < >  Root Plug Support                                    ? ?
  ? ?          < >  BSD Secure Levels                                    ? ?
  ? ?          [*]  NSA SELinux Support                                  ? ?
  ? ?          [ ]    NSA SELinux boot parameter                        ? ?
  ? ?          [ ]    NSA SELinux runtime disable                        ? ?
  ? ?          [*]    NSA SELinux Development Support                    ? ?
  ? ?          [ ]    NSA SELinux AVC Statistics                        ? ?
  ? ?          (1)    NSA SELinux checkreqprot default value            ? ?
  ? ??????????????????????????????????????????????????????????????????????? ?
== Cryptographic options  ---> ==
Normalmente vengono attivate queste opzioni nelle reti wireless o comunque nelle configurazioni in cui i dati vengono criptati (vpn, etc.)


Un esempio potrebbe essere quello della configurazione di rete wireless (mi viene in mente wpasupplicant) in cui si imposta la connessione criptata.


== Library routines  ---> ==
----
Neanche qui niente, qualcuno sa se va bene?
This is an indipendent translation of the book [http://www.kroah.com/lkn/ Linux Kernel in a Nutshell] by [http://www.kroah.com/log/ Greg Kroah-Hartman]. This translation (like the original work) is available under the terms of [http://creativecommons.org/licenses/by-sa/2.5/ Creative Commons Attribution-ShareAlike 2.5].
----


[http://www.kernel.org/pub/linux/kernel/people/gregkh/lkn/lkn_pdf/ch05.pdf ''Capitolo originale'']
[[Categoria:Kernel]]
[[Categoria:Kernel]]

Versione delle 18:13, 22 ago 2007

Torna all'indice: Linux Kernel in a Nutshell

I precedenti capitoli hanno mostrato come scaricare e compilare il kernel. Ora che si ha un file eseguibile -- con tutti i moduli compilati -- è ora di installare il kernel e provare a fare il boot. In questo capitolo, a differenza dei precedenti, tutti i comandi necessitano di essere eseguiti come utente root. Questo può essere fatto anteponendo ad ogni comando sudo, usando il comando su per diventare root, oppure accedendo come root.

Per vedere se si ha sudo installato e gli appropriati diritti di accesso, lanciate:

  $ sudo ls ~/linux/linux-2.6.17.11/Makefile
  Password:
  Makefile

Inserite la vostra password personale al prompt di password, o la password dell'amministratore di sistema (root). La scelta dipende da come il comando di sudo è stato impostato. Se non ci sono problemi, e si vede una riga che contiene:

 Makefile 

allora potete passare alla prossima sezione.

Se sudo non è installato o non si hanno i diritti appropriati, si provi ad usare il comando su:

  $ su
  Password:
  # exit
  exit
  $

Al prompt della password, inserite la password dell'amministratore di sistema (root). Quando su accetta con successo la password, si è trasferiti ad eseguire ogni cosa con i pieni privilegi di root. State molto attenti mentre siete root, e fate solo il minimo necessario; dopodiché uscite dal programma per tornare con il vostro utente normale.


Usare uno script di installazione di una distribuzione

Quasi tutte le distribuzioni hanno uno script chiamato installkernel che può essere usato dal sistema di creazione del kernel per installarne uno pronto automaticamente nel giusto posto e per modificare il bootloader così che nulla di più debba essere fatto dallo sviluppatore *.

Le distribuzioni offrono installkernel solitamente in un pacchetto chiamato mkinitrd, provate ad installare 
questo pacchetto se non trovate lo script sulla vostra macchina.

Se avete compilato qualsiasi modulo e volete usare questo metodo per installare un kernel, inserite:

# make modules_install

Questo installerà tutti i moduli che avete compilato e li metterà nelle appropriate locazioni del filesystem per farli trovare correttamente dal nuovo kernel. I moduli sono posti in /lib/modules/kernel_version, dove per kernel_version si intende la versione del nuovo kernel che state preparando.

Dopo che i moduli sono stati installati con successo, l'immagine principale del kernel deve essere installata:

# make install

Questo causerà:

1. Il sistema di creazione del kernel verificherà che il kernel sia stato correttamente costruito.

2. Il sistema di creazione copierà la parte statica nella directory /boot e rinominerà l'eseguibile sulla base della versione del kernel.

3. Qualsiasi immagine di ramdisk iniziale necessaria verrà creata automaticamente, usando i moduli che sono appena stati installati durante la fase di modules_install.

4. Al programma di bootloader verrà correttamente notificato che un nuovo kernel è presente, e verrà aggiunto nel giusto menu così che l'utente possa selezionarlo la prossima volta che la macchina verrà avviata.

5. Dopo questo ha finito, il kernel è installato con successo, si può tranquillamente riavviare e provare la nuova immagine di kernel. Notare che questa installazione non sovrascrive nessuna vecchia immagine dei kernel, così se c'è un problema con la vostra nuova immagine del kernel, il vecchio kernel potrà essere selezionato al boot time.

 * Eccezioni da riportare a questa regola sono Gentoo e altre distribuzioni tipo "from scratch", le quali si
 aspettano che l'utente sappia come installare i kernel da solo. Questi tipi di distribuzioni includono la 
 documentazione su come installare un nuovo kernel, si consulti quest'ultima per l'esatto metodo richiesto.

Installazione manuale

Se la distribuzione non è provvista del comando installkernel, o si desidera semplicemente fare il lavoro a mano per capire i passi che servono, eccoli qua:

I moduli devono essere installati:

  # make modules_install 

L'immagine statica del kernel deve essere copiata nella directory /boot. Per un kernel basato su piattaforma i386, fare:

  
  # make kernelversion 
  2.6.17.11

Notare che la versione del kernel probabilmente sarà differente da quella del vostro. Usate questo valore al posto del testo KERNEL_VERSION nei seguenti passaggi:

  # cp arch/i386/boot/bzImage /boot/bzImage-KERNEL_VERSION
  # cp System.map /boot/System.map-KERNEL_VERSION

Modificate il bootloader in modo che conosca il nuovo kernel. Questo implica modificare il file di configurazione per il bootloader che si usa, è spiegato più avanti in "Modificare il bootloader per il nuovo kernel" in GRUB e LILO.

Se il processo di avvio non funziona, solitamente è perché una immagine iniziale di ramdisk (initial ramdisk) è necessaria. Per crearla correttamente, si usino i passi all'inizio di questo capitolo per installare un kernel automaticamente, poiché lo script di installazione della distribuzione sa come creare adeguatamente il ramdisk usando gli script e gli strumenti necessari. Dato che ogni distribuzione fa questo in maniera differente, è oltre lo scopo di questo libro ricoprire tutti i differenti metodi di costruzione dell'immagine di ramdisk.

Qui c'è uno script comodo che può essere usato per installare un kernel automaticamente invece di dover digitare tutti i precedenti comandi ogni volta:

  #!/bin/sh
  #
  # installs a kernel
  #
  make modules_install

  # find out what kernel version this is
  for TAG in VERSION PATCHLEVEL SUBLEVEL EXTRAVERSION ; do
    eval `sed -ne "/^$TAG/s/ //gp" Makefile`
  done
  SRC_RELEASE=$VERSION.$PATCHLEVEL.$SUBLEVEL$EXTRAVERSION

  # figure out the architecture
  ARCH=`grep "CONFIG_ARCH " include/linux/autoconf.h | cut -f 2 -d "\""`

  # copy the kernel image
  cp arch/$ARCH/boot/bzImage /boot/bzImage-"$SRC_RELEASE"

  # copy the System.map file
  cp System.map /boot/System.map-"$SRC_RELEASE"

  echo "Installed $SRC_RELEASE for $ARCH"


Modificare il bootloader per il nuovo kernel

Esistono due bootloader comuni per i kernel Linux: GRUB e LILO. GRUB è quello maggiormente usato nelle distribuzioni moderne, e fa' alcune cose un po' più facilmente di LILO, ma LILO é tuttora anch'esso utilizzato. Li vedremo entrambi in questa sezione.

Per determinare quale bootloader il vostro sistema usa, guardate nella directory /boot/. Se esiste una sottodirectory grub:

  $ ls -F /boot | grep grub
  grub/

allora si sta utilizzando GRUB come programma per fare il boot. Se questa directory non è presente, si guardi se è presente il file /etc/lilo.conf:

  $ ls /etc/lilo.conf
  /etc/lilo.conf

se è presente, state usando LILO come programma per fare il boot. I passi che implicano l'aggiunta del nuovo kernel a ognuno di questi programmi sono differenti, per cui si segua solo la sezione che corrisponde al programma che si sta usando.

GRUB

Per fare in modo che GRUB sappia che un nuovo kernel è presente, tutto ciò che dovete fare è modificare il file /boot/grub/menu/lst. Per i dettagli completi della struttura di questo file, e tutte le differenti opzioni disponibili, consultate le pagine di info di GRUB:


$ info grub


Il metodo più veloce per aggiungere una nuova voce kernel a /boot/grub/menu.lst è quello di copiare una voce già esistente. Per esempio, considerate il seguente menu.lst da un sistema Gentoo:

  timeout 300
  default 0

  splashimage=(hd0,0)/grub/splash.xpm.gz

  title 2.6.16.11
    root (hd0,0)
    kernel /bzImage-2.6.16.11 root=/dev/sda2 vga=0x0305

  title 2.6.16
    root (hd0,0)
    kernel /bzImage-2.6.16 root=/dev/sda2 vga=0x0305

La linea che comincia con la parola title definisce una nuova voce di kernel, in questo modo questo file contiene due voci. Copiate semplicemente un blocco di linee che cominciano con la linea title, come:

  title 2.6.16.11
    root (hd0,0)
    kernel /bzImage-2.6.16.11 root=/dev/sda2 vga=0x0305

Dopodiché aggiungete il blocco alla fine del file, e modificate il numero di versione con la nuova versione del nuovo kernel che si è appena installato. Il titolo non ha alcuna importanza, purché unico, ma visualizzato nel menu di boot, per cui si dovrebbe dargli qualcosa che abbia un significato. Nel nostro esempio, abbiamo installato il kernel 2.6.17.11, per tanto la copia finale del file assomiglierà a:

  timeout 300
  default 0

  splashimage=(hd0,0)/grub/splash.xpm.gz

  title 2.6.16.11
    root (hd0,0)
    kernel /bzImage-2.6.16.11 root=/dev/sda2 vga=0x0305

  title 2.6.16
    root (hd0,0)
    kernel /bzImage-2.6.16 root=/dev/sda2 vga=0x0305

  title 2.6.17.11
    root (hd0,0)
    kernel /bzImage-2.6.17.11 root=/dev/sda2 vga=0x0305

Dopo che si è salvato il file, riavviate il sistema e assicuratevi che il titolo della nuova immagine del kernel sia presente nel menu di boot. Usate la freccia verso il basso per evidenziare la versione del nuovo kernel, e premete enter per avviare la nuova immagine.

LILO

Per fare in modo che LILO sappia che un nuovo kernel è presente, dovete modificare il file di configurazione /etc/lilo.conf ed eseguire il comando lilo per applicare le modifiche fatte al file di configurazione. Per i dettagli completi sulla struttura del file di configurazione di LILO, consultate la manpage di LILO:

$ man lilo

Il modo più facile per aggiungere una nuova voce di kernel nel file /etc/lilo.conf è copiare una voce esistente. Per esempio, considerate il seguente file di configurazione di LILO di un sistema Gentoo:

  boot=/dev/hda
  prompt
  timeout=50
  default=2.6.12

  image=/boot/bzImage-2.6.15
    label=2.6.15
    read-only
    root=/dev/hda2

  image=/boot/bzImage-2.6.12
    label=2.6.12
    read-only
    root=/dev/hda2

La linea che comincia con la parola image= definisce una nuova voce kernel, quindi questo file contiene due voci. Copiate semplicemente un blocco di linee che cominciano con image=, come:

  image=/boot/bzImage-2.6.15
    label=2.6.15
    read-only
    root=/dev/hda2

Aggiungete dopo il blocco alla fine del file, e modificate il numero di versione per contenere quella del nuovo kernel appena installato. La label non ha alcuna importanza, purché unica, ma è visualizzata nel menu di boot, per cui dovreste dargli qualcosa di sensato. Nel nostro esempio, abbiamo installato il kernel 2.6.17.11, per cui la copia finale del file sarà:

  boot=/dev/hda
  prompt
  timeout=50
  default=2.6.12

  image=/boot/bzImage-2.6.15
    label=2.6.15
    read-only
    root=/dev/hda2

  image=/boot/bzImage-2.6.12
    label=2.6.12
    read-only
    root=/dev/hda2

  image=/boot/bzImage-2.6.17
    label=2.6.17
    read-only
    root=/dev/hda2

Dopo aver salvato il file, lanciate il programma /sbin/lilo per salvare i cambiamenti del file di configurazione nella sezione di boot del disco:

 # /sbin/lilo 

Ora il sistema può essere riavviato in sicurezza. La scelta del nuovo kernel si può vedere tra le scelte disponibili al momento del boot. Usate la freccia verso il basso per evidenziare la versione del nuovo kernel, premete Invio per avviare la nuova immagine.



This is an indipendent translation of the book Linux Kernel in a Nutshell by Greg Kroah-Hartman. This translation (like the original work) is available under the terms of Creative Commons Attribution-ShareAlike 2.5.


Capitolo originale