aboutsummaryrefslogtreecommitdiffstats
path: root/italian/ports/hurd/hurd-install.wml
blob: bee952bbc7a0c7289be0ed2365daf72267765112 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
#use wml::debian::template title="Debian GNU/Hurd – Configurazione" NOHEADER="yes"
#include "$(ENGLISHDIR)/ports/hurd/menu.inc"
#use wml::debian::translation-check translation="ad90efc904807b8db1f35dd7d05b950182b3c1fa" maintainer="Luca Monducci"

<h1>Configurazione di Debian GNU/Hurd</h1>

<p>Questo documento vuole fornire un insieme di istruzioni semplici
e relativamente indolori su come configurare Debian GNU/Hurd con il
minimo sforzo.</p>

<p>È basato su <q>The Hurd Installation Guide</q> di Neal H. Walfield.
Grazie a Neal per il suo contributo.</p>


<h2>Introduzione</h2>

<p>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 <code>mount point</code>. 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à.</p>

<p>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.</p>

<p>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.</p>

#<h2>2. Casa di proprietà o cercarne una</h2>
#
#<p>Se non si dispone di una partizione disponibile o di un hard disk
#aggiuntivo questo può essere il passo più lungo, infatti in questo caso è necessario
#ripartizionare l'hard disk. Una possibilità è usare l'editor di partizioni
#di GNU, <a href="https://packages.debian.org/parted">Parted</a>.
#Non solo permette la modifica di base delle partizioni ma
#permette anche il ridimensionamento e lo spostamento delle partizioni.
#Il manuale è abbastanza completo e include svariati tutorial. Notare che
#esiste il tipo di partizione <code>63 GNU HURD or SysV</code>, questo tipo
#non dovrebbe essere usato altrimenti il CD di installazione non la
#riconoscerà. Usare il <code>83 Linux</code>.
#</p>
#
#<p>Hurd supporta diverse estensioni al formato del filesystem ext2fs. Le cose
#più importanti fra queste sono i traduttori passivi e un quarto gruppo di bit
#con i permessi per gli utenti sconosciuti (gli utenti senza identità, non gli
#utenti "other"). Per usare queste estensioni il proprietario della partizione
#deve essere impostato a <code>hurd</code>. <code>mke2fs</code>, a meno che non
#sia specificato diversamente sulla riga di comando, imposta come proprietario
#qualsiasi kernel sia in esecuzione. Dal momento che Hurd rispetta diligentemente
#questa impostazione si deve prestare molta attenzione dando il valore
#appropriato altrimenti Hurd si comporterà in modo impredicibile. Attenzione,
#anche se un filesystem è in possesso di un particolare kernel, altri kernel
#possono continuare a usarlo ma potrebbero non essere capaci di usare certe
#estensioni.</p>
#
#<p>Per creare un filesystem usare <code>mke2fs</code> e passare <q><var>-b
#4096 -I 128 -o hurd</var></q> per indicare l'Hurd come proprietario del
#nuovo filesystem. Per esempio, supponendo che la partizione sia
#<tt>/dev/hda1</tt>:</p>
#
#<table><tr><td>&nbsp;</td><td class=example><pre>
#\# mke2fs -b 4096 -I 128 -o hurd /dev/hda1
#</pre></td></tr></table>
#
#
#<h2>3. Boot loader</h2>
#
#<p>Il boot loader del sistema GNU è GRUB (GRand Unified Boot loader) e il suo
#scopo principale è avviare il cuore del sistema GNU (Mach e l'Hurd). Qualsiasi
#bootloader che supporti lo standard multiboot può essere usato per caricare
#Mach e l'Hurd. Al momento (noi sappiamo che) GNU GRUB è l'unico boot loader
#che supporta questo standard.</p>
#
#<p>Una parola su Grub, diversamente dai boot loader tradizionali per x86,
#come LILO, Grub è veramente molto potente. Ha una interfaccia a riga di
#comando, bootp, il supporto per terminali virtuali e una grande quantità di
#altre funzionalità. Inoltre è in grado di avviare quasi tutti i kernel, se
#non avete mai avviato una alpha o una sparc allora non potete capire cosa
#può fare Grub. Quindi, non vi preoccupate: Grub è il migliore. Vi piacerà.
#Non tornerete indietro.</p>
#
#<p>Probabilmente è consigliabile installare
#<a href="https://packages.debian.org/grub2">Grub</a> prima di installare Hurd,
#comunque è possibile eseguire l'installazione di Grub sul disco fisso anche
#in seguito.</p>
#
#
#<h2>4. Cross-installazione</h2>
#
#<p>Il passo successivo è scaricare il sistema di base. Ci sono diverse
#possibilità, se è in esecuzione un sistema Debian si può usare il pacchetto
#crosshurd altrimenti si può recuperare il tarball del sistema di base da un
#qualsiasi mirror indicato in
#<url "https://wiki.debian.org/DebianPorts/Mirrors" />.</p>
#
#<p>Il tarball è impostato per estrarre tutto il suo contenuto nella directory
#attuale. L'archivio può essere estratto solo dopo aver montato un filesystem.
#Supponendo che il filesystem sia su <tt>/dev/hda2</tt>, che il mount point sia
#<tt>/gnu</tt> e che l'archivio sia nella directory home dell'utente allora è
#necessario:</p>
#
#<table><tr><td>&nbsp;</td><td class=example><pre>
#\# mount -t ext2 /dev/hda2 /gnu
#\# cd /gnu
#\# tar --same-owner -xvjpf ~/gnu.tar.bz2
#</pre></td></tr></table>
#
#
#<h2>5. Avvio di GNU/Hurd</h2>
#
#<p>Adesso tutto è pronto per avviare GNU/Hurd per la prima volta. Notare che
#in base alla versione di Grub alcuni dettagli possono cambiare. Assicurarsi
#di disporre di GRUB1 (il vecchio 0.95 o il successivo 0.97) o GRUB2 (noto
#come 1.95 e successivi). In seguito sono forniti esempi per entrambe le versioni,
#usare quello corretto.</p>
#
#<p>Sono stati rilevati alcuni problemi quando si avvia con solo 128MB di
#memoria perché in questa fase la memoria di swap non è stato ancora
#configurata. Assicurarsi di avere almeno 256MB di memoria.</p>
#
#Se sul sistema è già installato GRUB, è sufficiente riavviare. Altrimenti,
#è necessario usare un dischetto per avviare Grub. Su Debian i pacchetti
#grub-disk (grub1) o grub-rescue-pc (grub2) forniscono le immagini per CD e
#dischetti. Inserire il dischetto di avvio di Grub nel lettore e riavviare.
#Se tutto funziona verrà mostrato il menu o la riga di comando di Grub. Se
#nel menu è già presente una voce per <tt><q>GNU/Hurd</q></tt>, probabilmente
#si può usarla senza dover scrivere un sacco di roba. Per adesso, se viene
#mostrato il menu, premere <kbd>c</kbd> per avere la riga di comando.<p>
#
#<p>Per prima cosa si deve caricare GNU Mach, questo richiede la conoscenza
#del filesystem e del percorso di GNU Mach. Grub usa una nomenclatura
#leggermente diversa da Linux, per Hurd: i dischi IDE e SCSI sono entrambi
#nominati <tt><q>(hdN,M)</q></tt>. <code>N</code> è il numero del dispositivo
#(partendo da zero) fornito dal BIOS, quindi Grub non fa distinzione fra dischi
#SCSI e IDE. <code>M</code> identifica la partizione sul disco, parte da zero
#con grub1 ma parte da 1 con grub2. Se questo confonde non c'è da preoccuparsi:
#Grub fornisce molti aiuti.</p>
#
#<p>Per determinare su quale filesystem risiede un particolare file Grub
#fornisce il comando <code>find</code>. Quando questo comando viene dato
#insieme al nome di un file, Grub cerca su ogni filesystem il file specificato
#e mostra dove è stato trovato. Per esempio per cercare il kernel
#<tt>/boot/gnumach.gz</tt>:</p>
#
#<table>
#<tr><td>&nbsp;</td><td class=example><pre>
#   grub1&#62; find /boot/gnumach.gz
#   (hd0,0)
#</pre></td></tr>
#<tr><td>&nbsp;</td><td class=example><pre>
#   grub2&#62; search -f /boot/gnumach.gz
#   (hd0,1)
#</pre></td></tr>
#</table>
#
#<p>Dove indica per Grub1 che <tt><q>/boot/gnumach.gz</q></tt> è su
#<tt><q>(hd0,0)</q></tt> e per Grub2, su <tt><q>(hd0,1)</q></tt> (ricordarsi
#la differenza tra Grub1 e Grub2 nel numerare le partizioni). Per risparmiare
#un po' di scrittura, impostare la root di Grub a questo valore:</p>
#
#<table>
#<tr><td>&nbsp;</td><td class=example><pre>
#   grub1&#62; root (hd0,0)
#</pre></td></tr>
#<tr><td>&nbsp;</td><td class=example><pre>
#   grub2&#62; set root=(hd0,1)
#</pre></td></tr>
#</table>
#
#<p>Prima di caricare il kernel deve essere specificata sulla riga di comando
#almeno un'altra opzione, la partizione di root. Questa verrà usata da Hurd
#(cioè non da Grub) e quindi dovrà essere in un formato che Hurd possa
#capire.</p>
#
#<p>GNU Mach numera i dischi partendo da zero. I dispositivi IDE hanno il
#prefisso <code>hd</code> mentre i dischi SCSI hanno il prefisso
#<code>sd</code>. Come avviene con Linux i dischi sono numerati in base alla
#loro posizione sul controller. Per esempio il master su canale primario è
#<code>hd0</code> e lo slave su canale secondario è <code>hd3</code>. Le
#partizioni seguono la nomenclatura delle partizioni BSD, si aggiunge
#<code>sM</code> al nome del disco per indicare una certa partizione. Notare
#che <code>M</code> inizia a contare da uno e non da zero. Il numero della
#partizione è semplice da calcolare: con Grub2, riusare lo stesso indice,
#con Grub1, basta incrementare di uno il valore usato da Grub1.</p>
#
#<p>Dal momento che Hurd non è stato ancora configurato è necessario avviare il
#sistema in modalità singolo-utente, è sufficiente aggiungere <q><var>-s</var></q>
#alla riga di comando del kernel.</p>
#
#<p>Riassumendo, supponendo che il primo disco (cioè <tt><q>(hd0)</q></tt>) sia
#il master sul controller primario, si userà:</p>
#
#<table>
#<tr><td>&nbsp;</td><td class=example><pre>
#   grub1&#62; kernel /boot/gnumach.gz root=device:hd0s1 -s
#   [Multiboot-elf, ...]
#</pre></td></tr>
#<tr><td>&nbsp;</td><td class=example><pre>
#   grub2&#62; multiboot /boot/gnumach.gz root=device:hd0s1 -s
#</pre></td></tr>
#</table>
#
#<p>Successivamente devono essere caricati il servente per il filesystem di
#root e il servente <code>exec</code>. Questo si può fare grazie alla capacit&agrave;
#di Grub di avviare i moduli. Le ${var} sono inserite da GNU Mach. Gli
#argomenti sono usati da Hurd per indicare quale tipo di informazione sar&agrave;
#fornita. Dato che la riga di comando di ext2fs è molto lunga la si può
#spezzare usando la sequenza di escape del carattere a capo nello stesso modo
#usato normalmente in Unix. Assicurarsi di non lasciare spazi dopo il
#contro-slash finale di ogni riga inoltre assicurarsi di distinguere
#<kbd>{</kbd> e <kbd>}</kbd> da <kbd>(</kbd> e <kbd>)</kbd>. Tenere in mente
#la sottile differenza tra Grub1 e Grub2: Grub2 ha bisogno che il nome del
#file sia ripetuto e tre deve essere tra virgolette. Notare che a questo
#punto l'opzione <var>--readonly</var> di <code>ext2fs.static</code> non deve essere
#passata.</p>
#
#<table>
#<tr><td>&nbsp;</td><td class=example><pre>
#  grub1&#62; 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]
#  grub1&#62; module /lib/ld.so.1 /hurd/exec $(exec-task=task-create)
#    [Multiboot-module  0x494000, 0x27afe bytes]
#</pre></td></tr>
#<tr><td>&nbsp;</td><td class=example><pre>
#  grub2&#62; module /hurd/ext2fs.static ext2fs \
#   --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)'
#  grub2&#62; module /lib/ld.so.1 exec /hurd/exec '$(exec-task=task-create)'
#</pre></td></tr>
#</table>
#
#<p>In alternativa è possibile inserire queste righe nel file di configurazione
#<tt><q>menu.lst</q></tt> (Grub1) o <tt><q>grub.cfg</q></tt> (Grub2) nella
#partizione e caricarle dal prompt di grub usando
#<tt><q>configfile /percorso/a/menu.lst</q></tt> (Grub1) o
#<tt><q>configfile /percorso/a/grub.cfg</q></tt> (Grub2). Ovviamente è possibile
#anche installare grub in qualche MBR e avviare da lì.</p>
#
#<p>Adesso GNU/Hurd può essere avviato con:</p>
#
#<table><tr><td>&nbsp;</td><td class=example><pre>
#grub&#62; boot
#</pre></td></tr></table>
#
#<p>Se GNU/Hurd non si avvia potrebbe essere colpa di IRQ condivisi: GNU Mach
#non li gestisce molto bene. Si può verificare questa situazione guardando,
#per esempio, il file <tt>/proc/interrupts</tt> sotto GNU/Linux. Inoltre, dato
#che GNU Mach non supporta i moduli del kernel molti dei driver sono compilati
#nel kernel, se nel sistema sono presenti delle vecchie periferiche queste
#potrebbero creare dei problemi infatti un dispositivo potrebbe rispondere in
#modo non corretto a un segnale rivolto a un dispositivo completamente
#indipendente e quindi causare un crash. Di solito compilare un nuovo kernel
#con solo i driver dei dispositivi necessari risolve questo genere di problemi,
#GNU Mach è facilmente cross-compilabile. Se si usa Debian si installi il
#pacchetto <tt><q>mig</q></tt> e il compilatore <tt><q>gcc</q></tt>.</p>
#
#<p>Se questo non è di aiuto si chieda sull'appropriata lista di
#messaggi.</p>
#
#
#<h2>6. Installazione nativa</h2>
#
#<p>Una volta che si dispone del prompt della shell e ogni volta che Hurd è
#in modalità singolo-utente è necessario impostare il tipo di terminale:</p>
#
#<table><tr><td>&nbsp;</td><td class=example><pre>
#\# export TERM=mach
#</pre></td></tr></table>
#
#<p>Avviso: <kbd>CONTROL-C</kbd> e famiglia non funzionano nella modalit&agrave;
#singolo-utente.</p>
#
#<p>Adesso è possibile eseguire lo script <code>native-install</code>. Questo
#configurerà i pacchetti e imposterà molti importanti traduttori:</p>
#
#<table><tr><td>&nbsp;</td><td class=example><pre>
#\# ./native-install
#</pre></td></tr></table>
#
#<p>La fine prematura dello script indica che è possibile riavviare ed entrare
#in modalità multi-utente. Fatto questo, Hurd è pronto!</p>
#


