Il master boot record - PowerPoint PPT Presentation

About This Presentation
Title:

Il master boot record

Description:

Il master boot record Il master boot record e completamente contenuto all interno del primo settore di ogni disco ed esattamente per ogni hard disk si trova all ... – PowerPoint PPT presentation

Number of Views:151
Avg rating:3.0/5.0
Slides: 26
Provided by: DISI8
Category:
Tags: boot | fdisk | master | record

less

Transcript and Presenter's Notes

Title: Il master boot record


1
Il master boot record
  • Il master boot record e completamente contenuto
    allinterno del primo settore di ogni disco ed
    esattamente per ogni hard disk si trova
    allindirizzo cylinder 0, head 0, sector 1.E
    possibile creare e modificare il MBR tramite
    svariati programmi tra i quali il piu conosciuto
    e FDISK.Ogni MBR contiene una tabella contente
    4 entry che viene chiamata partition table. Al
    completamento del POST (power on self test), il
    Bios chiama un INT 19, un istruzione che
    solitamente tenta di leggere un settore di boot
    allinterno del floppy disk. E da notare che
    anche la pressione dei tasti CTRL-ALT-DEL
    richiama lesecuzione dell INT 19.
  • Se durante la lettura del floppy viene rilevato
    un boot sector, questo viene copiato
    allindirizzo 00007C00 e lINT 19 esegue un
    salto (jump) a questo indirizzo.Se non viene
    trovato un settore di boot il codice contenuto
    allinterno dell INT 19 cerca di leggere lMBR
    del primo hard disk

2
boot
  • Una volta trovato, lMBR viene copiato alla
    locazione di memoria 00007C00. Il programma
    che viene eseguito allinterno dell MBR legge la
    propria partition table alla ricerca di una
    partizione attiva (bootable).Se la ricerca ha
    esito positivo, il boot sector di questa
    partizione viene copiato alla locazione di
    memoria 00007C000 e il codice dellMBR esegue un
    salto a quel indirizzo(perche questo possa
    avvenire una delle prime istruzioni che esegue
    lMBR consiste nello shiftarsi in avanti,
    eseguendo una copia di se stesso, allindirizzo
    00000600 per lasciar posto al caricamento del
    boot sector)

3
boot
  • Se non viene trovata nessuna partizione attiva
    viene eseguito un INT 18 e il sistema si ferma.
  • Ogni sistema operativo ha il proprio formato
    di boot sector. Generalmente il piccolo programma
    allinterno del boot sector localizza la prima
    parte del loader del kernel del sistema operativo
    oppure direttamente il kernel stesso oppure
    ancora un programma gestore di boot, e lo copia
    in memoria

4
boot
  • La sequenza di ricerca del boot sector, chiamata
    anche sequenza di boot, generalmente e
    configurabile tramite il setup del Bios.
  • Alcuni indirizzi dellMBR
  • Il codice dell MBR inizia alloffset 0000
  • I messaggi dell MBR iniziano alloffset 008b
  • La partition table inizia alloffset 01be
  • La firma (signature)e alloffset 01fe

5
Un esempio di gestore di boot LiLo
  • LInux LOader (LILO)
  • Lilo e un boot loader per linux, non dipende da
    uno specifico file system e puo eseguire il boot
    dell immagine di un kernel linux sia da floppy
    disk che da hard disk e nello stesso tempo puo
    funzionare da gestore di boot per altri sistemi
    operativi
  • Lilo e un insieme di diversi programmi e file di
    configurazione
  • -Il map installer e un programma che gira sotto
    linux e si occupa di installare tutti i file che
    sono necessari affinche Lilo funzioni
    correttamente. Solitamente il programma si trova
    in /sbin/lilo e occorre eseguirlo ogni volta che
    vengono apportate delle modifiche alla
    configurazione.
  • -Files contenenti dati sono necessari a Lilo nel
    momento del boot. Generalmente sono situati in
    /boot dove il piu importante e il boot loader
    (descritto di seguito) e il map file /boot/map
    dove il map installer registra la posizione del
    kernel. Il file di configurazione e in
    /etc/lilo.conf.
  • -boot loader e una parte di Lilo che e caricata
    dal bios e che ha il compito di caricare i kernel
    o i boot sector di altri sistemi operativi.
    Inoltre fornisce una semplice interfaccia a linea
    di comando che consente allutente di selezionare
    il sistema desiderato
  • Lilo puo accedere alle seguenti parti del
    sistema
  • -la partizione di root spesso importante perche
    contenente /boot e i kernels

