_   _               _  ___  _  _
| | | |_   _ _ __ __| |( _ )| || |
| |_| | | | | '__/ _` |/ _ \| || |_
|  _  | |_| | | | (_| | (_) |__   _|
|_| |_|\__,_|_|  \__,_|\___/   |_|

This is the release of Hurd84_gamma-3 (also -2), download link at bottom of page.

(What is/Why) Hurd84

Hello, this is my page for Hurd84 project, the goal is to create a distro of Hurd where people can play with the system and get things working, some people can think, why not to just get a read to use image from GNU website or even to use the installer from Debaian/Hurd. Well, I think it can be worth to give a try to get the system working going from 0 and also knowledge obtained can be useful to contribute back to all GNU/Hurd systems.

Beginning

The first goal is to have a system where we can do basic tasks as a programmer or anyone wanting to learn more about the Hurd itself, since I use GuixSD as my main system and the GCC toolchain dont have multilib enabled, I cant start just compiling mach, mig, glibc and Hurd to get the usable system, so my first mission is to produce the correct toolchain. Its advised in mach and hurd documentation that it can be tricky and using precompiled version is the goto way. I choose to give it a try first and during this time, I wrote some scripts which I wanted to become the base to bootstrap the Hurd84, which in fact will be just the default install of Hurd, in the middle of task I lost track of things so I have those set of scripts which are unfinished. 0) 0_download_sources.sh It downloads needed files to compile GCC, bintutils, mach, mig and Hurd 1) 1_build_install_deps.sh This one will compile libraries(mpc, gmp, mpfr) which are needed by GCC 2) 2_boostrap_i686_linux_gnu.sh It will proceu a i686-linux toolchain(including x86 glibc to overcome the lack of multilib in my case) 3) 3_begin_gnu_install.sh This script will install mach and hurd headers to a gnu/install directory and also compile mach and mig 4) 4_bootstrap_i686_gnu.sh 4.a) 4_bootstrap_i686_gnu.sh Boot 4 and 4.a was almost the same but 4.a is the version which ended working fine it will produce a i686-gnu toolchain with C,C++ languages enabled targeting i686-gnu already with a working glibc for i686-gnu, this toolchain is the more useful for us since its used to crosscompile from our x86-64 linux to i686-gnu 5) 5_cross_hosted_gcc.sh That one was to create a compiler which run on Hurd and also produces code to Hurd that way we can extend the system using itself (for now just C, need to enable C++) ?) create_image.sh ?) copy_to_hd.sh Those are just helpers which give pain in the eyes, the first is used to create the bootable image of Hurd84 and later is just a help to move files inside the partition in the image.

Status

The scripts are horrible and I know about this, but after getting the i686-gnu(with glibc) working, I managed to crosscompile a few package that enabled our system to become used to do more things than a simple hello world, here is a simple list with the things that I manually installed gcc 13.1.0 bash-4.0.tar.gz bison-3.8.2.tar.gz coreutils-9.1.tar.gz flex-2.6.4.tar.gz gawk-5.2.2.tar.gz grep-3.11.tar.gz gzip-1.12.tar.gz make-4.4.1.tar.gz nano-7.2.tar.gz ncurses-6.4.tar.gz perl-5.38.0.tar.gz (no true) sed-4.9.tar.gz tar-1.35.tar.gz ... I marked perl as not true, because its not preinstalled for real, the crosscompilation of perl is tricky, but I tested and we can compile perl using the gcc inside Hurd84, which is a good thing I think. So its possible to compile from outside and from inside and get more things working, it was a hardwork for me to get this at this stage. Regard of this I expect to deprecated almost all those script soon, because the next major goal will be to compile (glibc, hurd, mig and mach) all from inside the system itself and bootstrap the next version of Hurd84.

Usage

Start the system using qemu with the following command:
tar xJf hda.raw.xz sudo qemu-system-i386 -hda hda.raw -enable-kvm -m 2048
You will be presented the GRUB menu as follows:
GNU GRUB version 2.06 ┌────────────────────────────────────────────────────────────────────────────┐ │*Hurd84 │ │ │ │ │ │ │ │ │ │ │ └────────────────────────────────────────────────────────────────────────────┘ Use the ↑ and ↓ keys to select which entry is highlighted. Press enter to boot the selected OS, `e' to edit the commands before booting or `c' for a command-line.
Prees enter and will reach the login prompt after boot, the system is far for stable, you can login as root (no password), and you must use "fsysopt / --writable" to make partition writable since it will start as readonly.
... Sun Jul 23 22:06:54 UTC 2023 GNU 0.9 (Hurd84) (console) login: root login: chown: /dev/console: Operation not permitted -bash-4.0# fsysopts / --writable

Image

img.raw.xz (Internet Archive) img.raw.xz SHA256: 85603557c5a1df3214e9de2261f4acf0da1589f23dde7142110d3c5ea43ca60d I will add some mirrors soon
hurd84_gamma-2 (include g++) hda_gamma-2.raw.xz (Internet Archive)