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 vertalers
(translators), 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 2G -drive file=$(echo debian-hurd*.img),cache=writeback |
https://cdimage.debian.org/cdimage/ports/latest/hurd-amd64/debian-hurd.img.tar.gz
voor de 64-bits pre-release)
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 vertaler 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 vertaler 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 vertalers om
te verdwijnen. De volgende twee, ap
, maken zowel actieve als
passieve vertalers. Door de vertaler actief te maken, zullen we eventuele
foutmeldingen direct op stderr
zien. Het laatste slaat de
vertaler 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 vertaler gekoppeld moet worden, dan het uit te voeren programma
(d.w.z. de vertaler) 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 vertaler 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 vertaler eth-filter 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 vertaler
/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
Documentatie over vertalers (translators).
Om een nfs-bestandssysteem aan te koppelen wordt de vertaler
/hurd/nfs
gebruikt. Wanneer deze vertaler 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 vertaler iso9660fs
werkt onder
uw identiteit, niet onder die van de root-gebruiker. U kunt zelfs uw eigen
vertaler 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
gebruiken.
Indien u de uitgave van 2023 van Debian GNU/Hurd gebruikt heeft, is de
veiligste manier om de momentopname (het snapshot) van deze uitgave te
gebruiken als bron voor apt: bewerk
/etc/apt/sources.list
, voeg de volgende vermelding toe van
een niet-vrijgegeven bron.
deb [check-valid-until=no trusted=yes] https://snapshot.debian.org/archive/debian-ports/20230606T000000Z/ sid main deb [check-valid-until=no trusted=yes] https://snapshot.debian.org/archive/debian-ports/20230606T000000Z/ unreleased main deb-src [check-valid-until=no trusted=yes] https://snapshot.debian.org/archive/debian/20230606T000000Z/ sid main |
Daarna updaten, het pakket debian-ports-archive-keyring
installeren en opnieuw updaten. U heeft nu
de volledige uitgave van Debian GNU/Hurd 2023 ter beschikking.
Indien u een momentopname gebruikt heeft die recenter is dan de uitgave van 2023, 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
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).
Uw systeem opwaarderen
Als u een momentopname van een Debian release gebruikt, heeft u geen upgrade beschikbaar, aangezien de vrijgegeven distributie bevroren wordt op de releasedatum. Dit betekent dat u geen beveiligingsupdates krijgt! Misschien wilt u liever de distributie unstable (de onstabiele distributie) activeren, zoals beschreven wordt in de sectie Meer pakketten installeren.
Zodra u de distributie unstable heeft ingeschakeld, moet u er rekening mee houden dat, aangezien deze onstabiel is, deze kan beïnvloed worden door overgangsproblemen bij de opwaardering van bibliotheken. Wees dus niet verbaasd dat het soms niet mogelijk zal zijn om sommige pakketten op te waarderen. Over het algemeen kunt u de door Debian aanbevolen opwaarderingsprocedure gebruiken: gebruik eerst
# apt upgrade --without-new-pkgs |
om op te waarderen wat opgewaardeerd kan worden zonder de lijst met pakketten te wijzigen, en gebruik daarna
# apt full-upgrade |
om de rest op te waarderen.
Opmerking: als u uw systeem zeer zelden opwaardeert, kunt u op opwaarderingsproblemen stuiten. Zorg ervoor dat u eerst opwaardeert naar de recentste momentopname van een Debian release (Hurd 2023, zie de sectie Meer pakketten installeren), voordat u opwaardeert vanaf de distributie unstable.
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.