6
Un esempio di gestore di boot LiLo
  • -il settore di boot contiene la prima parte del
    Lilo boot loader. Si occupa di caricare , la
    seconda e piu grossa parte del loader.
    Tipicamente entrambi i loaders sono contenuti in
    /boot/boot.b
  • -il kernel e caricato e avviato tramite il boot
    loader
  • Occorre notare che molti dei files che Lilo
    richiede per poter lavorare nella fase di boot
    devono poter essere accessibli dal Bios. Questo
    e causa di una importante restrizione.
  • Il Lilo boot sector e progettato per essere
    usato come partition boot sector, questo
    significa che puo ospitare una tabella delle
    partizioni,
  • pertanto puo essere installato nelle seguenti
    locazioni
  • nel settore di boot di floppy disk linux
    (/dev/fd0)
  • nellMBR del primo hard disk (/dev/hda,
    /dev/sda).
  • nel settore di boot di una partizione primaria
    del primo disco contenente un file system linux
    (/dev/hda1) .
  • nellMBR di una partizione estesa.
  • Occorre specificare che molte versioni di fdisk
    non consentono lattivazione di una partizione
    estesa.Per far si che cio avvenga e possibile
    utilizzare il tool activate contenuto allinterno
    di lilo.

7
Un esempio di gestore di boot LiLo
  • Lilo non puo essere installato nelle seguenti
    locazioni
  • -nel settore di boot di un floppy disk o in una
    partizione primaria
  • di un sistema diverso da linux
  • -nella partizione di swap di LInux
  • -nel settore di boot di una partizione estesa.
  • -su di un disco secondario.

Master boot record Boot sector Operating system
DOS-MBR MS-DOS COMMAND.COM
DOS-MBR LILO Linux COMMAND.COM Altri OS
LILO Linux Altri OS
8
Un esempio di gestore di boot LiLo
  • Lultima soluzione nella tabella precedente
    presenta lo svantaggio di dover sovrascrivere il
    MBR originale. Per avere maggiore sicurezza di
    poter ripristinare le condizioni iniziali occorre
    fare una copia dellMBR originale
  • I passi che occorre seguire per questa
    configurazione sono
  • dd if /dev/hda of/fd/MBR bs512 count1

9
Un esempio di gestore di boot LiLo
  • Un esempio di file di configurazione lilo.conf
  • boot/dev/hda2
  • map/boot/map
  • install/boot/boot.b
  • prompt
  • timeout50
  • restricted
  • password pippo'
  • message/boot/message
  • linear
  • defaultlinux
  • image/boot/vmlinuz-2.2.16-22
  • image/boot/vmlinuz-2.2.17-14
  • labellinux
  • read-only
  • root/dev/hda6
  • image/boot/vmlinuz-2.2.16-22
  • labellinux-2.2.16

10
Un esempio di gestore di boot LiLo
  • Restrizioni causate dal Bios
  • Le piu comuni restrizioni che rigurdano Lilo
    sono la limitazione al numero di hard disk e
    lincapacita di gestire numeri di cilindri
    superiori al 1024.
  • Benche la prima restrizione sia ormai stata
    eliminata nella totalita delle odierne versioni
    di bios, dove il numero di dischi gestibili e
    sempre pari a quattro, la limitazione al numero
    di cilindri permane in particolare quando si
    parla di dischi IDE. Lilo e in grado di
    accorgersi di questo problema e abortire
    linstallazione nel caso in cui si tenti di
    installare al di sopra del 1024esimo cilindro.
  • Ci sono quattro approcci che possono risolvere
    questo problema
  • -usare una partizione differente che e situata
    sulla prima partizione del primo disco e sta al
    di sotto del 1024 cilindro. Questo e accettabile
    anche se la partizione in questione e di tipo
    Dos.