<h2>Installazione</h2>

<p>È possibile usare l'Installatore Debian, si veda le
<a href="hurd-cd">immagini dei CD</a>. Poi seguire i passi proposti per
eseguire un'installazione corretta.</p>

<p>È anche possibile scaricare e usare delle immagini per qemu
pre-installate:</p>

<table><tr><td>&nbsp;</td><td class=example><pre>
$ wget https://cdimage.debian.org/cdimage/ports/stable/hurd-i386/debian-hurd.img.tar.gz
$ tar xzf debian-hurd.img.tar.gz
$ kvm -m 1G -drive file=$(echo debian-hurd*.img),cache=writeback
</pre></td></tr></table>

<p>Per permettere l'accesso alla macchina tramite ssh, aggiungere</p>

<table><tr><td>&nbsp;</td><td class=example><pre>
-net nic -net user,hostfwd=tcp:127.0.0.1:2222-:22
</pre></td></tr></table>

<p>e ssh sarà sulla porta TCP 2222.</p>

<p>È anche possibile convertire le immagini in formato VDI per virtualbox:</p>

<table><tr><td>&nbsp;</td><td class=example><pre>
$ VBoxManage convertfromraw debian-hurd-*.img debian-hurd.vdi --format vdi
</pre></td></tr></table>


