Avanti Indietro Indice

6. Far partire Hurd

Tutto è pronto al boot per avviare Hurd per la prima colta. Dopo aver verificato che il boot disk di Grub sia nel drive, riavviamo. Se tutto funziona bene, apparirà il menu di Grub. Premi c per la linea di comando di Grub.

Innanzitutto, il root filesystem deve essere impostato. Grub usa una nomenclatura per le partizioni che è un pò diversa da quella di Linux o di Hurd stesso: sia i dischi fissi IDE che SCSI sono chiamati (hdN). N è il numero del dispositivo (partendo da zero) come riportato nel BIOS. Così, Grub non fa distinzione tra dischi IDE o SCSI. Le partizioni, così come i dischi, sono anch'esse indicizzate partendo da zero: (hdN,M). Se questo non ti piace molto, rilassati: Grub ti aiuterà.

Per determinare in quale filesystem risiede un particolare file, un metodo è quello di usare il comando find. Quando digiti quel comando, Grub cerca in ogni filesystem quel file specificato e lo stampa quando lo trova. Ad esempio, qui cerchiamo il kernel, /boot/gnumach.gz.

  grub> find /boot/gnumach.gz
   (hd0,0)

Come si può vedere, Grub sta indicando che /boot/gnumach.gz è in (hd0,0). Impostiamo la partizione di root:

  grub> root (hd0,0)
   Filesystem type is ext2fs, partition type 0x83

Ora, GNU Mach deve essere caricato. Per caricarlo deve essere usata almeno un'opzione, per specificare il root filesystem. Questa sarà usata da Hurd stesso.

Le etichette dei dischi in GNU Mach partono da zero. I drives IDE hanno il prefisso hd, mentre quelli SCSI iniziano con sd. Come in Linux, i drive sono numerati secondo la loro posizione nel controller. Ad esempio, il disco master primario è hd0 e il secondario slave è hd3. Le partizioni usano la stessa convenzione di BSD, e aggiungono sM al nome del drive per indicare una data partizione. Nota che M è indicizzato a partire da uno, e non zero.

Poichè Hurd non è stato ancora configurato, deve essere eseguito in modalità singolo utente. Aggiungendo -s alla linea di comando del kernel si fa questo.

Così, continuando con l'esempio sopra ed assumendo che il drive con il kernel GNU/Mach sia il master sul controller secondario, avremo:

  grub> kernel /boot/gnumach.gz -s root=device:hd2s1
   [Multiboot-elf, ...]

Quindi, il root filesystem server e l'exec server devono essere caricati. Questo si può fare usando le potenzialità modulari di boot di Grub. I parametri sono la semantica attraverso la quale il kernel passa alcuni importanti valori ai servers.

  grub> module /hurd/ext2fs.static --multiboot-command-line=${kernel-command-line}  --host-priv-port=${host-port} --device-master-port=${device-port} --exec-server-task=${exec-task} -T typed ${root} $(task-create) $(task-resume)
     [Multiboot-module 0x1c4000, 0x2cfe6a bytes]
  grub> module /lib/ld.so.1 /hurd/exec $(exec-task=task-create)
     [Multiboot-module 0x494000, 0x27afe bytes]

È importante che ogni stringa module sia separata da una sola riga. Aggiungiamo questo al file menu.lst di Grub il prima possibile.

Finalmente, Hurd può essere avviato:

grub> boot

Rilassati e guarda i messaggi scorrere. Questo è molto importante perchè c'è un bug in GNU Mach attraverso il quale premendo un tasto durante il processo di boot si provoca il kernel panic.

Se Hurd fallisce il boot, la causa potrebbe essere dovuto alla condivisione di IRQs: GNU Mach non funziona molto bene con essi. Puoi verificare questa situazione guardando, ad esempio, il file /proc/interrupts sotto GNU/Linux. Inoltre, poichè GNU Mach non supporta i moduli caricabili per il kernel, la maggior parte dei drivers sono compilati nel kernel di default. Se possiedi una vecchia periferica, questo potrebbe costituire un problema: un dispositivo potrebbe rispondere infatti a dei messaggi diretti ad un' altra periferica. Compilando un nuovo kernel con solo i drivers per i dispositivi posseduti o usati probabilmente risolverà il problema. GNU Mach può facilmente essere cross compilato. Se stai usando Debian, prova a dare un'occhiata al pacchetto gcc-i386-gnu.

Se questo non ti è di aiuto, esplora la lista delle risorse alla fine di questo documento. Infine, prova a chiedere all'appropriata mailing list.


Avanti Indietro Indice