Multiboot con GRUB Mini-HOWTO

Ivan Kanis, ivank@juliva.com v1.0, 2001-01-15

Questo documento descrive come installare Windows 98, Windows 2000, DOS e Linux utilizzando GRUB. Traduzione a cura di Luca Mayer . Revisione a cura di Simone Stevanin (simone at pluto.it)

1 Perché?

Volevo essere in grado di avviare tutti i sistemi operativi senza dover attraversare molteplici menu. Sapevo di poter installare NT sopra Win9x e quest’ultimo sopra DOS. Al fine di avviare DOS, però, avrei dovuto passare attraverso il menu di NT e poi attraverso quello di Win9x. Volevo essere in grado di avviare tutti questi sistemi operativi in una volta sola.

Questo è risultato essere una sfida. Il problema con sistemi operativi Microsoft è che richiedono di essere avviati da una partizione primaria. GRUB entra in gioco a questo punto. Esso infatti può nascondere le partizioni primarie. Si possono usare fino a 3 partizioni per installare sistemi operativi Microsoft: GRUB nasconderà le altre 2 partizioni in modo che i sistemi operativi non possano vederle. Allo stesso tempo però, questo implica che avrete bisogno di un’altra partizione per condividere i dati tra DOS, Win9x e Windows 2000. La quarta partizione sarà utilizzata come partizione estesa.

Volevo anche un sistema basato su menu e GRUB ne fornisce uno carino.

Un’altra caratteristica apprezzabile di GRUB è che supporta Reiserfs e quindi non è necessario mantenere i file della directory /boot in una partizione ext2 separata.

2 Procedura di installazione

2.1 Preparare i floppy di avvio

Sono necessari 3 floppy disk. Trasformate il primo floppy in un disco di avvio di DOS. Copiate fdisk.exe e sys.exe su questo floppy.

     FORMAT /S A:
     COPY FDISK.EXE A:
     COPY SYS.EXE A:

Utilizzate il secondo floppy per creare un disco di emergenza di Windows 98. Il terzo disco verrà utilizzato per GRUB.

2.2 Installare Linux

Installate la vostra distribuzione Linux preferita. Durante questa operazione avrete bisogno di utilizzare fdisk per partizionare il vostro disco fisso: calcolate in anticipo quanto spazio su disco verrà occupato da ogni sistema operativo.

Io ho partizionato il mio disco fisso come segue:

     Device Boot         Start       End    Blocks   Id  System
       /dev/hda1             1         6     48163+  16  Hidden FAT16
       /dev/hda2             7        19    104422+  16  Hidden FAT16
       /dev/hda3            20       593   4610655   1b  Hidden Win95 FAT32
       /dev/hda4           594      3737  25254180    5  Extended
       /dev/hda5           594       848   2048256    6  FAT16
       /dev/hda6           849      2123  10241406    7  HPFS/NTFS
       /dev/hda7          2124      2140    136521   82  Linux swap
       /dev/hda8          2141      2523   3076416   83  Linux

La prima partizione verrà utilizzata per avviare Windows 2000. 10 MB dovrebbero essere più che sufficienti per far ciò. Questa partizione dovrà contenere solo i file necessari per avviare NT come boot.ini, ntldr, ntdetect.com, etc. NT risiederà, nel mio esempio, nella partizione 6. Questa partizione è di tipo Hidden FAT16.

La seconda partizione conterrà DOS. Ritengo 100 MB sufficienti. Anche questa è di tipo FAT16.

La terza partizione è per Win9x. Ha una dimensione di 5 GB e è di tipo FAT32 per migliorare le performance.

Successivamente, create la partizione estesa con tutto lo spazio rimanente del vostro disco fisso. Questa verrà mostrata da fdisk come la partizione 4.

Create una partizione di 2 GB. Questa partizione verrà utilizzata per condividere i dati tra tutti i sistemi operativi. Verificate che la somma di tutte le partizioni sopra citate sia inferiore agli 8 GB. Questa è una limitazione del DOS.

Create poi la vostra partizione Windows 2000. Nell’esempio èdi 10 GB dato che questa versione di Windows richiede molto spazio. Per ragioni di velocità ho creato questa partizione di tipo HPFS/NTFS.

Successivamente, aggiungete le vostre partizioni di swap e di Linux. Assicuratevi di non avere una partizione separata per /boot. Le cose in GRUB vanno meglio se mantenete /boot nella partizione root.

Dopo aver installato Linux continuate formattando le partizioni FAT16:

mkdosfs /dev/hda1
mkdosfs /dev/hda2
mkdosfs /dev/hda6

2.3 Installare GRUB