<h2>Configurazione</h2>

<h3>La rete</h3>

<p>A partire da sysvinit 2.88dsf-48 e hurd 1:0.5.git20140320-1 è
supportato il modo-Debian: <tt>/etc/network/interfaces</tt> è usato
come avviene con Linux. L'unica differenza è che le schede appaiono in
<tt>/dev</tt> e quindi le interfacce devono essere specificate con
<tt>/dev/eth0</tt>, ecc.</p>

# <p>Come prima cosa assicurarsi che la propria scheda di rete sia
# riconosciuta da GNU Mach:</p>
# 
# <table><tr><td>&nbsp;</td><td class=example><pre>
# \# devprobe eth0
#  eth0
# </pre></td></tr></table>
# 
# <p>Se <code>devprobe eth0</code> non restituisce <code>eth0</code>, il
# kernel non ha rilevato la scheda di rete ed è necessario provare con
# un'altra scheda. Per esempio, la scheda e1000 di qemu non è supportata,
# invece la rtl8139 dovrebbe funzionare con: <code>-net nic,model=rtl8139
# -net user</code>.</p>
# 
# <p>Dalla versione 20120520-1 in poi, il pacchetto hurd include i driver
# DDE che possono essere usati per gestire i device più recenti (i driver
# sono stati presi da Linux 2.6.32). I traduttori per i driver sono gi&agrave;
# stati creati e tutto quello che rimane da fare è sostituire <code>eth0</code>
# (il nome mach del driver) con <code>/dev/eth0</code> (il percorso del driver
# DDE) nel resto di questo documento.</p>
# 
# <p>È possibile provare a usare il driver DDE anche quando già esiste un
# driver GNU Mach: passando <code>nonetdev</code> sulla riga di comando di
# gnumach si disattiva il driver GNU Mach e il driver DDE inizierà a
# funzionare.</p>