11
Un esempio di gestore di boot LiLo
  • -ripartizionare il disco. E unoperazione che
    causa la perdita di tutti i dati presenti
    precedentemente.
  • -se sul sistema e gia presente un sistema
    operativo si puo provare a far gestire il boot a
    questo sistema. Nel caso di Dos/W95/W98 si puo
    ricorrere alluso di loadlin mentre nel caso di
    Nt/W2k si puo utilizzare boot.ini.
  • -se tutte le precedenti procedure falliscono
    rimane linstallazione di un nuovo Bios, di un
    differente controller o di una differente
    configurazione dei dischi.
  • Lilo dipende dal bios nel caricamento di
  • -/boot/boot.b
  • -/boot/map
  • -tutti i kernels
  • -i messaggi di avvio

12
Un esempio di gestore di boot LiLo
  • Alcune configurazioni tipiche
  • Singolo hard disk, Linux installato su di una
    partizione primaria
  • se almeno una partizione primaria e
    utilizzata come Linux file system
  • (/ ,/usr,/home,,) ad eccezzione della
    partizione di swap ovviamente, allora il boot
    sector LiLo puo essere installato su di una di
    queste partizioni e puo essere bootata dall
    MBR originale.
  • Singolo hard disk, Linux installato su di una
    partizione logica
  • se non esiste la possibilita di avere una
    partizione primaria con file system linux ma
    solamente partizioni logiche allora il boot
    sector LiLo puo essere installato nel partition
    sector della partizione estesa.
  • Dal momento che molti programmi fdisk non
    sono in grado di rendere attiva una partizione
    estesa, questo puo essere fatto tramite il
    programma activate fornito appositamente con la
    distribuzione LiLo.
  • Doppio hard disk, con linux installato sul primo
    disco (almeno parzialmente
  • si ricade nei casi precedenti e il secondo
    disco non influisce.

13
Un esempio di gestore di boot LiLo
  • Doppio hard disk, Linux sul secondo disco, il
    primo disco ha una partizione estesa
  • Lilo puo essere installato nel partition
    sector della partizione estesa del primo hard
    disk.(occorre utilizzare activate)
  • Doppio hard disk, Linux sul secondo disco, non si
    hanno partizioni estese sul primo disco
  • in questo caso lunico posto dover poter
    installare LiLo e il master boot record del
    primo hard disk.
  • Piu di due hard disk
  • questa situazione e variabile a seconda
    delle capacita del Bios di indirizzare un numero
    di hard disk superiore a due. Quando si cerca di
    accedere al terzo o quarto disco, LiLo visualizza
    un warning (BIOS drive 0xnumber may not be
    accessible) se il Bios supporta piu di due hard
    disk si puo proseguire, diversamente il warning
    viene considerato fatal error.

14
Un esempio di gestore di boot LiLo
  • / boot su di una partizione Dos
  • I recenti Kernels supportano la possibilita
    di installare e gestire la partizione /boot anche
    allinterno di file system MS-Dos (UMSDOS)
  • La partizione Dos deve essere montata in
    modo read-write e generalmente viene creata la
    partizione /dos/linux dove vengono copiati tutti
    I file contenuti all interno di /boot e viene
    creato un link simbolico che rimpiazza /boot e
    redireziona a /dos/linux
  • E importante notare che la deframmentazione
    della partizione dos porterebbe inevitabilmente a
    rendere Linux o addirittura lintero sistema
    unbootable.

15
Inside LiLo
  • Come visto in precedenza il settore di boot
    viene caricato allindirizzo 0x07C00, in questo
    caso la prima istruzione muove se stesso
    allindirizzo 0x9A000 (da 0x9A000 a 0x9B000) e
    carica il boot loader secondario all indirizzo
    0x9B000 passandogli il controllo dellesecuzione.
    In questa fase la graduale visualizzazione a
    monitor della scritta LILO fornisce una
    diagnostica delle fasi di boot. Infatti la prima
    L compare dopo il move del codice, e la I subito
    prima del passaggio di esecuzione al boot loader
    secondario. Nel caso in cui il caricamento del
    boot loader secondario incontra degli errori,
    viene visualizzata una sequenza interminabile di
    codice esadecimale a due cifre.
  • Il boot loader secondario carica la descriptor
    table allindirizzo 0x9D200 e il settore
    contenente la default command line allindirizzo
    0x9D600 e aspetta un input dallutente.
  • se e stata impostata una fallback command line
    questa verra copiata sul settore della default
    command line

16
Inside LiLo
  • Se lutente ha fornito un immagine Ram disk ,
    questo file viene caricato
  • sotto la fine della memoria fisica o comunque
    sotto i 16 Mb. Lindirizzo iniziale e abbassato
    al vicino inizio pagina per far in modo che
    larea occupata dal Ram disk possa,
    successivamente, facilmente ritornare a far
    parte della memoria disponibile (free memory
    pool).
  • Il limite dei 16 MB e dovuto al fatto che le
    funzioni del Bios usate per trasferire i dati in
    memoria sono limitate ad uno spazio di indirizzi
    di 24 bit.
  • Successivamente il settore di boot del floppy e
    caricato allindirizzo 0x90000 (in realta verra
    utilizzato solo per le informazioni di setup), la
    parte di setup e caricata allindirizzo 0x90200
    e il kernel a 0x10000. Durante questa fase il
    settore del map file e caricato allindirizzo
    0x9D000.
  • Se limmagine caricata e effettivamente
    limmagine di un kernel, il suo codice di setup
    prende il controllo.
  • Se invece viene caricato un differente sistema
    operativo le operazioni sono un po piu
    complicate il chain loader viene caricato a
    0x90200 e il settore di boot del sistema
    operativo viene caricato a 0x90400. Il chain
    loader sposta la tabella delle partizioni
    (caricata a 0x903BE come parte del chain loader)
    allindirizzo 0x00600 e il settore di boot a
    0x07C00.Dopodiche il controllo passa al settore
    di boot.

17
Inside LiLo
  • I chain loaders che consentono il boot da un
    secondo disco installano anche una piccola
    funzione che intercetta le chiamate del bios e
    modifica il numero dei dischi allinizio della
    memoria.
  • Il boot loader secondario visualizza la seconda
    L dopo essere partito e una O dopo aver
    caricato la descriptor table e la default
    command line.

18
Inside LiLo
  • Vediamo i riferimanti tra i files di lilo

Default command line
Image descriptors
Boot sector
map
Primary boot loader
Secondary boot loader
boot.b
19
Inside LiLo
linea di comando di default
  • Il settore di boot contiene il boot loader
    primario, lindirizzo del settore contenente la
    linea di comando di default, gli indirizzi della
    tabella di descrizione e lindirizzo del settore
    del boot loader secondario. Il settore di boot e
    copiato dal file boot.b
  • ll map file e costituito da sezioni e da
    speciali settori di dati . Ogni sezione copre un
    numero definito di settori del disco, inoltre
    contiene gli indirizzi dei settori degli altri
    file.
  • I cinque settori allinizio del map file sono
    speciali il primo settore contiene la linea di
    comando di default, i due successivi settori
    contengono la tavola di descrizione dellimmagine
    di boot, il quarto settore contiene tutti zero e
    viene mappato ogni qualvolta un file contiene una
    hole. Il quinto settore contiene la tabella di
    traduzione della tastiera.

descrittori
descrittori
zero
traduzione tastiera
sezioni....
20
Inside LiLo
  • Un immagine del kernel ecomposta semplicemente
    da una sequenza di settori che devono essere
    caricati. La sezione del map file contiene anche
    un settore con una linea di comando fallback e
    un settore con i parametri delle opzioni di
    linea.
  • Un immagine Ram disk puo essere caricata
    opzionalmente tramite una seconda map section.

descrittore
fallback
opzioni
sezione di map file
Kernel image
21
Inside LiLo
  • La default command line nel map file
  • Il primo settore del map file e riservato alla
    linea di comando di default. Fino a che lutente,
    premendo lo shift, non invoca il prompt o una
    linea di comando fornita esternamente e
    presente, la linea di default viene interpretata
    come se fosse stata digitata da tastiera.
  • I primi due byte del primo settore del map file
    devono contenere il magic number DC_MAGIC
    (0xF4F2), sono seguiti da una stringa NUL
    terminated della lunghezza massima di 510 byte.
    Occorre notare che il boot loader limita la
    lunghezza delle linee di comando, dopo aver
    rimosso gli spazi duplicati, a 78 caratteri.
  • La linea di comando puo essere disabilitata sia
    nascondendo il Magic number sia usando un NUL
    byte come linea si comando.

22
Inside LiLo
  • Come si costruisce la linea dei parametri
  • Il kernel e in grado di processare i parametri
    che vengono forniti tramite il boot loader.
  • La stringa dei parametri e una stringa
    NUL-terminated di tipo ASCII che contiene parole
    separate da spazi o coppie del tipo
  • variabilevalore.
  • Per poter passare al kernel la stringa di
    parametri occorre settare i seguenti descrittori
  • 0x90020 il magic number 0xA33F
  • 0x90022 loffset del primo byte della linea di
    parametri relativa a 0x90000.
  • Il boot loader compone la linea di parametri
    partendo dalla linea di comando, dal settore
    delle opzioni, e da alcuni prefissi generati
    internamente (tipicamente auto e BOOT_IMAGE)

23
Inside LiLo
Nome immagine Opzioni della linea di comando
Linea di comando
Prefisso Nome immagine Opzioni statiche Opzioni della linea di
Stringa di parametri passati al kernel
Opzioni statiche
Settore delle opzioni
Esempio Linea di comando vmlinuz
root802 Settore delle opzioni root801 ro si
ottiene BOOT_IMAGEvmlinuz root801 ro
root802 dal momento che la linea delle opzioni
puo essere sovrascritta. la prima opzione root
e ignorata dal kernel
24
Inside LiLo
  • Interfaccia esterna
  • Lilo e in grado di ricevere la propria linea di
    comando da un programma che ha eseguito
    precedentemente il boot.
  • Keyboard translation
  • La pressione dei tasti della tastiera di un pc
    genera quelli che in gergo vengono definiti scan
    codes che non sono altro che numeri chiave. Per
    default il Bios assume che la tastiera abbia un
    layout US e traduce lo scan codes ricevuto nel
    character codes relativo al carattere che e
    stampigliato sul tasto che e stato premuto. Al
    momento del boot, Lilo ha accesso ai servizi
    forniti dal Bios e di conseguenza riceve i
    character codes di una tastiera US. La keyboard
    translation si occupa quindi di rimappare questi
    character codes con quelli relativi al layout
    della tastiera in uso.

25
Inside LiLo
  • LiLo ottiene le informazioni del layout della
    tastiera puntando alla keyboard translation table
    usata da Linux (/usr/lib/kbd/keytables).
  • Il programma keytab-lilo.pl leggendo il file
    precedente e in grado di generare la Keyboard
    translation da inserire nel map installer.
  • Per convenzione il file binario generato da
    keytab-lilo.pl e inserito in /boot/nome.ktl
    (Keyboard Table for Linux).
  • Ad esempio per una tastiera italiana si puo
    procedere come segue
  • keytab-lilo.pl italian gt/boot/italian.ktl
Write a Comment
User Comments (0)
About PowerShow.com