update: 2021-08: hurd ain’t dead
how to get it running?
kvm qemu vm image: http://cdimage.debian.org/cdimage/ports/11.0/hurd-i386/
Debian GNU/Hurd 2021 "Bullseye" - Unofficial hurd-i386 20210812 Welcome to the exciting world of Debian GNU/Hurd This directory contains CD images and pre-installed images for the Debian GNU/Hurd distribution. Debian is a very extensive collection of software. But it is more. It is a complete Operating System (OS) for your computer. And it is free (as in "freedom"). This release is a snapshot of Debian sid at the time of the Bullseye release, so it is mostly based on Bullseye. It however also contains a few patched packages (seen by +hurd suffix in the version). This is *not* part of the official Debian Bullseye release. This is however a release of the Debian GNU/Hurd port. Table of content **************** * Pre-installed images * Installer CD images * Small Examples on Using Translators Pre-installed image ******************** To give Debian GNU/Hurd a try, it is probably easier to simply run the preinstalled image, which is provided here: $ wget http://cdimage.debian.org/cdimage/ports/11.0/hurd-i386/debian-hurd.img.tar.xz $ tar xJf debian-hurd.img.tar.xz All the debian-hurd.img* files are the same, they are just in various format, because it has been reported that some tools are not able to cope with the sparse tar format. The .tar.xz is still the preferred, as it will produce a sparse file on your disk. You can compare the resulting .img file with the MD5SUMS file It can be run directly in qemu/kvm (make sure that you can access /dev/kvm to get full KVM speed): $ kvm -m 1G -drive file=$(echo debian-hurd*.img),cache=writeback It is often convenient to connect through ssh to the box, instead of logging on the console, this can be done by forwarding the ssh port: $ kvm -net user,hostfwd=tcp:127.0.0.1:2222-:22 -net nic,model=e1000 -drive file=$(echo debian-hurd*.img),cache=writeback -m 1G then setting a password to the demo user with passwd demo and then you can connect through ssh: ssh demo@localhost -p 2222 Don't forget to call apt-get update to get the repositories information before trying to install packages. One can increase the size of the image with e.g.: $ qemu-img resize debian-hurd*.img +5G $ parted debian-hurd*.img (parted) resizepart 2 100% (parted) quit $ sudo losetup -o $((512*1953792)) /dev/loop0 debian-hurd*.img $ sudo resize2fs /dev/loop0 $ sudo losetup -d /dev/loop0 (1953792 is the start sector shown in fdisk -l debian-hurd*.img) It can also be run in virtualbox (though it is much less tested), by first converting to VDI format : $ VBoxManage convertfromraw debian-hurd.img debian-hurd.vdi --format vdi You can then just log in as root without a password. The qemu/kvm -curses option can be used to run it in text mode, which can help with the keyboard layout, but it's better to simply reconfigure the layout by running dpkg-reconfigure keyboard-configuration Installer CD images =================== WARNING: the debian-hurd-2021-i386-NETINST-1.iso can not be used to install more than the base system, because the pgp signature of the mirror is expired. You can either tell the installer to ignore the error and not use the mirror, thus only installing the base system, or you can use the DVD image as described below, which contains enough packages to install the lxde desktop. To test the installer images with kvm/qemu: * Download: $ wget http://cdimage.debian.org/cdimage/ports/11.0/hurd-i386/iso-dvd/debian-hurd-2021-i386-DVD-1.iso # apt-get install qemu-kvm * Create a hard disk image: $ kvm-img create hurd-install.qemu 3G * Start the installation: Since we haven't yet optimized the installer initrd mechanism for memory usage at all you will need at least 500MB of memory even for the text installer (about 1G for the graphical installer), or the installer will likely crash due to missing memory. Also make sure that you can access /dev/kvm in order to get full KVM speed. $ kvm -m 1G -drive file=hurd-install.qemu,cache=writeback -cdrom debian-hurd-2021-i386-DVD-1.iso -boot d Note the gnome and kde desktop are not yet completely installable and working. The LXDE desktop is preferred, or even just icewm etc. On real hardware: * Note that in addition to support for IDE, GNU Mach has drivers for SATA devices, but only in AHCI mode, not in RAID mode. * Installation CDs include the 2.6.32 Linux network drivers, and should thus cover a wide range of network boards. There is however no support for firmware loading. * There is no support for wireless network devices. * There are no USB stick drivers, so images can be used only on real CD/DVD media. When going through the installation: * Reminder for qemu: with the user network stack default configuration, use the following values: IP address: 10.0.2.15 Netmask: 255.255.0.0 Gateway: 10.0.2.2 Nameserver: 10.0.2.3 Remarks: * /usr or /usr/local on separate filesystem is not supported yet. Note: daily/weekly/monthly installer snapshots are additionally available on https://people.debian.org/~sthibault/hurd-i386/installer/cdimage/ to get the latest versions of everything. They are however NOT ACTUALLY TESTED, it might happen that they just do not even work at all. Really better use the images mentioned above. Configuring the installed system ================================ Please make sure to read http://www.debian.org/ports/hurd/hurd-install for other configuration information (network / filesystems / X) as well as the FAQ: http://www.gnu.org/software/hurd/faq.html or its latest version on http://darnassus.sceen.net/~hurd-web/faq/ and known open issues http://www.gnu.org/software/hurd/open_issues.html Email us to <firstname.lastname@example.org> for debian-specific things or <email@example.com> for non-debian-specific things if you have questions or comments, We are also available on #hurd on Freenet, #debian-hurd on OFTC. Small Examples on Using Translators =================================== The concept of user-space servers, Translators, is a very powerful one. Here is an introductionary text. Intro The Hurd has some unique capabilities, and we created this simple image to enable you to easily try three of them: â€¢ The simplest of translators: Hello World! â€¢ Transparent FTP â€¢ Mount a remote ISO file Hello World To try out the simplest of translators, you can go the following simple steps: $ touch hello $ cat hello $ settrans hello /hurd/hello $ cat hello "Hello World!" $ fsysopts hello /hurd/hello --contents='Hello World! ' $ fsysopts hello --contents='Hello GNU! > ' $ cat hello Hello GNU! $ settrans -g hello $ cat hello What you do with these steps is first creating the file "hello" and verifying that it is empty. Then you setup the translator /hurd/hello in the file/node hello. After that, you check the contents of the file, and the translator returns "Hello World!". Because you are a curious hacker, you wonder what filesystem options this node has. It turns out that the hello translator uses a "contents" option. We can change what the hello translator returns with another call to fsysopts. To finish it, you remove the translator from the file "hello" (and tell any active running instances to go away) via "settrans --g hello", which is shorthand for "settrans --goaway hello" Having done that, verify that now the file is empty again. Transparent FTP We already setup a a transparent FTP translator for you at /ftp: With it you can easily access public FTP via the file system, for example the one from the GNU project: $ ls /ftp://ftp.gnu.org/ But you can also do this very easily yourself: $ # Setup the translator on the node ftp: $ settrans -c ftp: /hurd/hostmux /hurd/ftpfs / and you can access FTP sites via the pseudo-directory ftp:, for example with $ ls ftp://ftp.gnu.org/ What you do here is setting up the translator /hurd/hostmux on ftp: and passing it the translator /hurd/ftpfs to use for resolving accesses as well as / as additional path component. ISO file mount Now that we can access ftp.gnu.org transparently, let's mount a remote ISO file: $ settrans -c mnt /hurd/iso9660fs ftp://ftp.gnu.org/old-gnu/gnu-f2/hurd-F2-main.iso $ ls mnt/ It is interesting to note that since the ISO9660 format is indexed, ftpfs does not have to download the whole ISO file, it merely fetches what iso9660fs requests. These were only three basic usages of translators on the Hurd. We're sure you'll quickly see many other ways to use this. As a last comment: You can setup a translator on any node you have access to, so you can for example mount any filesystems as normal user. You might currently be logged in as root, but you could just as well do the same as normal user. Why don't you try it out? Links: documentation faq/still useful news/2013-05-debian gnu hurd 2013 translator Copyright Â© 2011 Free Software Foundation, Inc. License: GFDL 1.2+ Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled GNU Free Documentation License. Last edited 2019-03-27 18:45:55 CET
the 4 free software freedom rules:
- freedom 0: The freedom to run the program as you wish, for any purpose.
- (computers start counting with 0, that’s why it is freedom 0)
- freedom 1: The freedom to study how the program works, and change it so it does your computing as you wish.
- Access to the source code is a precondition for this
- freedom 2: The freedom to redistribute copies so you can help others.
- freedom 3: The freedom to distribute copies of your modified versions to others.
- By doing this you can give the whole community a chance to benefit from your changes.
- Access to the source code is a precondition for this.
2019-01: hurd revisited
grab an iso here: https://cdimage.debian.org/cdimage/ports/current-hurd-i386/
There are several different ways to run a GNU/Hurd system:
- Distrib – Distributions based on the Hurd
- Xen – In Xen
- Live CD
- QEMU – In QEMU
- cloud – In the “cloud”: OpenStack
- chroots need a couple of tricks to work properly.
- VirtualBox – In VirtualBox
- https://github.com/bbesim/vagrant_GNU-debian-hurd_basebox – On Vagrant
- vmware (non-free!)
- Public hurd boxen
requirements: will run in VirtualBox on host CentOS7 64Bit
- disk controller IDE or AHCI
- Neither RAID nor SCSI are supported.
- network controller PCnet-PCI II or PCNet-FAST III for instance.
- INTEL PRO or Paravirtualized Network do not work.
- make sure you have enough harddisk space… 😀
You can also get a pre-installed image and run it in qemu:
$ wget http://cdimage.debian.org/cdimage/ports/current-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
or convert it to the VDI format for virtualbox:
$ VBoxManage convertfromraw debian-hurd-*.img debian-hurd.vdi --format vdi
selecting 64bit works as well… it automatically sets hd controller as IDE
and network controller as the recommended PCnet Fast 3
nothing a bit has changed on the boot screen in the last 2 years X-D
setup is straight forward as any debian setup 🙂 GOOD JOB! (netherlands seem to have the monopoly on debian hurd repositories).
the no gui setup worked flawlessly… while not using 100% of the harddisk space of 1TB.
now i am trying to setup hurd with LXDE… wish me luck.
It’s time [to] explain the meaning of “Hurd”. “Hurd” stands for “Hird of Unix-Replacing Daemons”. And, then, “Hird” stands for “Hurd of Interfaces Representing Depth”. We have here, to my knowledge, the first software to be named by a pair of mutually recursive acronyms.
“1984 i started developing a free replacement for unix”
“in 1992 we had almost the entire GNU system but one essential important component was missing – the kernel”
“in 1992 linus liberated it – so the incomplete GNU system and the linux kernel combined gave a full system – so it’s the GNU+Linux system… so please call it GNU-Linux not just Linux – treat us right.”
GNU/Hurd builds upon many of the Unix concepts and extends them to either add new functionality or to fix what has been perceived as flaws in the original design. The most noticeable difference is translators, user space programs which interact with the VFS. These filesystems do not live in the kernel nor do they need to be run as root; they only need access to the backing store and the
mount point. Another difference is that processes, rather than having a single user identity fixed at creation time, have identity tokens which are disjoint from the process, i.e. they may be added with the appropriate permission from an authority or destroyed.
Being familiar with the Unix environment (and especially GNU userland, found in popular variants such as GNU/Linux) is an imperative for feeling at ease in GNU. Having experience with the Debian tools will also prove invaluable to the configuration and maintenance of a GNU/Hurd box.
This guide endeavors to make installing GNU/Hurd as painless a process as possible.
If there are errors, they are most certainly the author’s. Please report them, along with any other suggestions or criticisms, to him; all are gladly accepted. (src)
You can simply use the Debian installer, see the prepared CD images. Then the following steps will be needed for proper configuration.
DO NOT USE THE NETINSTALL MINIMAL ISO…
and try to run it as VM in Hyper-V 😀
of course there are no non-free drivers for ms virtual network cards 😀
detecting two harddisks where there should be only one… maybe one is virtual…
… but i really don’t know how to setup networking, LXDE, ifconfig and so on 😀
What is it about?
“The mission of the Hurd project is: to create a general-purpose kernel suitable for the GNU operating system, which is viable for everyday use, and gives users and programs as much control over their computing environment as possible.”
“I didn’t mention that it must be entirely free software, as this should be obvious to anyone familiar with GNU.” (src)
I am not Stallman but i would add:
in other words: complexity is death – break it down in fixable (micro) parts!