<p>Se la rete non funziona, usare il seguente comando per recuperare dal
driver DDE delle informazioni di debug:</p>

<table><tr><td>&nbsp;</td><td class=example><pre>
 \# settrans -fga /dev/netdde /hurd/netdde
</pre></td></tr></table>

<p>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 la segnalazione di un bug con l'output completo del precedente
comando settrans oltre che all'output
di <code>lspci</code> e <code>lspci -n</code>.</p>

<p>Per configurare la rete, senza usare <tt>/etc/network/interfaces</tt>,
è necessario configurare prima il traduttore pfinet. Questo si può fare
usando <code>dhclient</code> dal pacchetto <code>isc-dhcp-client</code>,
oppure manualmente con <code>inetutils-ifconfig</code>
dal pacchetto <code>inetutils-tools</code> e <code>ping</code> disponibile
nel pacchetto <code>inetutils-ping</code>. Oppure, infine, manualmente
usando il comando <code>settrans</code> per collegare
un traduttore 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.</p>

<table><tr><td>&nbsp;</td><td class=example><pre>
 \# 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
</pre></td></tr></table>

<p>In questo esempio a <code>settrans</code> sono state passate diverse
opzioni. Le prime due <q><var>fg</var></q> forzano tutti i traduttori esistenti
a disattivarsi. Le due successive <q><var>ap</var></q> creano un traduttore sia
attivo che passivo, rendendo attivo un traduttore si possono immediatamente
vedere i messaggi di errore su <tt>stderr</tt>. 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 <q><var>-i</var></q> è l'interfaccia
su cui <code>pfinet</code> si metterà in ascolto, <q><var>-a</var></q> è
l'indirizzo IP, <q><var>-g</var></q> è il gateway e <q><var>-m</var></q> è la maschera
di rete.</p>

