Ports ] [ Debian GNU/Hurd ] [ Nieuws ] [ Configuratie ] [ Hurd-CD's ] [ Documentatie ] [ Ontwikkeling ] [ Contact ]

Configuratie van Debian GNU/Hurd

Het doel van dit document is een aantal gemakkelijke en relatief pijnloze instructies te verstrekken voor de configuratie van Debian GNU/Hurd met een minimale inspanning.

Het is gebaseerd op The Hurd Installation Guide van Neal H. Walfield. Hartelijk dank aan Neal voor zijn bijdrage.

Overzicht

GNU is qua aard vergelijkbaar met elk Unix-achtig systeem: na het inloggen krijgt de gebruiker een shell en het bekende Unix VFS (virtual filesystem - virtueel bestandssysteem) te zien. Hoewel GNU POSIX-compatibel probeert te zijn, is het geen Unix. GNU/Hurd bouwt voort op veel van de Unix-concepten en breidt ze uit om ofwel nieuwe functionaliteit toe te voegen of om wat als gebreken in het oorspronkelijke ontwerp werd gezien, te herstellen. Het meest opvallende verschil zijn zogenaamde translators (vertalers), programma's in de gebruikersruimte die communiceren met het VFS. Deze bestandssystemen leven niet in de kernel en dienen evenmin uitgevoerd te worden als root-gebruiker; ze hebben alleen toegang nodig tot de externe opslag en het mount point (aankoppelpunt). Een ander verschil is dat processen, in plaats van één enkele op het moment van creatie vastgelegde gebruikersidentiteit te hebben, identiteitskentekens hebben die los staan van het proces, d.w.z. dat deze met de juiste toestemming van een autoriteit kunnen worden toegevoegd of vernietigd.

Om uzelf comfortabel te voelen in GNU is het vereist dat u bekend bent met de Unix-omgeving (en in het bijzonder met de GNU-gebruikersomgeving die men in populaire varianten zoals GNU/Linux vindt). Ervaring hebben met de Debian-hulpmiddelen zal ook van onschatbare waarde blijken voor de configuratie en het onderhoud van een GNU/Hurd-computer.

Met deze gids trachten we de installatie van GNU/Hurd zo pijnloos mogelijk te maken. Mochten er fouten in staan, dan zijn die zeker op het conto van de auteur te schrijven. Wees zo vriendelijk hem deze te melden samen met eventuele andere suggesties of kritiek; ze worden allemaal in dank aangenomen.

Installatie

U kunt gewoon het Debian-installatiesysteem gebruiken; zie de voorbereide cd-images. Daarna zijn de volgende stappen nodig voor een juiste configuratie.

U kunt ook een vooraf geïnstalleerd image ophalen en dit in qemu uitvoeren:

 
$ 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

Om toegang tot de computer via ssh mogelijk te maken kunt u de volgende regel toevoegen:

 
-net nic -net user,hostfwd=tcp:127.0.0.1:2222-:22

en zo ssh-toegang verkrijgen via uw lokale TCP poort 2222.

U kunt het image ook converteren naar de voor virtualbox geschikte VDI-indeling:

 
$ VBoxManage convertfromraw debian-hurd-*.img debian-hurd.vdi --format vdi

Configuratie

Het netwerk

De Debian-manier wordt ondersteund sinds sysvinit 2.88dsf-48 en hurd 1:0.5.git20140320-1: /etc/network/interfaces wordt gebruikt zoals in Linux. Het enige verschil is dat netwerkkaarten in /dev verschijnen en interfaces daarom gespecificeerd moeten worden als /dev/eth0 enz.

Als het netwerk niet lijkt te werken, gebruik dan het volgende om foutopsporingsinformatie van het DDE-stuurprogramma te verkrijgen::

 
 # settrans -fga /dev/netdde /hurd/netdde

en vernietig daarna alle devnode- en pfinet-processen om hen te laten herstarten met het nieuwere netdde. Werkt het nog steeds niet, post dan in een bugrapport de volledige uitvoer van het bovenstaande netdde settrans-commando, evenals de uitvoer van lspci en lspci -n .

Om het netwerk te configureren zonder via /etc/network/interfaces te gaan, moet de pfinet translator geconfigureerd worden. Dit kan gebeuren met dhclient uit het pakket isc-dhcp-client. Dit kan ook handmatig gebeuren met inetutils-ifconfig uit het pakket inetutils-tools, en ping is in het pakket inetutils-ping te vinden. Ten slotte kan dit handmatig gebeuren (en voorgoed worden vastgelegd) met behulp van het settrans-commando om een translator aan een bepaalde bestandssysteemnode te koppelen. Wanneer programma's de node benaderen door bijvoorbeeld een RPC te verzenden, zal het besturingssysteem de server transparant starten om het verzoek af te handelen.

 
 # 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

Hier worden verschillende opties meegegeven aan settrans. De eerste twee, fg, dwingen eventuele bestaande translators om te verdwijnen. De volgende twee, ap, maken zowel actieve als passieve translators. Door de translator actief te maken, zullen we eventuele foutmeldingen direct op stderr zien. Het laatste slaat de translator en de argumenten op in de node, zodat deze later transparant opnieuw kan worden opgestart (d.w.z. de instelling wordt persistent gemaakt, ook voor de volgende malen dat opgestart wordt). De opties worden gevolgd door de node waaraan de translator gekoppeld moet worden, dan het uit te voeren programma (d.w.z. de translator) en eventuele argumenten die eraan meegegeven moeten worden. De -i-optie is de interface waarop pfinet zal luisteren, -a is het IP-adres, -g is de gateway en -m is het netwerk-mask.

Zorg ervoor dat u naamservers toevoegt aan uw /etc/resolv.conf-bestand:

 
  nameserver 192.168.1.1

Om de configuratie te testen voert u het commando ping -c2 gateway uit. De optie -c is belangrijk om het aantal malen dat ping uitgevoerd wordt te beperken; denk eraan, CONTROL-C werkt niet in de modus voor één enkele gebruiker.

Hulp over settrans kan verkregen worden door het de optie --help mee te geven. Hulp over een specifieke translator kan verkregen worden door deze met hetzelfde argument aan te roepen aan de commandoregel, bijv.:

 
 # /hurd/pfinet --help

Aangezien er veel uitvoer kan zijn, kunt u die door een pagineringsprogramma zoals less sluizen.

Om ook ondersteuning voor IPv6 te configureren, moet dezelfde configuratie opgeslagen worden op zowel /servers/socket/2 als op /servers/socket/26, waarbij deze naar elkaar verwijzen, zodat er slechts één daadwerkelijk gestart wordt, gebonden aan beide nodes:

 
 # 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

De pfinet-server maakt standaard IPv6-autoconfiguratie mogelijk. De huidige toestand kan verkregen worden met fsysopts /servers/socket/26. Adressen kunnen ook handmatig ingesteld worden, bijvoorbeeld door -A 2001:123:123::42/64 -G 2001:123:123::1 te gebruiken.

De configuratie van pfinet kan ook live worden gewijzigd (zonder dat deze op schijf opgeslagen wordt) door fsysopts te gebruiken:

 
 # 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

Er kan een firewall opgezet worden door de eth-filter-translator ertussen te plaatsen. Bijvoorbeeld, dit voorkomt toegang tot poort 22:

 
 # settrans -c /dev/eth0f /hurd/eth-filter -i /dev/eth0 -r "not port 22"

Dan kan het gefilterde device /dev/eth0f opgegeven worden aan pfinet of dhclient, in plaats van /dev/eth0.

Toetsenbordindeling

De toetsenbordindeling kan geconfigureerd worden met het standaardpakket keyboard-configuration. Zorg ervoor dat het geïnstalleerd is en voer dan het commando dpkg-reconfigure keyboard-configuration uit. Enkel de indeling wordt ondersteund, varianten (nog) niet. Dit heeft geen onmiddellijk effect, aangezien de console opnieuw moet worden opgestart opdat er rekening gehouden zou worden met de parameter. Opnieuw opstarten bijvoorbeeld zou daarvoor goed moeten zijn.

Andere bestandssystemen

Bewerk nadien /etc/fstab om eventueel extra bestandssystemen en wisselgeheugen toe te voegen. Het is erg belangrijk dat er wisselgeheugen gebruikt wordt; de Hurd zal dan een orde van grootte stabieler zijn. Merk op dat de Hurd op een transparante manier een swappartitie kan delen met Linux, maar dat het ook makkelijk kan pagineren naar elk apparaat, met inbegrip van een rauwe partitie, zoals uw home-partitie. Standaard worden bij een basisdistributie enkel de editors nano en vi geïnstalleerd.

Hier is een voorbeeld van een /etc/fstab-bestand:

 
# <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

Indien een regel ontbreekt voor een bepaald /dev-apparaat, denk er dan aan om het te creëren met het commando MAKEDEV:

 
 # cd /dev
 # ./MAKEDEV hd0s1 hd0s2 hd0s3

U kunt ook handmatig een bestandssysteem aankoppelen door het aanroepen van settrans:

 
 # settrans /mnt /hurd/ext2fs /dev/hd0s5

Het idee achter dit commando is dat u op de node /mnt de translator /hurd/ext2fs /dev/hd0s5 plaatst. /hurd/ext2fs zal uitgevoerd worden en zal beginnen met lezen/schrijven van/naar /dev/hd0s5 en de inhoud ervan weergeven op /mnt. Meer informatie is te vinden in de Translator-documentatie.

Om een nfs-bestandssysteem aan te koppelen wordt de translator /hurd/nfs gebruikt. Wanneer deze translator niet uitgevoerd wordt door de root-gebruiker, zal deze een verbinding maken met de server via een poort boven 1023. Standaard zal GNU/Linux dit verwerpen. Om GNU/Linux op te dragen verbindingen te accepteren die afkomstig zijn van een niet-gereserveerde poort, moet u de optie insecure toevoegen aan de export-regel. Hier volgt een voorbeeld van een /etc/exports-bestand waarbij ervan uitgegaan wordt dat het ip-adres van de cliëntcomputer 192.168.1.2 is:

 
  /home  192.168.1.2(rw,insecure)

Om dit aan te koppelen vanaf een GNU-computer, ervan uitgaand dat het ip-adres van de nfs-server 192.168.1.1 is:

 
# settrans -cga /aankoppel/punt /hurd/nfs 192.168.1.1:/home

Plezier beleven aan Debian GNU/Hurd

Nu, wat voor leuke dingen kunnen we doen met de Hurd?

Schijf-images aankoppelen

Toegang krijgen tot de inhoud van een cd-image is een beetje omslachtig met standaard Unix-systemen als u geen root bent. Op GNU/Hurd komt het hierop neer:

 
settrans ~/mnt /hurd/iso9660fs cd_image.iso

En het is volledig veilig: de iso9660fs-translator draait onder uw identiteit, niet onder die van de root-gebruiker. U kunt zelfs uw eigen translator coderen voor elk soort bestandssysteem. Ja, dit is zoals FUSE. Zonder al het gedoe.

Transparante FTP

Met het volgende zet u een transparante ftp-map op:

 
settrans -c /ftp: /hurd/hostmux /hurd/ftpfs /

Ga nu met het commando cd naar bijvoorbeeld /ftp://ftp.gnu.org/ en voer daar het comando ls uit. Jawel, u kunt van thuis uit gewoon het commando tar xf ftp://ftp.gnu.org/pub/gnu/gcc/gcc-4.6.0/gcc-4.6.0.tar.bz2 uitvoeren!

Sub-Hurd

Een sub-Hurd is een compleet subsysteem. Op het eerste gezicht heel erg zoals virtualisatiecontainers, behalve dat je helemaal geen root-gebruiker hoeft te zijn om er een uit te voeren.

gdb ext2fs, pfinet, ...

Jawel, u kunt gdb bijvoorbeeld uitvoeren op de ext2fs-implementatie, de pfinet TCP/IP-stapel, enz.

En veel meer andere zaken!

Enkele van de lopende werkzaamheden zijn mboxfs, tarfs, xmlfs, gopherfs, ...

Slotwoorden

Wat volgt zijn gewoon enkele vluggertjes voor tijdens de installatie. Zorg ervoor dat u ook de documentatie leest voor het geïnstalleerde systeem: de Debian GNU/Hurd documentatie, maar ook de bovenstroomse website.

Extra pakketten installeren

U heeft verschillende mogelijkheden om pakketten toe te voegen. Pakketten downloaden en dpkg -i gebruiken werkt, maar is erg onhandig. De makkelijkste methode is apt-get gebruiken.

Indien u de uitgave van 2019 van Debian GNU/Hurd gebruikt heeft, is de veiligste manier om de momentopname (het snapshot) van deze uitgave te gebruiken door het bestand /etc/apt/apt.conf.d/99ignore-valid-until aan te maken met daarin

 
Acquire::Check-Valid-Until "false";

En dan kan de momentopname gebruikt worden als bron voor apt: bewerk /etc/apt/sources.list, voeg de volgende vermelding toe van een niet-vrijgegeven bron.

 
deb http://snapshot.debian.org/archive/debian-ports/20190626T235959Z/ sid main
deb-src http://snapshot.debian.org/archive/debian/20190626T235959Z/ sid main
deb [trusted=yes] https://snapshot.debian.org/archive/debian-ports/20190626T235959Z/ unreleased main

Daarna updaten, de pakketten apt-transport-https debian-ports-archive-keyring installeren en opnieuw updaten. U heeft nu de volledige uitgave van Debian GNU/Hurd 2019 ter beschikking.

Indien u een momentopname gebruikt heeft die recenter is dan de uitgave van 2019, kunt u de volgende pakketbronnen toevoegen om de meest recente pakketten te verkrijgen:

 
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

Daarna updaten, het pakket debian-ports-archive-keyring installeren en opnieuw updaten.

Indien dpkg klaagt over ontbrekende programma's wanneer u apt-get voor het eerst uitvoert, moet u root-gebruiker worden in een login-shell (d.w.z. su -, niet gewoon su).

Indien GNU Mach uw netwerkkaart niet herkent of indien u gebruik maakt van een modem, zal de enige manier om op te waarderen zijn: de pakketten downloaden en deze dan transfereren naar het GNU-systeem. De makkelijkste manier om dit te doen is apt off-line gebruiken. Raadpleeg /usr/share/doc/apt-doc/offline.text.gz voor gedetailleerde instructies.

De Hurd-console

Naast de Mach-console die u tijdens de installatie tegenkwam, heeft de GNU/Hurd een krachtige console voor de gebruikersruimte die virtuele terminals biedt. Indien u de installatie uitvoerde in pseudo-grafische modus, zou deze console automatisch moeten starten bij het opstarten, anders kan u ze handmatig starten met het volgende commando:

 
 # console -d vga -d pc_mouse --repeat=mouse -d pc_kbd --repeat=kbd -d generic_speaker -c /dev/vcs

Als bevestigd is dat ze werkt, kan ze bij het opstarten geactiveerd worden vanuit /etc/default/hurd-console: verander ENABLE="false" naar ENABLE="true".

Binnen de Hurd-console kunt u schakelen tussen virtuele terminals via ALT+F1, ALT+F2 enzovoort. ALT+CTRL+BACKSPACE koppelt de Hurd-console af en brengt u terug naar de Mach-console, vanwaar u ze terug kunt aankoppelen met het bovenstaande commando.

X.Org

X.Org werd geschikt gemaakt voor de Hurd en alle videokaarten die het ondersteunt en die geen kernelmodule of drm nodig hebben, zouden moeten werken.

De Hurd-console moet reeds actief zijn en u moet repeaters hebben ingesteld zoals aangegeven in de vorige sectie. Controleer bijvoorbeeld of echo $TERM hurd als uitvoer geeft en ga na of /dev/cons/kbd en /dev/cons/mouse bestaan.

U moet dpkg-reconfigure x11-common xserver-xorg-legacy uitvoeren om elke gebruiker in staat te stellen Xorg te starten, omdat de X-wrapper niets weet over de Hurd- en Mach-consoles.

U moet ook /etc/X11/xorg.conf creëren om de sneltoets control-alt-backspace mogelijk te maken:

 
Section "InputDevice"
   Identifier "Generic Keyboard"
   Driver "kbd"
   Option "XkbOptions" "terminate:ctrl_alt_bksp"
EndSection

Het kan gebeuren dat Xorg om de een of andere reden een resolutie van 16/9 kiest, maar een desktopgrootte van 4/3. Dit is de schuld van Xorg, niet van de Hurd :) Om dit probleem te vermijden moet u het volgende toevoegen aan /etc/X11/xorg.conf :

 
Section "Screen"
   Identifier "myScreen"
   SubSection "Display"
      Virtual 1024 768
   EndSubSection
EndSection

U zult verschillende X-pakketten nodig hebben. xorg, rxvt en een windowmanager: twm, icewm, openbox, ... zijn goed om te beginnen. Indien u wilt dat X start bij het opstarten, zult u een programma voor beeldschermbeheer moeten installeren. lightdm en gdm werken nog niet, maar xdm zou gewoon goed moeten werken.

Voer tenslotte het commando startx /usr/bin/uw_beeldschermbeheerder uit.

Als dat niet werkt, zoals vermeld in de foutmelding, ga dan kijken in /var/log/Xorg.0.log (of post het op de lijst zodat iemand er kan naar kijken).

Slotwoorden

Om uw systeem af te sluiten gebruikt u gewoon halt, poweroff of reboot. Indien deze soms vastlopen omdat een bepaalde achtergronddienst niet correct afgesloten wordt, kunt u in de plaats daarvan gebruik maken van halt-hurd, poweroff-hurd, reboot-hurd, welke de achtergronddiensten niet echt afsluiten, maar gegevens wel correct naar schijf synchroniseren.