Assicuratevi di avere l’ultima versione di GRUB. Nel mio caso sto utilizzando la versione 0.5.96.1. La versione fornita con la mia distribuzione è datata e mi ha dato molti problemi. L’ultima versione può essere scaricata da http://www.fsf.org.

Ora dovete installare GRUB sul floppy disk. Non dovete installarlo sul vostro disco fisso perchè Windows 2000 lo sovrascriverebbe.

grub-install '(fd0)'

Create il file menu.lst per GRUB. Questo file si trova in /boot/grub.

#
# Sample boot menu configuration file
#
# Boot automatically after a minute.
timeout 60
# By default, boot the second entry.
default 1
# Fallback to the first entry.
fallback 0
title Windows 2000
unhide (hd0,0)
hide (hd0,1)
hide (hd0,2)
rootnoverify (hd0,0)
chainloader +1
makeactive

# For booting Linux
title  Linux
root (hd0,7)
kernel /boot/vmlinuz-2.2.17 root=/dev/hda8 video=matrox:vesa:261
title Windows 98
hide (hd0,0)
hide (hd0,1)
unhide (hd0,2)
rootnoverify (hd0,2)
chainloader +1
makeactive
title DOS 6.22
hide (hd0,0)
unhide (hd0,1)
hide (hd0,2)
rootnoverify (hd0,1)
chainloader +1
makeactive
# For booting Linux
title  Linux (single user)
root (hd0,7)
kernel /boot/vmlinuz-2.2.17 root=/dev/hda8 video=matrox:vesa:261 single
title Partition 2 (floppy)
hide (hd0,0)
unhide (hd0,1)
hide (hd0,2)
chainloader (fd0)+1
title Partition 3 (floppy)
hide (hd0,0)
hide (hd0,1)
unhide (hd0,2)
chainloader (fd0)+1

Verificate di poter avviare Linux con il floppy disk. Se avete dei problemi, potete entrare nella linea di comando di GRUB e verificare cosa sta succedendo. GRUB è ha una buona documentazione, se siete in difficoltà potete consultarla.

2.4 Installare Windows 2000:

Ho dovuto inizializzare la prima partizione prima di installare Windows 2000. Inserite il disco di avvio di DOS e riavviate il vostro computer. Dopo aver ottenuto il prompt di DOS, digitate quanto segue:

FDISK /MBR
SYS C:

Ora potete proseguire ed installare Windows 2000. Ad un certo punto Windows 2000 vi chiederà su quale partizione volete che sia installato. La partizione che avete creato con fdisk potrebbe essere mostrata come danneggiata o non formattata. Continuate e selezionatela.

Per nascondere il menu di Windows 2000, modificate il file chiamato boot.ini che dovrebbe trovarsi nel disco C:. Cambiate il valore di timeout da 30 a 0.

     [boot loader]
     timeout=0
     default=multi(0)disk(0)rdisk(1)partition(1)\WINNT
     [operating systems]
     ...

2.5 Installare DOS

Inserite il disco di GRUB. Quando compare il menu, inserite il disco di avvio di DOS. Selezionate la partizione 2 (floppy) nel menu. Premete enter. Questo avvierà il floppy disk e nasconderà la partizione 1 e 3.

Eseguite FDISK e verificate che il drive C: corrisponde alla partizione 2. Fatto ciò installate DOS:

     SYS C:

2.6 Installare Windows 98

Inserite il disco di GRUB. Alla visualizzazione del menu inserite il disco di emergenza di Windows 98. Selezionate la partizione 3 (floppy) nel menu. Premete enter. Questo avvierà il floppy disk e nasconderà le partizioni 1 e 2.

Eseguite FDISK e verificate che il disco C: corrisponda alla partizione 3. Fatto ciò installate Windows 98:

     SYS C:

2.7 Il tocco finale

Verificate che tutto funzioni correttamente da GRUB.

Dovreste essere in grado di avviare tutti e 4 i sistemi operativi dal floppy disk di GRUB.

Se tutto sembra corretto, potete procedere ed installare GRUB sul vostro disco fisso. Da Linux digitate:

     grub-install /dev/hda

Ora dovreste essere in grado di avviare tutti e 4 i sistemi operativi dal menu di GRUB. Buon divertimento!

3 Riferimenti

Ho trovato questi link molto utili durante la configurazione del mio sistema.

4. Commenti 5 • GNU GRUB

• The Linux-DOS-Win95-OS2 mini-HOWTO

4 Commenti

Mi piacerebbe che mi comunicaste la vostra esperienza (buona o cattiva) con questo documento. Se avete suggerimenti per l’aggiunta di altri SO, per favore inviateli a me in modo che possa aggiungerli al documento.