<p>Assicurarsi di aggiungere i name server nel file
<tt>/etc/resolv.conf</tt>:</p>

<table><tr><td>&nbsp;</td><td class=example><pre>
nameserver 192.168.1.1
</pre></td></tr></table>

<p>Testare la configurazione con <code>ping -c2 gateway</code>, l'opzione
<samp>-c</samp> è importante per limitare il numero di ping, infatti
<kbd>CONTROL-C</KBD> non funziona in modalità singolo-utente.</p>

<p>Aiuto su <code>settrans</code> può essere ottenuto passando l'opzione
<samp>--help</samp>. L'aiuto su uno specifico traduttore può essere ottenuto
invocandolo dalla riga di comando con lo stesso argomento, per esempio:</p>

<table><tr><td>&nbsp;</td><td class=example><pre>
\# /hurd/pfinet --help
</pre></td></tr></table>

<p>Come in questo caso può essere generato molto output, si tenga
in considerazione l'uso di una pipe con un impaginatore come
<code>less</code>.</p>

<p>Anche per configurare il supporto IPv6 è necessario fare la configurazione
su <tt>/servers/socket/2</tt> e <tt>/servers/socket/26</tt> facendo
riferimento l'uno all'altro in modo che ne sia avviato uno solo, collegare
entrambi i nodi:</p>

<table><tr><td>&nbsp;</td><td class=example><pre>
 \# 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 -p /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
</pre></td></tr></table>

<p>Il server pfinet attiva la configurazione automatica di IPv6. È possibile
ottenere lo stato attuale con <tt>fsysopts /servers/socket/26</tt>.  Gli indirizzi
possono essere anche impostati manualmente usando, per esempio,
<tt>-A 2001:123:123::42/64 -G 2001:123:123::1</tt>.</p>

<p>La configurazione di pfinet può essere cambiata anche in diretta (cioè
senza scrivere sul disco) usando <tt>fsysopts</tt>:</p>

<table><tr><td>&nbsp;</td><td class=example><pre>
 \# 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
</pre></td></tr></table>

<p>È possibile creare un firewall interponendo il traduttore
<tt>eth-filter</tt>, per esempio, questo impedisce l'accesso alla
porta 22:</p>

<table><tr><td>&nbsp;</td><td class=example><pre>
 \# settrans -c /dev/eth0f /hurd/eth-filter -i /dev/eth0 -r "not port 22"
</pre></td></tr></table>

<p>Il device filtrato, <tt>/dev/eth0f</tt>, può essere passato a
<tt>pfinet</tt> oppure a <tt>dhclient</tt> al posto di /dev/eth0.</p>


<h3>Configurazione della tastiera</h3>

<p>La mappa di tastiera può essere configurata usando il pacchetto
standard <code>keyboard-configuration</code>, sono supportate solo le
mappe di tastiera, le varianti non sono (ancora) supportate.
Verificare che sia installato
ed eseguire <code>dpkg-reconfigure keyboard-configuration</code>. Gli
effetti non saranno immediati poiché per applicare la nuova configurazione
è necessario riavviare la console.</p>

