[image of the Hurd logo] [ English | French | German | Japanese | Spanish | Italian ]
What\'s New
 
ChangeLogs
The GNU Hurd
 
Documentation
Installation
Getting Help
Source Code
Development
History
 
GNU Mach
 
Documentation
Installation
Source Code
 
MiG
 
Source Code
 
Related Projects

Frequently Asked Questions a proposito di GNU Hurd

Questo documento prova a rispondere alle domande che piu' spesso sorgono agli utenti quando parlano, installano, usano, compilano e sviluppano lo GNU Hurd cosi' come la sua distribuzione binaria Debian GNU/Hurd. Assicurati di aver letto questo prima di chiedere aiuto.

Lo GNU Hurd e' sotto attivo sviluppo e non e' stata ancora rilasciata una versione stabile. Fai attenzione: c'e' ancora molto lavoro da fare; troverai bachi; il tuo sistema crashera'. Detto questo, c'e' molto spazio per contribuire ad ogni livello: sviluppo dell'Hurd e di Mach, porting di applicazioni, scrittura di documentazione e, soprattutto, apporto di feedback da parte degli utenti.

Se dovessi avere una domanda che non ha una risposta in questo documento e ritenessi che la debba avere, pubblicala, se possibile con una risposta.

Ogni sezione e' coperta da copyright del(i) rispettivo(i) autore(i). E' concesso il permesso di copiare, distribuire e/o modificare questo documento secondo i termini della GNU Free Documentation License, Version 1.1 o ogni versione successiva pubblicata dalla Free Software Foundation; con nessuna ``Invariant Section'', nessun ``Front-Cover Text'' e nessun ``Back-Cover Text''. Una copia della licenza e' inclusa nel file COPYRIGHT.

                                                     Neal H Walfield
						     neal@cs.uml.edu

Tradotto da Giorgio bitflesh Luparia <bitflesh at autistici dot org>


Table Of Content

1. Sezione Generale

1.1. Cos'e' un ``Multiserver Microkernel''?

1.2. Grammaticalmente parlando, cos'e' l'Hurd?

1.3. Che mailing list esistono?

1.4. Dove posso pubblicare dei bug reports?

1.5. C'e' una lista di cose da fare? (TODO)

1.6. A quando la prossima release?

1.7. Perche' `/usr' e' un link simbolico a `.'?

2. Installazione

2.1. Dove trovo Debian GNU/Hurd?

2.2. Come installo Debian GNU/Hurd?

2.3. Che tipo di hardware e' supportato?

2.4. Che tipo di partizione dovrei usare per le partizioni GNU/Hurd?

2.5. Come vengono chiamate le partizioni?

2.6. Posso usare partizioni piu' grandi di 2GB?

2.7. Quanta swap mi serve?

2.8. Posso condividere lo spazio di swap tra GNU GNU/Linux e GNU/Hurd?

2.9. Perche' mi trovo un ``Operation not permitted error''?

2.10. Una volta che il `native-install' e' terminato, dovevo scrivere iinn qquueessttoo mmooddoo. In particolare, dovevo scrivere `rreebboooott` per riavviare.

3. Setup

3.1. Come aggiungo una partizione di swap?

3.2. Come posso impostare la rete?? Come imposto un loopback device?

3.3. Come posso passare opzioni a `serverboot'?

3.4. Posso usare la versione GNU/Linux di `e2fsck' su una partizione GNU/Hurd?

3.5. Perche le pipe non funzionano?

4. Uso

4.1. Dove trovo documentazione?

4.2. Cos'e' un translator?

4.3. Cos'e' una shell di login?

4.4. Come uso le combinazioni dei tasti di una tastiera non-US?

4.5. Come attivo il colore sulla console?

4.6. Come posso attivare le console virtuali?

4.7. Qual e' lo stato di X?

4.8. Perche' X non funziona?

4.9. Cosa sono questi strani pid `2' e `3'?

4.10. Perche' `ps aux' mi da uno strano output?

4.11. Ho un processo stallato che vorrei killare, ma anche `ps' ora si blocca.

4.12. Dove sono ...

4.13. C'e' un filesystem `/proc'?

4.14. Perche' il comando `df' non funziona?

4.15. Perche' i miei translator muoiono?

