BIOS, EFI, Boot Loader, runlel

13 / 100

101.5 Boot the System BIOS, EFI, Boot Loader, runlevel

BIOS

Questa e’ una lezione teorica sulla sequenza di BOOT.
Nel caso di un pc con vecchio sistema BIOS a 16 bit, viene innanzitutto eseguito il POST ovvero Power on Self Test, che controlla lo statp delle memorie e il funzionamento di tutto quanto il sistema in generale.

Successivamente carica lo STAGE1 BOOT LOADER e lo carica dal MBR ( sono i primi 512 Byte del disco designato come disco di BOOT)

Sequenzialmente da questi 512 byte viene caricato un codice molto piccolo, molto semplice per andare a caricare lo STAGE 2 BOOT LOADER, il quale carica effettivamente il SISTEMA OPERATIVO vero e proprio.

Il BOOTLOADER puo’ caricare anche insieme al Kernel, un INITRD ovvero initaial RAM DISK ed e’ un file che contiene i moduli Kernel caricabili compilati al di fuori dell’ambiente di KERNEL. Solitamente e’ un file compresso che viene caricato in RAM dal BOOTLOADER, il Kernel vi accede come se fosse un file system montato senza alcun genere di problema.
Su alcuni sistemi tipo Fedora 12 puo’ essere creato con una applicazione chiamata DRACUT. Questa utili crea l’ initrd

Per entare e osservare come strutturato bastera’ digitare : lsinitrd

Un bootloader puo’ caricare un’altro bootloader.

Un esempio classico e’ quando ad esempio abbiamo installato UBUNTU e GRUB e’il bootloader predefinito.
Al POWER ON dopo il POST, il BIOS cerca di caricare lo STAGE 1 BOOTLOADER leggendo dai primi 512 byte del MBR, trova il codice di GRUB e lo carica GRUB mostra un elenco di Sistemi Operativi ( Windows, Linux etc), e qui bisogna fare una precisazione. Se carichiamo WINDOWS viene caricato il Windows BOOT LOADER e quindi abbiamo un BootLoader che carica un altro Boot Loader. Questa Tecnica e’ chiamata anche CHAIN LOADING o caricamento a catena.

EFI / UEFI

Nuova tecnologia introdotta nei computer in commercio, EFI e’ di INTEL ma e’ un progetto abbandonato nel 2005, per riprendere il concetto ma sotto nome di UEFI successivamente. UEFI sta per UNIFED EXTENSIBLE FIRMWARE INTERFACE. A differenza del BIOS e’ tutt’altra cosa e’ infatti un firmware con interfaccia. UEFI puo’ caricare sistemi UEFI e sistemi LEGACY. E’ un firmware complesso che richiede una partizione su un disco per fare il boot, e’ a supporto ai driver con una shell ( la shell UEFI). UEFI puo’ leggere il contenuto delle partizioni vedi fig associata UEFI1.

In UEFI per fare il Boot abbiamo una serie di stringhe di programmazione a differenza di BIOS dove ragionavamo in chiamate in ASSEMBLY.

In Linux abbiamo due distinti bootloader :

LILO e GRUB

LILO sta per LInux LOader

GRUB sta per GNU Grand Unified BootLoader

LILO e GRUB sono due Bootloader per il Sistema BIOS

Sui Sistemi UEFI abbiamo

ELILO (EFI LILO)
GRUB 2.0

GRUB 2.0 e’ ancora in grado di fare il Boot per Sistemi UEFI che per sistemi BIOS.

Una volta che il BootLoader carica il Kernel, eventualmente l’INITRD, e viene completato il caricamento del Kernel,normalmente quet’ultimo avvia il processo:

/sbin/init

Il PID sara’ sempre 1. Lo scopo di questo init.. ? INIT fa pertire tutti i processi, rimane quindi attivo fino allo spegnimento del pc e ha come figli tutti glio altri

processi.

Sui sistemi che fanno uso del tradizionale SystemVinit, il processo sara’ sempre chiamato init ma con i nuovi sistemi con System D /sbin/init e’ un collegamento SIMBOLICO a lib/systemd/systemd. Con sistemi che utilizzano systemd abbiamo le units, nel senso di unita’
Alcuni esempi di units possono essere:

.service
.device

.mount
.automount
.time
.snapshot
.path

Se il sistema, carica il kernel, ma fallisce nell’avviare l’init possiamo provare a ripristinarlo avviando un programma differente all’avvio.
Ad esempio specificando all’avvio come init —->bin.sh
In tale modo avviamo una shell con privilegi di root dalla quale siamo in grado di riparare il sistema.

RUNLEVEL

Letteralmente LIVELLO DI ESECUZIONE, sussistono 6 livelli di runlevel, ognuno dei quali corrisponde a un livello di avvio.

RUNLEVEL 0 corrisponde allo stato di spegnimento,

RUNLEVEL 1 corrisponde a SINGLE USER, quindi si entra con un solo utente,con una shell per il mantenimento, manutenzione.
Nessun Network

RUNLEVEL 2 Multiuser si possono avere utenti diversi, da quello root, non si possiede supporto network, e quindi non si entra in rete.

RUNLEVEL 3 Multiuser, Network Support ma vincolati a una interfaccia testuale e quindi NO GRAFICA (nessuna interfaccia grafica)

RUNLEVEL 4 Attualmente non in uso

RUNLEVEL 5 E’ completo. Si ha la possibilita’ di : Multiuser, Network Support e INTERFACCIA GRAFICA. E’ il RUN LEVEL di default su tutti i sistemi S.O. Desktop

RUNLEVEL 6 Reboot

Il RL predefinito dei SERVER e il RL 3 mentre il RL dei Desktop e Client e’ il RL 5. Il RL 1 e 2 vengono usati quando si deve diagnosticare un problema e la sua risoluzione ( troubleshooting) o ad esempio sistemare qualcosa che non parte.