<h3>Ulteriori filesystem</h3>

<p>Il passo successivo è modificare <tt>/etc/fstab</tt> per aggiungere altri
filesystem e lo spazio di swap. È <em>molto importante</em> 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 <code>nano</code>
e <code>vi</code> sono gli unici editor installati con la distribuzione di
base.</p>

<p>Questo è un esempio del file <tt>/etc/fstab</tt>:</p>

<table><tr><td>&nbsp;</td><td class=example><pre>
\# &#60;file system&#62; &#60;mount point&#62;   &#60;type&#62;  &#60;options&#62;  &#60;dump&#62;  &#60;pass&#62;
/dev/hd0s1      /               ext2    rw         0       1
/dev/hd0s2      /home           ext2    rw         0       2
/dev/hd0s3      none            swap    sw         0       0
</pre></td></tr></table>

<p>Qualora manchi un qualsiasi device in <code>/dev</code>, ricordarsi di
crearlo con il comando <code>MAKEDEV</code>:</p>

<table><tr><td>&nbsp;</td><td class=example><pre>
\# cd /dev
\# ./MAKEDEV hd0s1 hd0s2 hd0s3
</pre></td></tr></table>

<p>È anche possibile montare manualmente un filesystem usando
<code>settrans</code>:</p>

<table><tr><td>&nbsp;</td><td class=example><pre>
\# settrans /mnt /hurd/ext2fs /dev/hd0s5
</pre></td></tr></table>

<p>L'idea dietro a questo comando è impostare sul nodo <code>/mnt</code> il
traduttore <code>/hurd/ext2fs /dev/hd0s5</code>. Verrà avviato
<code>/hurd/ext2fs</code> che inizierà a leggere/scrivere <code>/dev/hd0s5</code>
e a mostrarne il contenuto su <code>/mnt</code>. Ulteriori informazioni possono
essere trovate nella <a href="hurd-doc-translator">documentazione sui
traduttori</a>.</p>

<p>Per montare un filesystem nfs viene usato il traduttore
<code>/hurd/nfs</code>. 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 <samp>insicure</samp> nella riga export. Segue un esempio di
<tt>/etc/exports</tt> in cui si suppone che l'indirizzo IP del client sia
<tt>192.168.1.2</tt>:</p>

<table><tr><td>&nbsp;</td><td class=example><pre>
/home  192.168.1.2(rw,insecure)
</pre></td></tr></table>

<p>Per montarlo sul sistema GNU supponendo che l'indirizzo IP del server nfs
sia <tt>192.168.1.1</tt> usare:</p>

<table><tr><td>&nbsp;</td><td class=example><pre>
\# settrans -cga /mount/point /hurd/nfs 192.168.1.1:/home
</pre></td></tr></table>


<h2>Buon divertimento con Debian GNU/Hurd</h2>

<p>Cosa si può fare con Hurd?</p>

<h3>Montare immagini di dischi</h3>

<p>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:</p>

<table><tr><td>&nbsp;</td><td class=example><pre>
settrans ~/mnt /hurd/iso9660fs CD_image.iso
</pre></td></tr></table>

<p>Ciò è anche estremamente sicuro: il traduttore <code>iso9660fs</code>
è 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.</p>

<h3>FTP transparente</h3>

<p>Quseto comando imposta un <code>ftp</code> trasparente su una
directory:</p>

<table><tr><td>&nbsp;</td><td class=example><pre>
settrans -c /ftp: /hurd/hostmux /hurd/ftpfs /
</pre></td></tr></table>

<p>Adesso, è possibile fare <code>cd</code> su, per esempio,
<code>/ftp://ftp.gnu.org/</code> ed eseguire <code>ls</code>.
Quindi è possible eseguire dalla propria home
<code>tar xf ftp://ftp.gnu.org/pub/gnu/gcc/gcc-4.6.0/gcc-4.6.0.tar.bz2</code>
!</p>

<h3>Sub-Hurd</h3>

<p>Un <a href="https://www.gnu.org/software/hurd/hurd/subhurd.html">sub-Hurd</a>
è 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.</p>

<h3>gdb ext2fs, pfinet, ...</h3>

<p>Sì, è possibile eseguire gdb su, per esempio, l'implementazione di ext2fs,
lo stack TCP/IP <code>pfinet</code>, ecc.</p>

<h3>E molto altro!</h3>

<p>Tra le cose su cui si sta lavorando ci sono <code>mboxfs</code>,
<code>tarfs</code>, <code>xmlfs</code>, <code>gopherfs</code>, ...</p>

