Qualche settimana fa mi sono imbattuto in un howto un pò scarno e non del tutto aggiornato che spiegava come installare Gnu/Hurd in un’immagine virtuale con qemu. È stata un’occasione per imparare un paio di cose riguardo questo software di virtualizzazione e di scrivere un articolo. Se non siete pratici di qemu consiglio prima di leggere quell’articolo per capire un pò meglio quello che faremo.
Da gnu.org
GNU Hurd sostituisce, all’interno del progetto GNU, il kernel Unix. Hurd è un insieme di server che vengono eseguiti sul microkernel Mach per implementare file system, protocolli di rete, controlli di accesso ai file, e altre caratteristiche che sono implementate nel kernel Unix o in altri kernel simili (come Linux).
Il nome è tutto un programma, è un acronimo ricorsivo di un acronimo ricorsivo e sta per: “Hird of Unix-Replacing Daemons’. Mentre, “Hird” significa “Hurd of Interfaces Representing Depth”.
In sostanza Hurd è un kernel, Gnu/Hurd è il nostro Gnu/Linux ma senza Linux. Hurd può dare l’idea di essere un progetto portato avanti dalla Free Software Foundation per un semplice motivo etico ideologico. Probabilmente senza Linus e il suo kernel il progetto Gnu ci avrebbe messo molto più tempo per decollare, ma c’è chi pensa che sarebbe stato molto meglio.
A noi ce ne frega relativamente…le motivazioni ideologiche (seppur forti) le lascio a voi…pensiamo a farlo funzionare per ora! 😀
Il nostro obbiettivo sarò ottenere questo 😉
INSTALLAZIONE
Abbiamo bisogno di:
- Qemu + kqemu (oppure kvm)
- 2GB di spazio libero
- L’iso di Debian/Hurd (si useremo debian! Attualmente l’ultima versione disponibile è la k14)
- Un’immagine floppy di Grub
- La nostraGnu/Linux box funzionante (non sia mai che qualche winzozziano pensi che Hurd sia un nuovo antivirus che gli salva il sedere…o chissà quale altra diavoleria) 😉
Procediamo:
1) Prima creiamo l’immagine con qemu-img
qemu-img create hurd.img 2G
2) Ora installiamo il sistema con l’installer classico di debian.
Avviamo qemu così:
qemu -boot d -hda hurd.img -cdrom debian-K10-hurd-i386-CD1.iso
Ci troveremo davanti all’installer
Ora facciamo i punti 1 2 4 6 7:
- Configuriamo la tastiera (anche se sembra inutile purtroppo).
- Partizioniamo l’hard disk in un’unica partizioneprimaria da 2GB.
- Inizializziamo una partizione Gnu/Hurd.
- Installiamo il sistema base, per ora limitiamoci a usare il cd come fonte dei pacchetti. (ci può mettere un bel pò)
- Riavviamo e chiudiamo qemu con Ctrl-C nel terminale.
3) Configuriamo grub
Ora montiamo l’immagine del floppy di grub per poterla modificare:
mkdir grub
mount -o loop grub-0.97-i386-pc.ext2fs grub
nano grub/boot/grub/menu.lst
Nel file menu.lst di grub mettiamo questo (scarica il file e rinominalo, wordpress storpia alcuni caratteri meglio non rischiare sennò non parte niente)
Smontiamo l’immagine di grub prima di far ripartire qemu
4)Avviamo GNU/Hurd per la prima volta
qemu -boot a -hda hurd.img -fda grub-0.97-i386-pc.ext2fs -M isapc
Prima schermata di grub con la scritta GNU/Hurd…la soddisfazione inizia a salire.
./native-install
reboot
./native-install
Se fino ad ora vi eravate spaventati, ora c’è qualcosa di famigliare 😉
Dopo il secondo native-install chiudete hurd e qemu.
5) Configuriamo la console
Bisogna fare un paio di accorgimenti per far partire di default la console vera e propria.
Rimontiamo l’immagine di grub e apriamo con nano il file menu.lst; la terza riga la trasformiamo così:
kernel (hd0,0)/boot/gnumach.gz root=device:hd0s1 -s
In pratica aggiungiamo “-s” alla fine.
Smontiamol’immagine di grub e riavviamo qemu
Finito il boot digitiamo:
mount / -o remount,rw
export TERM=mach
nano /etc/default/hurd-console
Cambiamo il valore di ENABLE da false in true
mount / -o remount,ro
Chiudiamo Hurd e qemu, ora rimontiamo l’immagine di grub e togliamo il “-s” da dove l’avevamo messo prima.
Riavviamo qemu ma questa volta togliamo il “-M isapc” finale:
qemu -boot a -hda hurd.img -fda grub-0.97-i386-pc.ext2fs
Per loggarsi diamo un “login root” 😉
Ora abbiamo GNU/Hurd installato configurato e funzionante, si spera 😉
6) Configuriamo la rete e aggiorniamo il sistema
Per configurare la rete diamo questi comandi (i valori si riferiscono alla scheda di rete che emula qemu)
settrans -fgap /servers/socket/2 /hurd/pfinet -i eth0 -a 10.0.2.16 -g 10.0.2.2 -m 255.255.0.0
nameserver 10.0.2.3
nano /etc/apt/sources.list
Nel sources.list mettiamo questi repository
deb http://ftp.gnuab.org/debian unreleased main
deb http://ftp.de.debian.org/debian unstable main
E via con apt-get update e dist-upgrade!! 😀
A questo punto io ho avuto parecchi problemi con i pacchetti, non mi metto a scrivere come ho risolto perchè alla fine è semplice ma soprattutto probabilmente è un problema momentaneo. Ora avete Gnu/Hurd installato funzionante e aggiornato, io ho installato anche il server grafico xorg e un paio di DE minori (da quello che so mancano alcuni porting quindi kde/gnome ce li sognamo) però non sono mai andato oltre al login grafico. È comunque interessante pensare che alla fin fine pur essendo un kernel diverso ci si senta comunque a casa, questo grazie a tutti i tool Gnu che abbiamo a disposizione ma che a volte diamo per scontato pensando solo al kernel Linux
Auguri 😉
Ah…la lista italiana di Hurd hurd-it.sourceforge.net