LILO Mini-HOWTO Cameron Spitzer, cls@truffula.sj.ca.us Traduzione: Natali Giuliano (Diaolin) ,natali@tqs.it, febbraio 1996 Non e` precisa la data di produzione (pare giugno 1995) Questo file descrive alcune installazioni "tipo: di LILO . Viene con- siderato come un supplemento alla "LILO User's Guide". Ho pensato che gli esempi possano esservi d'aiuto anche se il vostro setup sara` chiaramente diverso dal mio. Spero che l'uso di questo mini-howto vi evitera` qualche problema . 1. Esempio 1: 1.1. Problema Ho due drives IDE , ed uno SCSI .....Lo SCSI non e` visibile dal BIOS. Il "Linux Loader", LILO, usa le chiamate al BIOS e riesce a vedere solo cio` che vede il BIOS .Il mio "stupido" AMI BIOS esegue il boot solo da "A:" o da "C:" Il mio file system di root si trova sulla partizione del drive SCSI . 1.1.1. Soluzione: Salvate il map file del kernel , ed il "chain loader" in una partizione Linux sul primo drive IDE. Sappiate che non e` strettamente necessario che il kernel sia sulla partizione di root. La seconda partizione sul primo drive IDE (/dev/hda2) viene montata su /u2. Di seguito vi mostro il file /etc/lilo.conf che ho usato. o # Installa il LILO boot record come Master Boot Record o # sul primo drive IDE. o # o boot = /dev/hda o # /sbin/lilo (l' installer) copia il "LILO boot record" dal file seguente o # al MBR {Master Boot Record}. o install = /u2/etc/lilo/boot.b o # o # Ho scritto un menu di boot . LILO lo trova qui. o message = /u2/etc/lilo/message o # L'installer crea il seguente file. o # Comunica al boot-loader la posizione dei blocchi del kernel. o map = /u2/etc/lilo/map o compact o prompt o # Attende 10 secondi, poi esegue il boot del kernel 1.2.1 di default. o timeout = 100 o # Il kernel viene salvato in un posto visibile al BIOS eseguendo: o #cp -p /usr/src/linux/arch/i386/boot/zImage /u2/z1.2.1 o image = /u2/z1.2.1 o label = 1.2.1 o # LILO comunica al kernel di montare la prima partizione SCSI come partizione di root. o # Il BIOS non ha bisogno di vederla. o root = /dev/sda1 o # Questa partizione viene esaminata (checked) e rimontata da /etc/rc.d/rc.S o read-only o # Lo stesso kernel puo` essere usato per montare una diversa partizione di root. o # Io ho ho un root setup di emergenza su /u2. o image = /u2/z1.2.1 o label = 1.2.1-hda2 o root = /dev/hda2 o read-only o # Ho recuperato un vecchio kernel Slackware per cavarmela nel caso in cui il mio o # kernel non funzioni. Potrei averne bisogno. o image = /u2/z1.0.9 o label = 1.0.9 o root = /dev/sda1 o read-only o # Partizione DR-DOS 6 . o other = /dev/hda1 o loader=/u2/etc/lilo/chain.b o label = dos o alias = m 2. Esempio 2: 2.1. Problema Il computer del mio ufficio ha un drive da 1GB IDE . Il BIOS puo` vedere solo 504 MB dell'IDE. (Dove MB sta per 2**10 bytes, non 10**6 bytes.) Quindi ho MS-DOS su una partizione da 350 MB /dev/hda1 e la root di Linux su una partizione da 120 MB su /dev/hda2. 2.1.1. Soluzione MS-DOS non riusciva ad installarsi correttamente sul drive vergine. Novell DOS 7 aveva lo stesso problema. Fortunatamente per me , "Options by IBM" si e` dimenticata di fornirmi il disco "OnTrack" assieme al pacchetto contenente il drive. Il drive avrebbe dovuto essere fornito con un prodotto chiamato "OnTrack Disk Manager." Se avete solo MSDOS, vi consiglio di usarlo. Quindi, ho creato la "partition table" con l' fdisk di Linux' . MSDOS-6.2 si e` rifiutato di installarsi su /dev/hda1. Mi dava un errore del tipo " questa release di MS-DOS e` per nuove installazioni(????). Il vostro computer ha gia` installato MS-DOS sbagliato, il drive era vergine quindi richiedete l'upgrade al fornitore." Pazzesco! Ho rieseguito fdisk di Linux e rimosso la prtizione 1 dalla tavola delle partizioni. Questo ha soddisfatto MS- DOS 6.2 che ha iniziato a creare esattamente la stessa partizione che avevo appena rimosso e si e` installato. MS-DOS 6.2 ha scritto il suo "Master Boot Record" sul drive, peccato che non potessi eseguire il boot. Fortunatamente avevo un kernel Slackware su un floppy (fatto con il programma di installazione di Slackware "setup"), cosi` ho eseguito il boot di Linux e sovrascritto l MBR di MS-DOS rovinato con quello di LILO. E questo ha funzionato. Qui vi mostro il file /etc/lilo.conf usato: o boot = /dev/hda o map = /lilo-map o delay = 100 o ramdisk = 0 # Disabilita il ramdisk nel kernel Slackware o timeout = 100 o prompt o disk = /dev/hda # Il BIOS vede solo i primo 500 MB. o bios=0x80 # specifica il primo drive IDE. o sectors = 63 # prendete questi numeri dalla documentazione del drive. o heads = 16 o cylinders = 2100 o image = /vmlinuz o append = "hd=2100,16,63" # Questo dovrebbe essere in piu`. o root = /dev/hda2 o label = linux o read-only o vga = extended o other = /dev/hda1 o label = msdos o table = /dev/hda o loader = /boot/chain.b o ## end Dopo avere installato questi sistemi, ho verificato che la partizione contenente zImage, boot.b, map, chain.b, ed i "message files" puo` usare il file system msdos , purche` non "stackered" o "doublespaced. Quindi dovrei aver fatto la partizione DOS su /dev/hda1 di circa 500 MB. Ho poi letto che "OnTrack" avrebbe scritto la tavola delle partizioni iniziando diverse dozzione di bytes all'interno del drive, invece che all'inizio, e che sarebbe stato possibile modificare il "Linux IDE driver" per aggirare il problema. Ma l'installazione sarebbe risultata impossibile usando il kernel precompilato della Slackware . In quel caso, IBM mi avrebbe mandato il dischetto con "OnTrack" . Ho chiamato il supporto tecnico OnTrack's . Mi dissero che Linux non funziona perche` Linux non usa il BIOS. Ho restituito loro il dischetto.................................... 3. Esempio 3: 3.1. Problema Successivamente, ho installato Windows-95 sul computer in ufficio. Mi ha distrutto il mio bel LILO MBR, ma non la partizione con Linux . Il kernel ci metteva troppo a partire dal floppy, cosi` ho preparato un floppy con un LILO setup funzionante su di esso, che mi permette di eseguire il boot del kernel dal drive IDE. 3.1.1. Soluzione Ho costruito un lilo floppy tipo questo: o fdformat /dev/fd0H1440 # formatta il disco vergine o mkfs /dev/fd0 1440 # vi crea sopra un filesystem minix o mkdir /3 # crea un posto per montarlo o mount /dev/fd0 /3 o cp -p /boot/chain.b /3 # copiaci il "chain loader" o lilo -C /etc/lilo.flop # installa LILO e la mappa sul dischetto. o umount /3 Noterete che il disco DEVE ESSERE MONTATO QUANDO ESEGUITE L'INSTALLER per permettere a lilo di scrivere la propria mappa esattamente. Il file e` /etc/lilo.flop. E` quasi uguale all'ultimo: o # Fa` un floppy che possa eseguire il boot del kernel dall'HD. o boot = /dev/fd0 o map = /3/lilo-map o delay = 100 o ramdisk = 0 # Disabilita il ramdisk nel kernel Slackware o timeout = 100 o prompt o disk = /dev/hda # 1 GB IDE, il BIOS vede solo 500 MB. o bios=0x80 o sectors = 63 o heads = 16 o cylinders = 2100 o image = /vmlinuz o append = "hd=2100,16,63" o root = /dev/hda2 o label = linux o read-only o vga = extended o other = /dev/hda1 o label = msdos o table = /dev/hda o loader = /3/chain.b o ## end 4. In definitiva........ Finalmente....... Avevo bisogno di MS-DOS 6.2 sul computer dell'ufficio, ma non volevo usare il primo disco. Ho quindi aggiunto uno SCSI controller e relativo drive, creato un file system msdos con mkdosfs di Linux, e Windows-95 lo vede come "D:". Ma chiaramente MSDOS non esegue il boot da D:. Non e` un problema se avete installato LILO. Io ho aggiunto: o other = /dev/sda1 o label = d6.2 o table = /dev/sda o loader = /boot/any_d.b al file lilo.conf nell'Esempio 2. MSDOS-6.2 funziona, e crede di essere sul drive C: e Windows-95 e` sul D:.