#
#<h3>7.3 Riavvio</h3>
#
#<p>Infine riavviare in modalità multiutente, cioè nello stesso modo usato
#per la modalità singolo-utente ma tralasciando l'opzione <samp>-s</samp>
#quando si carica il kernel. Per i dettagli vedere la sezione 5. Avvio di
#GNU/Hurd.</p>
#
#<p>Buon divertimento!</p>
#

<h2>Ritocchi finali</h2>

<p>Seguono dei suggerimenti veloci utili durante l'installazione, si
raccomanda di leggere anche la documentazione: la <a href=hurd-doc>\
documentazione su Debian GNU/Hurd</a> e anche il sito web di
<a href=http://hurd.gnu.org/>Hurd</a>.</p>

#<h3>8.1 Il menu di Grub</h3>
#
#<p>Dover caricare il kernel a mano può essere molto tedioso. Modificare
#<tt><q>/boot/grub/menu.lst</q></tt> con Grub1 o <tt><q>/boot/grub/grub.cfg</q></tt>
#con Grub2 e adattarlo alle proprie esigenze, l'avvio del sistema diventer&agrave;
#molto più veloce e molto più semplice.</p>
#
#
#<h3>8.2 Aggiunta di device</h3>
#
#<p>Normalmente solo pochi device sono creati nella directory <tt>/dev</tt>.
#Usare lo script <code>MAKEDEV</code> per creare i device node di cui si
#necessita.</p>
#

<h3><a name=morepackages>Installazione di altri pacchetti</a></h3>

<p>Esistono diversi modi per aggiungere altri pacchetti, è possibile
scaricarli e installarli con <code>dpkg -i</code> ma è molto scomodo.
Il modo più semplice è usare <code>apt-get</code>.</p>

<p>Per chi usa il rilascio Debian GNU/Hurd 2021, il modo più
semplice è usare lo snapshot di questo rilascio creando il file
<code>/etc/apt/apt.conf.d/99ignore-valid-until</code> con questo contenuto:</p>

<table><tr><td>&nbsp;</td><td class=example><pre>
Acquire::Check-Valid-Until "false";
</pre></td></tr></table>

<p>Poi, per usare lo snapshot come fonte per apt, aggiungere in
<tt><q>/etc/apt/sources.list</q></tt> la seguente voce per unreleased.</p>

<table><tr><td>&nbsp;</td><td class=example><pre>
deb http://snapshot.debian.org/archive/debian-ports/20210812T100000Z/ sid main
deb-src http://snapshot.debian.org/archive/debian/20210812T100000Z/ sid main
deb [trusted=yes] https://snapshot.debian.org/archive/debian-ports/20210812T100000Z/ unreleased main
</pre></td></tr></table>


<p>Aggiornare, installare il pacchetto
<code>debian-ports-archive-keyring</code> e aggiornare di nuovo, fatte queste
operazioni l'intero rilascio Debian GNU/Hurd 2021 sarà disponibile.</p>

<p>Chi usa uno snapshot successivo al rilascio 2021, può aggiungere queste
fonti per avere a disposizione i pacchetti più recenti:</p>

<table><tr><td>&nbsp;</td><td class=example><pre>
deb http://deb.debian.org/debian-ports unstable main
deb-src http://deb.debian.org/debian unstable main
deb http://deb.debian.org/debian-ports unreleased main
</pre></td></tr></table>

<p>Aggiornare, installare il pacchetto
<code>debian-ports-archive-keyring</code> e aggiornare di nuovo.</p>

<p>Se <code>dpkg</code> si lamenta riguardo a dei programmi mancanti
durante la prima esecuzione di <code>apt-get</code>, avviarlo da una
shell come amministratore (cioè <code>su -</code>, non è sufficiente
<code>su</code>).</p>

<p>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 <tt>/usr/share/doc/apt-doc/offline.text.gz</tt> per le istruzioni
dettagliate.</p>


<h3>La console Hurd</h3>

<p>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:</p>

<table><tr><td>&nbsp;</td><td class=example><pre>
\# console -d vga -d pc_mouse --repeat=mouse -d pc_kbd --repeat=kbd -d generic_speaker -c /dev/vcs
</pre></td></tr></table>

<p>Se l'avvio manuale della console funziona allora è possibile farla
partire automaticamente all'avvio modificando
<tt>/etc/default/hurd-console</tt>, in particolare occorre cambiare
<tt>ENABLE="false"</tt> in <tt>ENABLE="true"</tt>.</p>

<p>Nella console Hurd si può passare da un terminale virtuale a un altro
con <kbd>ALT+F1</kbd>, <kbd>ALT+F2</kbd> e così via.
<kbd>ALT+CTRL+BACKSPACE</kbd> chiude la console Hurd causando il ripristino
della console Mach da dove si può riaprire la console Hurd con il comando
precedente.</p>


<h3>X.Org</h3>

