mercoledì 23 aprile 2008

lilo su hdc invece che hda

Installare su hdc per avviarlo come hda usando bios=

Lilo permette di mappare l'immagine del kernel da un disco e di istruire il BIOS perché la recuperi da un altro disco. Per esempio, a me capita spesso di installare Linux su un disco collegato come hdc (disco principale del controller secondario), e di avviarlo come sistema autonomo sul controller IDE primario di un altro computer. Ho fatto una copia del floppy di installazione in una piccola partizione, per poter installare su hdc eseguendo chroot su una console virtuale, continuando ad usare il sistema per fare altro.

Il file lilo.conf usato per installare Lilo ha questo aspetto:

# Questo file deve essere usato da un sistema che giri su /dev/hdc
boot = /dev/hdc # sovrascrive l'MBR di hdc
disk = /dev/hdc # specifica come hdc verrà visto:
bios = 0x80 # il bios lo vedrà come primo disco
delay = 0
vga = 0

image = /boot/vmlinux # l'immagine risiede su /dev/hdc1
root = /dev/hda1 # ma all'avvio sarà su hda1
label = Linux
read-only

Questo file di configurazione deve essere usato da un Lilo funzionante su /dev/hdc1. Le mappe di Lilo che vengono scritte nel settore di avvio (/dev/hdc) devono far riferimento ai file residenti in /boot (attualmente installati su hdc); questi file verranno letti da hda quando il disco verrà avviato come sistema autonomo.

Io chiamo questo file di configurazione /mnt/etc/lilo.conf.hdc (/mnt è dove viene montato hdc durante l'installazione). L'installazione di Lilo avviene invocando ``cd /mnt; chroot . sbin/lilo -C /etc/lilo.conf.hdc''. Si faccia riferimento alla pagina di manuale di chroot se questo comando sembra una magia.

La direttiva ``bios='' di lilo.conf si usa per dire a Lilo che cosa il BIOS pensa dei propri dispositivi. Le chiamate al BIOS identificano i floppy e i dischi rigidi con un numero: 0x00 e 0x01 selezionano i dischi floppy, 0x80 e i numeri successivi selezionano i dischi rigidi (i vecchi BIOS possono accedere solo a due dischi). Il significato di ``bios = 0x80'' usato nell'esempio precedente significa quindi ``usa 0x80 nelle chiamate al BIOS per /dev/hdc''.

Questa direttiva di Lilo può essere utile in altre situazioni, per esempio quando il proprio BIOS è in grado di avviare il sistema da dischi SCSI piuttosto che da dischi IDE. Quando sono presenti sia dispositivi IDE che SCSI, Lilo non può sapere se 0x80 si riferirà all'uno o all'altro, poiché l'utente può scegliere quale usare tramite i menu di configurazione del BIOS, e non è possibile accedere al BIOS mentre Linux è in funzione.

Lilo, come comportamento predefinito, assume che i dischi IDE vengano mappati per primi dal BIOS. Si può annullare questo comportamento usando nel proprio /etc/lilo.conf istruzioni come queste:

disk = /dev/sda
bios = 0x80

Nessun commento: