Configurazione di Debian GNU/Hurd
Questo documento vuole fornire un insieme di istruzioni semplici e relativamente indolori su come configurare Debian GNU/Hurd con il minimo sforzo.
È basato su The Hurd Installation Guide
di Neal H. Walfield.
Grazie a Neal per il suo contributo.
Introduzione
La natura di GNU è simile a qualsiasi altro sistema Unix-like: dopo il
login all'utente viene presentata una shell e il familiare VFS (filesystem
virtuale) di Unix. Nonostante GNU tenti di essere conforme a POSIX, è "Non
Unix". GNU/Hurd è basato su molti dei concetti di Unix e li estende sia
aggiungendo nuove funzionalità che correggendo le cose che sono percepite
come imperfette nel progetto originale. La differenza più grande sono i
traduttori, dei programmi in spazio utente che interagiscono con il VFS.
Questi filesystem non risiedono nel kernel e nemmeno necessitano di essere
eseguiti come root; l'unica cosa che richiedono è l'accesso al supporto
sottostante e un mount point. Un'altra differenza è che i
processi anziché avere l'identità di un singolo utente fissata al momento
della creazione hanno le informazioni sull'identità separate dal processo,
quindi, con i giusti permessi, si possono aggiungere o rimuovere identità.
Essendo parente stretto dell'ambiente Unix (e in particolar modo dello spazio utente GNU che si trova in varianti anche molto popolari come GNU/Linux) è imperativo sentirsi a proprio agio con GNU. L'esperienza con gli strumenti Debian si rivela preziosa anche per la configurazione e la manutenzione di una macchina con GNU/Hurd.
Questa guida si sforza di rendere il processo di installazione di GNU/Hurd il più semplice possibile. Se si riscontrano degli errori (che sono certamente dovuti all'autore) si prega di segnalarli insieme a qualsiasi suggerimento o critica si voglia fare all'autore stesso; viene accettato tutto con immenso piacere.
Installazione
È possibile usare l'Installatore Debian, si veda le immagini dei CD. Poi seguire i passi proposti per eseguire un'installazione corretta.
Configurazione
La rete
Il modo-Debian non è ancora supportato: /etc/network/interfaces è ignorato, ifup e ifdown non funzionano. Per ora è supportato solo il modo-Hurd.
Se la rete non funziona, usare il seguente comando per recuperare dal driver DDE delle informzioni di debug:
# settrans -fgap /dev/netdde /hurd/netdde |
e poi chiudere (con kill) qualsiasi devnode e il processo pfinet in
modo da riavviarli con il nuovo netdde. Se continua a non funzionare,
inviare l'output del precedente comando settrans oltre che all'output
di lspci e lspci -n.
Per configurare la rete è necessario configurare prima il traduttore
pfinet. Questo lo si fa usando dhclient dal pacchetto
isc-dhcp-client, ma il suo avvio non è stato ancora
automatizzato perciò deve essere fatto manualmente, per esempio
dhclient /dev/eth0. Oppure manualmente con inetutils-ifconfig
dal pacchetto inetutils-tools e ping disponibile
nel pacchetto inetutils-ping. Oppure, infine, manualmente
usando il comando settrans per collegare
un tradutore a un certo nodo del filesystem e quando i programmi accedono
al nodo, per esempio inviando un RPC, il sistema operativo avvia in modo
trasparente il servente per gestire la richiesta.
# settrans -fgap /servers/socket/2 /hurd/pfinet -i /dev/eth0 -a a.b.c.d -g e.f.g.h -m i.j.k.l |
In questo esempio a settrans sono state passate diverse
opzioni. Le prime due fg
forzano tutti i traduttori esistenti
a disattivarsi. Le due successive ap
creano un traduttore sia
attivo che passivo, rendendo attivo un traduttore si possono immediatamente
vedere i messaggi di errore su stderr. Le opzioni seguenti salvano
il traduttore e gli argomenti nel nodo e quindi può essere riavviato in modo
trasparente in seguito (cioè rendono le impostazioni persistenti ai riavvii
del sistema). Le opzioni sono seguite dal nodo a cui deve essere collegato
il traduttore, infine c'è il programma (cioè il traduttore) da eseguire e
tutti gli argomenti da passargli. L'opzione -i
è l'interfaccia
su cui pfinet si metterà in ascolto, -a
è
l'indirizzo IP, -g
è il gateway e -m
è la maschera
di rete.
Assicurarsi di aggiungere i name server nel file /etc/resolv.conf:
nameserver 192.168.1.1 |
Testare la configurazione con ping -c2 gateway, l'opzione
-c è importantre per limitare il numero di ping, infatti
CONTROL-C non funziona in modalità singolo-utente.
Aiuto su settrans può essere ottenuto passando l'opzione
--help. L'aiuto su uno specifico traduttore può essere ottenuto
invocandolo dalla riga di comando con lo stesso argomento, per esempio:
# /hurd/pfinet --help |
Come in questo caso può essere generato molto output, si tenga
in considerazione l'uso di una pipe con un impaginatore come
less.
Anche per configurare il supporto IPv6 è necessario fare la configurazione su /servers/socket/2 e /servers/socket/26 facendo riferimento l'uno all'altro in modo che ne sia avviato uno solo, collegare entrambi i nodi:
# settrans -fgap /servers/socket/2 /hurd/pfinet -6 /servers/socket/26 -i /dev/eth0 -a a.b.c.d -g e.f.g.h -m i.j.k.l # settrans -fgap /servers/socket/26 /hurd/pfinet -4 /servers/socket/2 -i /dev/eth0 -a a.b.c.d -g e.f.g.h -m i.j.k.l |
Il server pfinet attiva la configurazione automatica di IPv6. È possibile ottenere lo stato attuale con fsysopts /servers/socket/26. Gli indirizzi possono essere anche impostati a mani usando, per esempio, -A 2001:123:123::42/64 -G 2001:123:123::1.
La configurazione di pfinet può essere cambiata anche in diretta (cioè senza scrivere sul disco) usando fsysopts:
# fsysopts /servers/socket/2 /hurd/pfinet --interface=/dev/eth0 --address=10.3.0.1 --netmask=255.255.0.0 --gateway=10.3.0.128 # fsysopts /server/socket/2 -a 10.3.0.2 -m 255.255.0.0 -g 10.3.0.128 |
Configurazione della tastiera
La mappa di tastiera può essere configurata usando il pacchetto
standard keyboard-configuration, sono supportate solo le
mappe di tastiera, le varianti non sono (ancora) supportate.
Verificare che sia installato
ed eseguire dpkg-reconfigure keyboard-configuration. Gli
effetti non saranno immediati poiché per applicare la nuova configurazione
è necessario riavviare la console.
Ulteriori filesystem
Il passo successivo è modificare /etc/fstab per aggiungere altri
filesystem e lo spazio di swap. È molto importante usare lo
spazio di swap, l'Hurd risulterà di un ordine di grandezza più stabile. Notare
che l'Hurd può condividere in modo trasparente una partizione di swap con
Linux ma sarà anche lieto di condividere qualsiasi altro dispositivo comprese
partizioni grezze come la partizione con la home. Normalmente nano
e vi sono gli unici editor installati con la distribuzione di
base.
Questo è un esempio del file /etc/fstab:
# <file system> <mount point> <type> <options> <dump> <pass> /dev/hd0s1 / ext2 rw 0 1 /dev/hd0s2 /home ext2 rw 0 2 /dev/hd0s3 none swap sw 0 0 |
Qualora manchi un qualsiasi device in /dev, ricordarsi di
crearlo con il comando MAKEDEV:
# cd /dev # ./MAKEDEV hd0s1 hd0s2 hd0s3 |
È anche possibile montare manualmente un filesystem usando
settrans:
# settrans /mnt /hurd/ext2fs /dev/hd0s5 |
L'idea dietro a questo comando è impostare sul nodo /mnt il
traduttore /hurd/ext2fs /dev/hd0s5. Verrà avviato
/hurd/ext2fs che inizierà a leggere/scrivere /dev/hd0s5
e a mostrarne il contenuto su /mnt. Ulteriori informazioni possono
essere trovate nella documentazione sui
traduttori.
Per montare un filesystem nfs viene usato il traduttore
/hurd/nfs. Quando è eseguito da un utente non privilegiato il
traduttore si connette al server utilizzando una porta superiore alla 1023.
Normalmente GNU/Linux non permette questo comportamento, per far accettare
a GNU/Linux le connessioni da porte non riservate si deve aggiungere
l'opzione insicure nella riga export. Segue un esempio di
/etc/exports in cui si suppone che l'indirizzo IP del client sia
192.168.1.2:
/home 192.168.1.2(rw,insecure) |
Per montarlo sul sistema GNU supponendo che l'indirizzo IP del server nfs sia 192.168.1.1 usare:
# settrans -cgap /mount/point /hurd/nfs 192.168.1.1:/home |
Buon divertimento con Debian GNU/Hurd
Cosa si può fare con Hurd?
Montare immagini di dischi
Le operazioni per accedere al contenuto di un'immagine di CD con un utente diverso da root su un sistema Unix standard sono un po' noiose. Su GNU/Hurd è sufficiente:
settrans ~/mnt /hurd/iso9660fs CD_image.iso |
Ciò è anche estremamente sicuro: il traduttore iso9660fs
è eseguito con l'identità dell'utente, non di root. È possibile anche
scrivere in proprio un traduttore per qualsiasi tipo si file system.
Esatto, è come FUSE ma senza tutte le schifezze.
FTP transparente
Quseto comando imposta un ftp trasparente su una
directory:
settrans -c /ftp: /hurd/hostmux /hurd/ftpfs / |
Adesso, è possibile fare cd su, per esempio,
/ftp://ftp.gnu.org/ ed eseguire ls.
Quindi è possible eseguire dalla propria home
tar xf ftp://ftp.gnu.org/pub/gnu/gcc/gcc-4.6.0/gcc-4.6.0.tar.bz2
!
Sub-Hurd
Un sub-Hurd è un sottosistema completo; a prima vista è molto simile a un contenitore per la virtualizzazione, con l'eccezione che non è assolutamente necessario essere root per attivarlo.
gdb ext2fs, pfinet, ...
Sì, è possibile eseguire gdb su, per esempio, l'implementazione di ext2fs,
lo stack TCP/IP pfinet, ecc.
E molto altro!
Tra le cose su cui si sta lavorando ci sono mboxfs,
tarfs, xmlfs, gopherfs, ...
Ritocchi finali
Seguono dei suggerimenti veloci utili durante l'installazione, si raccomanda di leggere anche la documentazione: la documentazione su Debian GNU/Hurd e anche il sito web di Hurd.
Installazione di altri pacchetti
Esistono diversi modi per aggiungere altri pacchetti, è possibile
scaricarli e installarli con dpkg -i ma è molto scomodo.
Il modo più semplice è usare apt-get. Aggiungere in
/etc/apt/sources.list
una delle seguenti voci per
unreleased da uno dei http://www.debian-ports.org/mirrors
e installare il pacchetto debian-ports-archive-keyring:
deb http://ftp.debian-ports.org/debian unreleased main |
http://ftp.debian-ports.org/ e i suoi mirror contengono dei pacchetti modificati o con delle patch ancora non integrati nella versione originale né in Debian.
E unstable da uno dei mirror Debian (per l'elenco completo dei mirror vedere http://www.debian.org/mirror/list) che dispone dell'architettura hurd (se apt segnala "bad archive mirror", provare con un altro mirror):
deb http://ftp.fr.debian.org/debian unstable main |
Se dpkg si lamenta riguardo a dei programmi mancanti
durante la prima esecuzione di apt-get, avviarlo da una
shell come amministratore (cioè su -, non è sufficiente
su).
Se GNU Mach non riconosce la scheda di rete o si usa un modem, l'unico modo per aggiornare i pacchetti è scaricarli e poi trasferirli nel sistema GNU. Il modo più semplice per fare queste operazioni è usare apt fuori-linea. Vedere /usr/share/doc/apt-doc/offline.text.gz per le istruzioni dettagliate.
La console Hurd
Oltre alla console Mach già vista durante l'installazione, GNU/Hurd ha una potente console in spazio-utente che fornisce terminali virtuali. Se l'installazione è avvenuta in modalità grafica, questa console dovrebbe partire automaticamente all'avvio, è comunque possibile avviarla manualmente con il seguente comando:
# console -d vga -d pc_mouse --repeat=mouse -d pc_kbd --repeat=kbd -d generic_speaker -c /dev/vcs |
L'avvio automatico della console viene abilitato in /etc/default/hurd-console.
Nella console Hurd si può passare da un terminale virtuale a un altro con ALT+F1, ALT+F2 e così via. ALT+CTRL+BACKSPACE chiude la console Hurd causando il ripristino della console Mach da dove si può riaprire la console Hurd con il comando precedente.
X.Org
È stato fatto il port di X.Org, tutte le schede video supportate che non richiedono un modulo del kernel o drm dovrebbero funzionare.
È necessario essere nella console Hurd e ripetere l'installazione
come indicato nella sezione precedente. Per esempio, controllare che
echo $TERM stampi hurd e verificare che
/dev/cons/kbd e /dev/cons/mouse esistano.
È necessario eseguire dpkg-reconfigure x11-common per consentire a tutti gli utenti di avviare Xorg perché il wrapper X non sa nulla di Hurd né delle console Mach.
Può anche essere necessario creare un /etc/X11/xorg.conf per attivare lo shortcut control-alt-backspace:
Section "InputDevice" Identifier "Generic Keyboard" Driver "kbd" Option "XkbOptions" "terminate:ctrl_alt_bksp" EndSection |
Sono necessari parecchi pacchetti per X: xorg,
rxvt e un window manager twm, fvwm o wmaker
sono un buon inizio.
X.Org funziona senza alcun file di configurazione. In alcuni casi potrebbe essere necessario usa il driver vesa.
Infine, eseguire startx.
Ultime parole
Ancora non viene usato il sistema SysV. Per spegnere il sistema, usare
halt o reboot.
