Second article of my Hurd’s project, let’s see how to install GNU-Hurd on my laptop. I have installed GNU-Hurd many times but it’s the first time on real hardware.
Operating system’s choice
The choice for the GNU-Hurd distribution is very low, let’s see what we have.
- Arch: inactive since June 2018
- Debian: active
- Nix: inactive since 2012
- Guix: no ISO available, only qcow2 images
Let’s go with Debian, the best/only choice available. Debian 11, Bullseye has been released recently and a stable image for GNU-Hurd too. I will go with the DVD image, and run the install from a disk. I don’t think so it’s possible to install it from an USB key.
Installation
I put the DVD (RW) in the disk drive and boot from it. The Debian installer starts and I choose the Pseudo-graphical install. The choice of the location is similar to a Debian GNU/Linux install. I create an extra user to avoid using root when not required. For the partitions I will use 75GB for the system and 3GB for the swap, I wish it won’t be used.
The hard drive is slow, so the installation is taking a while. An error is displayed about the random number generator but the installation doesn’t stop.
To be sure of the packages, I don’t use a network mirror. I will need a graphical interface, so I select XFCE as desktop environment. At the end of the installation I remove the DVD and restart the laptop.
First boot
The laptop is starting and Grub appears on the screen and I start booting Debian GNU-Hurd. Some error are displayed but nothing critical. The graphical interface doesn’t appear, instead the command line is prompting me my login and my password.
Good thing, my network interface is working directly but my WiFi interface is not displayed.
$ inetutils-ifconfig
/dev/eth0 (2):
inet address 192.168.1.51
netmask 255.255.255.0
broadcast 192.168.1.255
flags UP BROADCAST RUNNING ALLMULTI MULTICAST
mtu 1500
link encap Ethernet
hardware addr XX:XX:XX:XX:XX:XX
lo (1):
inet address 127.0.0.1
netmask 255.0.0.0
flags UP LOOPBACK RUNNING
mtu 3924
link encap Local Loopback
To update the system I remove the disk from the sources.list file, add the sources recommended in one of my previous articles and run the update/upgrade commands. Since the system is based on Debian Unstable, it’s normal that there are a lot of packages who need to be updated.
apt update
apt upgrade
I restart the system and get the same result for the graphical interface. I try to run startx, but the following error appears.
/usr/lib/xorg/Xorg.wrap: Only console users are allowed to run the X server
This is a classic error with GNU-Hurd, but first I’m adding the following line to my .bashrc file to add the system tools to my PATH.
export PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin
I set the permissions for Xorg to anybody.
dpkg-reconfigure xserver-xorg-legacy
I try to run startx again, the screen is becoming black and…. it works!
The graphical interface
Under my kid’s eyes, XFCE has showed its self on the screen. The resolution is correct, it’s looking great, except that there is no wallpaper or icons. I’m really surprised, on the top left corner I can modify the volume. If I wait a bit, the screen is turning off, so the energy saving part is more or less working.
The keyboard is working great, the touchpad and the USB mouse too but impossible to see the pointer. It appears when I try to start a software, with an error about the number of process. Most of the software are working, except the web browser.
l visit the logs and see some problems with lightdm, switching to xdm should fix the problem.
apt install -y xdm
After a reboot, I’m getting a graphical interface on boot and my mouse is working directly.
The top of the windows is still missing and I see some errors in the logs in my home folder.
apt install -y pm-utils
xfwm4 -- reload
Now I have the wallpaper, the icons but the other components have disappeared.
Conclusion
I now have a GNU-Hurd system who is working, with a graphical interface. The next step will be to install some software.