<p>È stato fatto il port di X.Org, tutte le schede video supportate
che non richiedono un modulo del kernel o drm dovrebbero funzionare.</p>

<p>È necessario essere nella console Hurd e ripetere l'installazione
come indicato nella sezione precedente. Per esempio, controllare che
<code>echo $TERM</code> stampi <code>hurd</code> e verificare che
<code>/dev/cons/kbd</code> e <code>/dev/cons/mouse</code> esistano.</p>

<p>
È necessario eseguire <tt>dpkg-reconfigure x11-common xserver-xorg-legacy</tt> per consentire
a tutti gli utenti di avviare Xorg perché il wrapper X non sa nulla di Hurd
né delle console Mach.
</p>

<p>
Può anche essere necessario creare un <tt>/etc/X11/xorg.conf</tt> per attivare
lo shortcut control-alt-backspace:
</p>

<table><tr><td>&nbsp;</td><td class=example><pre>
Section "InputDevice"
   Identifier "Generic Keyboard"
   Driver "kbd"
   Option "XkbOptions" "terminate:ctrl_alt_bksp"
EndSection
</pre></td></tr></table>

<p>Per un motivo qualsiasi potrebbe accadere che Xorg imposti una risoluzione
16/9 ma un desktop 4/3. Il colpevole è Xorg, non Hurd :) Per evitare questo
problema, aggiungere a <tt>/etc/X11/xorg.conf</tt> :</p>

<table><tr><td>&nbsp;</td><td class=example><pre>
Section "Screen"
   Identifier "myScreen"
   SubSection "Display"
      Virtual 1024 768
   EndSubSection
EndSection
</pre></td></tr></table>

<p>Sono necessari parecchi pacchetti per X: <code>xorg</code>,
<code>rxvt</code> e un window manager (<code>twm</code>,
<code>icewm</code>, <code>openbox</code>, ...)
sono un buon inizio. Per far partire X all'avvio del sistema è necessario
installare un display manager. <code>lightdm</code> e <code>gdm</code> non
funzionano ancora, ma <code>xdm</code> funziona benissimo.</p>

<p>X.Org funziona senza alcun file di configurazione. In alcuni casi potrebbe
essere necessario usare il driver vesa.</p>

<p>Infine, eseguire <code>startx /usr/bin/il_wm_preferito</code>.</p>

<p>Se non funziona, come riporta il messaggio d'errore, controllare in
<tt>/var/log/Xorg.0.log</tt> (oppure inviate il messaggio alla lista in
modo che altre persone possano vederlo).</p>

<h3>Aggiornamento del sistema</h3>

<p>
Quando si usa un rilascio di Debian basato su snapshot, non ci saranno
mai aggiornamenti da installare poiché la distribuzione rilasciata è
congelata alla data del rilascio. <b>Questo vuol dire che non riceverete
gli aggiornamenti sulla sicurezza!</b> Si può piuttosto voler attivare
la distribuzione unstable come descritto nella sezione
<a href=#morepackages>Installazione di altri pacchetti</a>.
</p>

<p>
Una volta attivata la distribuzione unstable, poiché è unstable, potrebbe
soffrire di problemini con la transizione delle librerie e quindi non ci
si deve sorprendere se qualche volta non è possibile aggiornare qualche
pacchetto. In generale, è possibile usare la procedura di aggiornamento
raccomandata da Debian: prima usare
</p>

<table><tr><td>&nbsp;</td><td class=example><pre>
\# apt upgrade --without-new-pkgs
</pre></td></tr></table>

<p>
per aggiornare tutto ciò che può essere aggiornato senza modificare la
lista dei pacchetti e poi usare
</p>

<table><tr><td>&nbsp;</td><td class=example><pre>
\# apt full-upgrade
</pre></td></tr></table>

<p>
per aggiornare tutto il resto.
</p>

<p>
Nota: se l'aggiornamento viene fatto raramente, potrebbero verificarsi dei
problemi. Assicurarsi di fare l'aggiornamento all'ultimo snapshot rilasciato
(Hurd 2021, vedi la sezione <a href=#morepackages>Installazione di altri
pacchetti</a>) prima di aggiornare alla distribuzione unstable.
</p>

<h3>Ultime parole</h3>

<p>
Per arrestare il sistema usare semplicemente <code>halt</code>,
<code>poweroff</code> oppure <code>reboot</code>. Può accadere che qualche
demone non si chiuda correttamente, in questo caso è possibile usare
<code>halt-hurd</code>, <code>poweroff-hurd</code>, <code>reboot-hurd</code>,
non per terminare i demoni bensì per forzare la sincronizzazione dei dati
sul disco.
</p>

© 2014-2024 Faster IT GmbH | imprint | privacy policy