4.16. Perche' posso `leggere' (`read') una directory?

5. Soluzione Problemi

5.1. Quando il supporto per APM nel BIOS disattiva i miei dischi rigidi, l'Hurd non riesce a risvegliarli. Dove sbaglio?

5.2. Cosa sono questi messaggi che si riferiscono a `default pager', `paging', e `pager request'?

5.3. Che cos'e' un gratuitous error?

5.4. Cosa significa ``/dev/hd0s1: MOUNTED READ-ONLY; MUST USE `fsysopts --writable'''?

5.5. Quando GNU/Hurd crasha, GNU Mach riavvia automaticamente. C'e' qualche cosa che posso fare per farlo fermare e poter cosi' annotare l'errore?

6. Porting

6.1. Di quali programmi e' stato fatto un porting?

6.2. E' facile fare porting a GNU/Hurd?

6.3. Come posso aiutare?

7. Compilare

7.1. Dove posso ottenere i sorgenti?

7.2. Posso compilare da un'altro OS? (cross compiling)

7.3. Consigli generali?

8. Sviluppo

8.1. Cos'e' OSKit-Mach?

8.2. Dov'e' la documentazione?

8.3. Come posso assicurarmi che il mio codice e' conforme a POSIX?

8.4. A chi fornisco le patch?

8.5. In che formato dovrebbero essere le patch per l'Hurd e per GNU Mach?


1. Sezione Generale

1.1. Cos'e' un ``Multiserver Microkernel''?

{NHW} Un Microkernel non ha nulla a che fare con la grandezza del kernel. Piuttosto, si riferisce alle funzionalita' che il kernel fornisce. E' generalmente riconosciuto che queste sono: un set di interfaccie che permettano ai processi di comunicare e che forniscano una via per comunicare all'hardware. I ``Drivers Software'', come mi piace chiamarli, sono successivamente implementati in user space come servers. Gli esempi piu' ovvi sono: lo stack TCP/IP, il filesystem ext2 e NFS. Nel caso dell'Hurd, gli utenti hanno ora accesso a funzionalita' che, in un kernel monolitico, non avrebbero mai potuto usare, ma ora, poiche' i server girano un user space come l'utente che li ha lanciati, potrebbero, ad esempio, montare un filesystem ftp nella loro home directory.

Per maggiori informazioni a proposito del design dell'Hurd, si consiglia di leggere il documento di Thomas Bushnell, BSG: ``Towards a new strategy on OS design'', disponibile a:

	http://www.gnu.org/software/hurd/hurd-paper.html

1.2. Grammaticalmente parlando, cos'e' l'Hurd?

{NHW} ``Hurd'', come acronimo, sta per ``Hird of Unix-Replacing Daemons''. Hird, a sua volta, sta per ``Hurd of Interfaces Representing Depth''.

Trattiamo ``Hurd'' come un titolo piu' che come un nome proprio: necessita dell'articolo, come in ``l'Hurd'' (``lo Hurd'', originariamente ``the Hurd''). Per esempio: "Il filesystem ext2 e' fornito dall'Hurd, non da Mach.'' Nota che le seguenti forme sono scorrette: ``Hurd'', ``HURD'', ``The HURD'', and ``the hurd''.

Scriviamo ``lo GNU Hurd'' (``the GNU Hurd'') invece di ``l'Hurd'' (``the Hurd'') quando vogliamo far notare che l'Hurd e' un pacchetto GNU. Una volta che questo sia chiaro, si puo' solitamente usare la forma piu' breve, senza ``GNU''.

L'intero sistema operativo include non solo il kernel e i server del sistema, ma anche molti altri programmi. Questo sistema e' chiamato ``GNU'', o ``il sistema operativo GNU''. I programmi GNU possono anchr girare su kernel di altri sistemi operativi. Diciamo ``GNU/Hurd'' quando vogliamo sottolineare che si tratta del sistema GNU che gira sopra all'Hurd, al contrario del sistema GNU/Linux che gira usando il kernel Linux.

In ultima analisi, c'e' ``Debian GNU/Hurd''. Questo si riferisce alla distribuzione del sistema GNU creata dagli sviluppatori Debian. Ad esempio: ``Che sistema operativo usi sul tuo laptop? Debian GNU/Hurd, ovviamente.''

I francesi generalmente scrivono ``le Hurd''; cioe' trattano il nome come un maschile seingolare, trattando le maiuscole come in inglese.

Quando ci riferiamo al microkernel, diciamo ``Mach'' e lo usiamo come un nome proprio. Per esempio: ``Mach usa i device driver che si trovano nella versione 2.0.x di Linux.'' A volte diciamo ``Il microkernel Mach'' invece di dire semplicemente ``Mach''.

Nota del traduttore: c'e' una certa difficolta' nel tradurre correttamente questa sezione, si accettano commenti.

1.3. Che mailing list esistono?

{NHW} Ci sono quattro mailing list principali:

Le mailing list si sottoscrivono come al solito.

1.4. Dove posso pubblicare dei bug reports?

{NHW} Usa il bug tracking system di Debian. Puoi trovare piu' informazioni a proposito del BTS a http://www.debian.org/Bugs.

1.5. C'e' una lista di cose da fare? (TODO)

{NHW} Si, effettivamente piu' di una.

  • <hurd>/tasks

  • <hurd>/TODO

1.6. A quando la prossima release?

{NHW} Nessuno sembra saperlo. Comunque, l'Hurd gira senza problemi particolari, provalo e aiutaci a svilupparlo.

1.7. Perche' `/usr' e' un link simbolico a `.'?

{MB} La distinzione tra `/' e `/usr' ha ragioni storiche. Dai giorni in cui i sistemi Unix erano bootati da due nastri, un piccolo nastro root e un grande nastro user. Oggi, ci piace usare due differenti partizioni per questi due spazi. L'Hurd getta via questa pattumiera storica. Pensiamo di aver trovato una soluzione piu' flessibile chiamata `shadow filesystem'. Sfortunatamente, il supporto per gli shadowed filesystem non e' ancora implementato.

2. Installazione

2.1. Dove trovo Debian GNU/Hurd?

{NHW} Poiche' GNU/Hurd e' un port Debian unstable ufficiale, puoi trovare i binari in un qualsiasi mirror Debian. Ci sono, ad ogni modo, vari pacchetti principali che non compilano correttamente dai sorgenti e hanno, sfortunatamente, molti hacks. Questi possono essere trovati a:

	ftp://alpha.gnu.org/gnu/hurd/debian.

Una volta che hai una installazione funzionante, puoi ``puntare'' apt verso gli archivi aggiungendo le seguenti righe al tuo /esc/apt/sources.list . Per esempio:

	deb ftp://alpha.gnu.org/gnu/hurd/debian unstable main
	deb http://http.us.debian.org/debian unstable main

Visto che scaricare tutti questi pacchetti puo' richiedere molto tempo (c'e' piu' di un gigabyte di files), Philip Charles ha creato dei CD di Debian GNU/Hurd. Rivenditori possono essere trovati ai seguenti siti:

	http://www.debian.org/ports/hurd/hurd-cd

2.2. Come installo Debian GNU/Hurd?

{NHW} Consulta una delle guide all'installazione. La guida piu' aggiornata puo' essere trovata a:

	http://web.walfield.org/papers/hurd-installation-guide/

2.3. Che tipo di hardware e' supportato?

{NHW} Al momento, lo GNU Hurd gira solo su macchine IA32. Comunque il porting verso altre architetture non dovrebbe essere difficile: il codice e' stato sempre scritto facendo attenzione alla portabilita'.

In quanto ai driver, GNU Mach usa un subset dei driver contenuti nel kernel Linux 2.0.x. Una guida relativamente completa della compatibilita' dell'hardware puo' essere trovata a:

	http://www.nongnu.org/thug/gnumach_hardware.html

Se finisci nei guai, e' probabile che:

  • Stai usando l'IRQ sharing; GNU Mach non lo supporta.

  • Un device driver sta incasinando l'hardware e attivando accidentalmente un dispositivo sbagliato.

Nel primo caso, dovresti cominciare a rimuovere i device o a giocare con il BIOS. Nel secondo caso, GNU Mach non supporta i loadable kernel modules (moduli caricabili del kernel, n.d.T.), quindi, dovrai ricompilare un nuovo kernel e attivare solo quei dispositivi di cui hai veramente bisogno.

2.4. Che tipo di partizione dovrei usare per le partizioni GNU/Hurd?

{MB} Dovresti usare un filesystem ext2. In alternativa, potresti usare un filesystem ufs in stile BSD. Il numero del tipo di partizione per ext2fs e' 0x83 (e' lo stesso che per Linux), non 0x63 (GNU HURD). Thomas spiega perche' 0x63 e' la scelta sbagliata:

	Un giorno potremmo avere un nuovo formato di filesystem, che
	sara' probabilmente chiamato il formato del filesystem dello GNU
	Hurd, e potremo usare quel codice di partizione.

In ogni caso, come fa notare Roland, e' sempre un errore usare quel codice per una partizione ext2fs.

2.5. Come vengono chiamate le partizioni?

{MB,NHW} Sapevo che l'avresti chiesto. Se dovessi ridurre queste FAQ ad una sola domanda, sceglierei questa. E' abbastanza semplice, ma devi sapere che ci sono in effetti molte incompatili convenzioni per i nomi delle partizioni.

Innanzi tutto, l'Hurd: se il disco in questione e' un disco SCSI, devi conoscere il numero dello SCSI device; se e' un disco IDE, devi sapere su quale controller e' montato il disco e se e' un master o uno slave. L'Hurd usa la convenzione di BSD per nominare le partizioni, per la quale, e' da dire, i dischi sono ordinati a seconda della loro posizione fisica, numericamente, partendo da zero. Questo schema di nomenclatura e' abbastanza simile a quello trovato in Linux. La', il disco master sul controller primario viene chiamato `hda' e lo slave `hdb'. Sul controller secondario, il master e lo slave sono chiamati rispettivamente `hdc' e `hdd'. Sotto l'Hurd, `hda' diventerebbe `hd0', `hdb' sarebbe chiamato `hd1', eccetera.

Nell'Hurd, come in BSD, le partizioni sono chiamate `slices' e sono numerate partendo da uno. Quindi, per nominare una particolare partizione, prendiamo il nome del disco, aggiungiamo una `s' e il numero della partizione. Ancora una volta cio' e' simile a Linux, tranne per il fatto che in Linux non ci sono `s'. Ad esempio, `hda1' diventerebbe `hd0s1'.

GRUB, il boot loader, usa una nomenclatura completamente differente: GRUB interroga il BIOS e inserisce ogni disco a turno in un array. Sia i dischi che le partizioni sono numerati a partire da zero. Il formato e': `hd (<disco>, <partizione>)'. Quindi, `hd (0, 1)' si riferisce alla seconda partizione sul primo drive rilevato dal BIOS. Siccome ora Grub ha il completamento automatico, non si fa molta fatica ad indovinare.

2.6. Posso usare partizioni piu' grandi di 2GB?

{MB} No, non al momento. I server per il filesystem hanno bisogno di essere modificati per non mappare tutto in memoria, il che non e' troppo difficile. Per i file larghi, alcune interfaccie devono essere modificate, che e' un po' piu' difficile ma ancora fattibile.

2.7. Quanta swap mi serve?

{NHW} Di solito molta; una volta che essa fosse esaurita, Mach andrebbe in panic. Io ho minimo 128MB di ram e 256MB di swap su tutte le macchine su cui gira GNU/Hurd.

2.8. Posso condividere lo spazio di swap tra GNU GNU/Linux e GNU/Hurd?

{NHW} Si'. Il pager di default riconosce e rispetta le partizioni swap di Linux. Swappera' anche in una partizione raw, cioe' ogni cosa che non riconosce come una swap di Linux. Quindi, STATE ATTENTI.

2.9. Perche' mi trovo un ``Operation not permitted error''?

{MB} Ti sei scordato di settare l'owner della partizione GNU/Hurd a ``hurd''. L'Hurd usa informazioni addizionali negli inodes per impostare i translators. Per far funzionare tutto cio', la partizione va contrassegnata come ``appartenente all'Hurd''. Questo e' fatto di solito usando l'opzione `-o hurd' con mke2fs` creando la partizione da un altro sistema operativo (il filesystem creato in GNU/Hurd imposta automaticamente questa opzione). Se non riesci a fare questo, puoi sempre usare lo script `e2os'.

2.10. Una volta che il `native-install' e' terminato, dovevo scrivere iinn qquueessttoo mmooddoo. In particolare, dovevo scrivere `rreebboooott` per riavviare.

{MB} Divertente, no? Oltre al server `term' in `/tmp/console', un'altro server `term' e' partito e sta sdoppiando l'input della tastiera. Dopo un reboot questo problema svanisce in quanto solo un server `term' rimarra'. Se `tar' supportasse i translator, non avremmo questo problema... Anche se non incontri questo errore subito dopo l'installazione, riavvia immediatamente per non incontrare questo bug per sbaglio.

3. Setup

3.1. Come aggiungo una partizione di swap?

{MB} Una partizione di swap e' indicata anche come un file di paging. Di solito, e' sufficiente aggiungere la partizione a `/etc/fstab', esattamente come faresti sotto Linux. Puoi swappare in una partizione swap di Linux e l'Hurd onorera' la signature della swap Linux (tutte le versioni). L'Hurd swappera' semplicemente e felicemente su qualsiasi altro spazio disco libero cancellando ogni cosa che trova. Quindi, stai attento!

Se vuoi swappare in un file o essere sicuro che controlli la signature della swap Linux prima, devi editare `/boot/servers.boot'. La sintassi e' il nome del file del device della partizione piu', opzionalmente, il file di swap all'interno di una partizione ext2fs, seguito da uno spazio, e poi una stringa tra le seguenti: `$(add-raw-paging-file)', `$(add-linux-paging-file)', `$(add-paging-file)'. La prima lavora con qualsiasi partizione o file e non tiene conto di alcuna signature o di altri dati. La seconda ha un controllo di sicurezza e usa il file solo se una signature di swap Linux e' trovata. La terza cerca una signature prima, e ripiega su spazio libero raw se non ne trova nessuna. Questo e' anche il default per le voci in `/etc/fstab'.

3.2. Come posso impostare la rete?? Come imposto un loopback device?

{MB} Nel primo caso, accertati che GNU Mach ha rilevato la tua scheda di rete. In ogni caso, devi impostare `pfinet'. La documentazione si trova a:

	http://www.debian.org/ports/hurd/hurd-doc-server#pfinet

Non scordarti di riempire `/etc/resolv.conf', `/etc/hosts', ecc.

Ovviamente, dovrai fare questo solo se le routine dell'installazione non l'avranno fatto per te.

3.3. Come posso passare opzioni a `serverboot'?

{MB} Passale al kernel (cioe' alla linea di comando del GRUB) e le passera' a `serverboot' automaticamente.

3.4. Posso usare la versione GNU/Linux di `e2fsck' su una partizione GNU/Hurd?

{MB} Si', almeno dalla versione `e2fsprogs-1.05'. Controlla con `e2fsck -V' prima.

{NHW} Non provare a deframmentare la tua partizione in quanto questa utility non conosce i translators.

3.5. Perche le pipe non funzionano?

{MB} `settrans -fgc /servers/socket/1 /hurd/pflocal' dovrebbe aiutare.

4. Uso

4.1. Dove trovo documentazione?

{NHW} Non ci sono man pages ne' info nodes per i translator dell'Hurd e per i loro comandi. La documentazione sta all'interno dei binari e puo' essere trovata passando l'opzione `--help' al dato comando. Per esempio:

	# /hurd/ext2fs --help

ti dira' che tipo di opzioni accetta il translator ext2fs.

4.2. Cos'e' un translator?

{MB} C'e' un documento sui translator disponibile a:

	http://www.debian.org/ports/hurd/hurd-doc-translator

Leggi questo e chiedi ulteriori informazioni sulle mailing list.

4.3. Cos'e' una shell di login?

{MB} L'Hurd ha il concetto di utenti non-logged in. Questi utenti non hanno id ne id di gruppo. Cio' deriva dal fatto che l'Hurd supporta varie impostazioni per uid e gid e una possibilita' e', ovviamente, l'impostazione vuota. Anziche' impedire l'accesso, in questo caso, i filesystem dell'Hurd offrono una quarta tripletta di permessi (cioe' rwx) che e' usata per determinare i privilegi per gli utenti senza credenziali. Questo, comunque, deve essere impostato per un file alla volta. Per default, la tripletta dei permessi `other' e' usata.

La shell di login dell'Hurd e' una shell che gira senza uid ne' gid. Per restringere l'accesso ai tuoi files, imposta e modifica la quarta tripletta di permessi o cambia la shell di login dell'utente `login' nel password file a `/bin/loginpr`, che implementa il prompt standard di login.

4.4. Come uso le combinazioni dei tasti di una tastiera non-US?

{NHW} Guarda qui:

	ftp://alpha.gnu.org/gnu/hurd/contrib/marcus/keymap.tar.gz

4.5. Come attivo il colore sulla console?

{NHW} Se stai usando il microkernel GNU Mach, puoi impostare il tuo terminale a `mach-color'. Per esempio:

	# export TERM=mach-color

4.6. Come posso attivare le console virtuali?

{NHW} Attualmente non c'e' supporto per le console terminali. Puoi, pero', usare `screen'. E' molto piu' flessibile, in ogni caso.

Kalle Olavi Niemitalo <tosi@ees2.oulu.fi> ha iniziato a lavorare su colortext. Il suo compito era di fornire un programma pieno di feature che faccia multiplexing sulla console in userspace leggendo dal device /etc/kdb. Controlla:

	http://stekt.oulu.fi/~tosi/

{MB} Ecco alcune opzioni utili da aggiungere al tuo ~/.screenrc per fargli emulare i terminali virtuali di Linux un po' meglio:

	bindkey ^[O0 select 0
	bindkey ^[O1 select 1
	bindkey ^[O2 select 2
	bindkey ^[O3 select 3
	bindkey ^[O4 select 4
	bindkey ^[O5 select 5
	bindkey ^[O6 select 6
	bindkey ^[O7 select 7
	bindkey ^[O8 select 8
	bindkey ^[O9 select 9
	
	# Sfortunatamente, Mach ignora i modificatori sui tasti freccia.
	# Questo puo' essere corretto, ma per ora dovremmo semplicemente
	# usare un'altro tasto per muovere avanti e indietro.
	# ^[, e' ALT + ","
	# ^[. e' ALT + "."
	bindkey ^[, prev
	bindkey ^[. next

4.7. Qual e' lo stato di X?

{MB} Funziona! I pacchetti sono disponibili sui mirror ftp di Debian. E' disponibile XFree86 4.0.2, come ci sono alcuni server della versione 3. Le instruzioni su come usare i pacchetti sono nell'archivio della mailing list.

4.8. Perche' X non funziona?

{MB} Prova `export LD_LIBRARY_PATH=/usr/X11R6/lib'. Questo riguarda il linker. GNU/Hurd si aspetta che `RPATH' sia usato, mentre Debian prende certe misure per evitare questo. Nota che questo non funziona per i binari suid a causa di implicazioni di sicurezza. Ci aspettiamo di correggere questo usando `RUNPATH', che e' specificato nei nuovi standard ELF.

4.9. Cosa sono questi strani pid `2' e `3'?

{MB} 2 e' il kernel, 3 e' il pager di default e 4 e' il filesystem root.

4.10. Perche' `ps aux' mi da uno strano output?

{MB} Prova `ps Aux'.

4.11. Ho un processo stallato che vorrei killare, ma anche `ps' ora si blocca.

{MB} Interrompilo e passagli l'opzione `-M'.

{NHW} Di default, `ps' ottiene informazioni sia dal proc server che dai processi stessi (attraverso la loro message port). Se un processo si blocca, non potra' rispondere alla sua message port e quindi ps aspettera' per sempre. L'opzione `-M' forza ps a non cercare di ottenere informazioni che potrebbero necessitare dell'uso delle message port.

4.12. Dove sono ...

{MB} Non e' ancora stato fatto il porting di `fdisk' e `dmesg'.

Invece di `free', usa `vmstat' e `vminfo'.

Per i messaggi del kernel, leggi direttamente `/dev/klog'. Nota che, una volta letto, e' perduto per sempre.

{NHW} `ifconfig' non esiste. Prova:

	# /hurd/pfinet --help

Per dhcp, dai un occhiata a hurd/trans/pump.c; e' l'inizio di un client dhcp per l'Hurd.

4.13. C'e' un filesystem `/proc'?

{MB} No. Puo' darsi che ci sara' un filesystem di emulazione un giorno per programma che lo richiedono. Se si stai chiedendo a cosa serve la vuota directory `/proc', e' un rifiuto lasciato da un pacchetto di Debian GNU/Linux (in particolare `base-files').

Puoi cercare i device dell'hardware esistente con l'utility devprobe.

4.14. Perche' il comando `df' non funziona?

{NHW} Funziona, devi solo dirgli quale filesystem interrogare. Ad esempio:

	# df /

4.15. Perche' i miei translator muoiono?

{NHW} Prova a passare il flag `-ap' a settrans. Di default, settrans imposta soltanto un translator passivo, quindi nessun output sara' mostrato sul tuo terminale. Usando `-ap', invece, imposta sia il translator attivo che quello passivo il che significa che il translator parte immediatamente e il suo stderr e' connesso al tuo terminale.

In piu', il problema maggiore e' passare path relativi ai translator passivi. Non puoi sapere in anticipo la directory di lavoro di un translator quando e' impostato come passive.

4.16. Perche' posso `leggere' (`read') una directory?

{MB} E' importante capire che non c'e' nulla di speciale nel leggere una directory sotto l'Hurd: e' soltanto un'altro file. Questo concorda con il concetto di translator dove un translator puo' apparire come una directory ma funzionare anche come un file.

5. Soluzione Problemi

5.1. Quando il supporto per APM nel BIOS disattiva i miei dischi rigidi, l'Hurd non riesce a risvegliarli. Dove sbaglio?

{MB} APM non e' supportato nella versione attuale di GNU Mach, siamo spiacenti. Vi preghiamo di disattivare APM nel setup del vostro BIOS.

5.2. Cosa sono questi messaggi che si riferiscono a `default pager', `paging', e `pager request'?

{MB} Il pager di default controlla l'allocazione della memoria virtuale. Se non puo' allocare una nuova pagina di memoria perche' hai finito la memoria, possono succedere alcune cose terribili. Quando dovessi incontrare errori del genere, ti serve piu' memoria (assicurati di avere swap) o hai trovato un memory leak (qualcosa che ``brucia'' tutta la memoria).

5.3. Che cos'e' un gratuitous error?

{MB} Questo viene da `strerror(EGRATUITOUS)'. Se controlli la documentazione delle glibc, troverai che questo codice di errore non ha scopo. Questo, comunque, non e' esattamente vero. Lo incontrerai solo quando dovesse accadere qualcosa di terribile. Thomas spiega:

	Piu' precisamente `EGRATUITOUS' significa ufficialmente che
	qualche server ha risposto in maniera impossibile o violando
	qualche protocollo.  Ci sono alcuni casi nell'Hurd in cui e'
	ritornato `EGRATUITOUS' e probabilmente bisognerebbe scegliere
	qualcosa al suo posto.

Se puoi riprodurre questo tipo di messaggio di errore, sei pregato di informarci.

5.4. Cosa significa ``/dev/hd0s1: MOUNTED READ-ONLY; MUST USE `fsysopts --writable'''?

{NHW} In questo caso, /dev/hd0s1 non e' stato montato correttamente. L'Hurd, al boot up, lancera' ``fsck -p'' sulle partizioni che trova in /etc/fstab, quindi dovresti considerare di aggiungere quella partizione a questo file. Se sei sicuro che la partizione non abbia errori, puoi lanciare:

	# fsysopts /home --writable

per chiedere al translator che si occupa di /home di cambiare mode da read-only a read/write. Nota che il comando e' stato mandato al filesystem, non al supporto (ad esempio /dev/hd0s1).

5.5. Quando GNU/Hurd crasha, GNU Mach riavvia automaticamente. C'e' qualche cosa che posso fare per farlo fermare e poter cosi' annotare l'errore?

{MB} Passa l'opzione `-H' a init (aggiungila alla riga di comando del boot), e `init' dira' a Mach di avviare il kernel debugger invece di riavviare. Al prompt del debugger (`db>'), puoi scrivere `reboot' in qualsiasi momento per riavviare il sistema.

6. Porting

6.1. Di quali programmi e' stato fatto un porting?

{NHW} Di molti, dai un'occhiata all'archivio Debian. Molti programmi, in ogni caso, non necessitano per forza di porting; non sono semplicemente mai stati compilati.

6.2. E' facile fare porting a GNU/Hurd?

{NHW} Fare porting di applicazioni verso GNU/Hurd e' relativamente semplice, se l'applicazione e' compatibile con POSIX, in quanto GNU/Hurd fa del suo meglio per essere un sistema operativo conforme.

L'errore piu' comune fatto dai programmatori e' di assumere che MAXPATHLEN e PATH_MAX sono definiti. Sulla maggiorparte dei sistemi operativi, e comunque su GNU/Hurd, non c'e' massimo e quindi questo non e' impostato. La cosa giusta da fare e' pubblicare una patch all'autore che alloca dinamicamente la memoria.

6.3. Come posso aiutare?

{NHW} Un tentativo di compilare tutti i pacchetti Debian e' in corso da parte di Jeff Bailey. Dai un occhiata a:

	http://people.debian.org/~jbailey/oasis/group/Debian/index.html

per vedere cosa e' stato fatto e come puoi aiutare.

7. Compilare

7.1. Dove posso ottenere i sorgenti?

{NHW} I sorgenti sono archiviati in CVS a:

	:pserver:anoncvs@subversions.gnu.org:/cvsroot/hurd

Non ti serve una password. I moduli che ti interessano sono: `hurd', `gnumach' e `mig'.

Un'interfaccia web e' anche disponibile a: http://savannah.gnu.org/cgi-bin/viewcvs/hurd/

Per ottenere i sorgenti dell'ultimo pacchetto debian, guarda su un qualsiasi mirror debian.

7.2. Posso compilare da un'altro OS? (cross compiling)

{NHW} Si'. Se hai Debian GNU/Linux su IA32, e' abbastanza semplice dal momento che c'e' un cross compiler disponibile; tutto quello che devi fare e' installare i pacchetti Debian gcc-i386-gnu e mig-i386-gnu. Facendo girare poi lo script di configure dell'applicazione, devi specificare i tool direttamente:

	# MIG=/usr/bin/i386-gnu-mig CC=/usr/bin/i386-gnu-gcc \
	  ../src/hurd/configure ...

Se usi un'altra distribuzione, dovrai farlo in un modo piu' lungo. Puoi trovare istruzioni nel Cross Compiling HOW-TO disponibile a:

	http://hurddocs.sourceforge.net/howto/cross.html

Anche Farid Hajji <farid.hajji@ob.kamp.net> parla delle sue esperienze a:

	http://lists.debian.org/debian-hurd-0012/msg00062.html

7.3. Consigli generali?

{NHW} Si', buildare il source tree non e' testato. Prova:

	# ../src/hurd/configure ...

8. Sviluppo

8.1. Cos'e' OSKit-Mach?

{NHW} Ci sono due versioni di Maxh: GNU Mach e OSKit-Mach. Il primo usa i driver presi da Linux 2.0.x mentre il secondo usa l'OSKit dell'University of Utah. Se tutto va bene, OSKit-Mach diventera' stabile e diventera' il kernel ufficiale. Puoi trovare altre informazioni sull'OSKit a:

	http://www.cs.utah.edu/flux/oskit

8.2. Dov'e' la documentazione?

{NHW} Ci sono vari libri scritti sul kernel Mach. Le informazioni che contengono sono ancora per lo piu' pertinenti e dovrebbero essere considerata una lettura indispensabile per potenziali hacker. Possono essere trovati a:

	http://www.cs.cmu.edu/afs/cs/project/mach/public/www/doc/publications.html

La documentazione per l'Hurd e' abbastanza inadeguata. L'inizio di un libro, ``The GNU Hurd'' e' nella directory doc nel source Hurd. Puoi leggerlo usando:

	# info hurd

Il luogo piu' autorevole e', ovviamente, il codice sorgente; questo non significa, comunque, che non accoglieremo favorevolmente altra documentazione. Per iniziare, dai un'occhiata a <hurd>/doc/navigating.

8.3. Come posso assicurarmi che il mio codice e' conforme a POSIX?

{NHW} Sfortunatamente, devi comprare lo standard POSIX da IEEE. Altrimenti Single Unix Specification versione 2, che descrive una variante dello standard POSIX, e' disponibile gratuitamente su Internet. Prova:

	http://www.unix-systems.org/online.html

8.4. A chi fornisco le patch?

{NHW} Se sono per correggere l'Hurd, Mach o MiG, manda una patch alla mailing list bug-hurd.

Se sono per correggere altri pacchetti, il BTS di Debian e' il posto adatto. In questo caso, assicurati di avvisare la mailing list debian-hurd del bug.

8.5. In che formato dovrebbero essere le patch per l'Hurd e per GNU Mach?

{MB} Tutte le patch dovrebbero essere mandate in formato unified context diff (opzione `-u' a GNU diff). Puo' aiutarci usare anche l'opzione `-p' che include informazioni circa le funzioni modificate da una patch. Cambiamenti che sono simili possono essere raggruppati insieme in un file, ma i cambiamenti che riguardano cose differenti dovrebbero essere mandati in file separati. Le patch possono essere incluse nei messaggi come un allegato MIME. Non dovrebbero essere compresse e/o archiviate a meno che non siano molto larghe, e se fossero molto larghe sarebbe probabilmente meglio salvarle da qualche parte on-line e mandare solo un URL.

Scrivi una voce al ChangeLog per ogni cambiamento, dopo al formato dei file esistenti. Ecco un esempio:

	2000-12-02  Marcus Brinkmann  <marcus@gnu.org>
		* ops.c (op_readlink): Before returning, check if the buffer
	        pointed to by transp is ours.  If not, munmap it.
	        (op_read): Likewise for bp.
	        (op_readdir): Don't alloca a buffer here.  Instead initialize
	        BUF and BUFSIZE to 0 and let the server (eh, MiG) do it.
	        munmap BUF before returning.

Il nome del file e il nome della funzione modificata dovrebbero sempre essere dichiarati completamente, e non abbreviati o modificati in altro modo (come per esempio foo.{c,h}), in quanto cio' renderebbe impossibile trovare tutti i cambiamenti a un file o a una funzione. I nomi delle variabili local sono tutti maiuscoli. Ci sono due spazi tra le frasi. Puoi usare ``C-x 4 a'' in Emacs per aggiungere una nuova voce al ChangeLog. Se lo fai con il mark gia' in una funzione, Emacs inserira' automaticamente il nome del file e della funzione per te.

Non mandare una patch per il file ChangeLog. Piuttosto, includi le voci di ChangeLog nel messaggio che contiene la patch. Le patch per i file ChangeLog spesso vanno in conflitto.

Se hai il source tree originario nella directory `hurd-orig', e il source tree modificato nella directory `hurd', il seguente comando produrra' una buona patch (per favore assicurati che non ci siano file di troppo, come backup, nel tree modificato, o lascia perdere l'opzione `-N'). Dovrai raccogliere separatamente le voci di ChangeLog.

	# diff -x ChangeLog -Nurp hurd-orig hurd

Le risposte sono state date da:


[ English | French | German | Japanese | Spanish | Italian ]

Return to GNU's home page.

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to contact the FSF.

Please send comments on these web pages to web-hurd@gnu.org, send other questions to gnu@gnu.org.

Copyright (C) 2001 Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA

Each section is copyright its respective author(s). Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts and with no Back-Cover Texts.

Updated: $Date: 2004/10/11 08:15:07 $ $Author: ams $