summaryrefslogtreecommitdiff
path: root/hurd
diff options
context:
space:
mode:
Diffstat (limited to 'hurd')
-rw-r--r--hurd/bootstrap.mdwn3
-rw-r--r--hurd/building.mdwn8
-rw-r--r--hurd/debugging/glibc.mdwn4
-rw-r--r--hurd/debugging/subhurd.mdwn6
-rw-r--r--hurd/debugging/translator/gdb.mdwn10
-rw-r--r--hurd/documentation.mdwn3
-rw-r--r--hurd/glibc.mdwn4
-rw-r--r--hurd/rump/rumpfs.mdwn4
-rw-r--r--hurd/rump/rumpnet.mdwn31
-rw-r--r--hurd/running/debian.mdwn74
-rw-r--r--hurd/running/debian/CrossInstall.mdwn134
-rw-r--r--hurd/running/debian/qemu_image.mdwn2
-rw-r--r--hurd/running/gnu.mdwn31
-rw-r--r--hurd/status.mdwn2
-rw-r--r--hurd/subhurd.mdwn20
15 files changed, 210 insertions, 126 deletions
diff --git a/hurd/bootstrap.mdwn b/hurd/bootstrap.mdwn
index 76ad0dc5..875541cf 100644
--- a/hurd/bootstrap.mdwn
+++ b/hurd/bootstrap.mdwn
@@ -44,8 +44,9 @@ bootloader can have the following typical configuration:
--multiboot-command-line='${kernel-command-line}' \
--exec-server-task='${exec-task}' -T typed '${root}' \
'$(fs-task=task-create)'
- module /lib/ld.so.1 exec /hurd/exec '$(exec-task=task-create)'
+ module /lib/ld-x86-64.so.1 exec /hurd/exec '$(exec-task=task-create)'
+Note: use `ld.so.1` instead of `ld-x86-64.so.1` on 32b systems.
GNU Mach will first make the `$(task-create)` function calls, and thus create
a series of tasks for the various modules, and assign to the `pci-task`,
diff --git a/hurd/building.mdwn b/hurd/building.mdwn
index ea3213e5..ef8c94d1 100644
--- a/hurd/building.mdwn
+++ b/hurd/building.mdwn
@@ -24,8 +24,8 @@ Building the Hurd requires the *build-essential* and *fakeroot* packages, their
dependencies and additional packages that are specified by the source hurd
package:
- # apt install build-essential fakeroot
- # apt build-dep hurd
+ # apt install build-essential fakeroot quilt
+ # apt build-dep -y hurd gnumach
## ... on non-Debian systems
@@ -41,6 +41,10 @@ git](http://savannah.gnu.org/git/?group=hurd):
... or (if you are working on a Debian system) the ones that are used for the
[current Debian hurd package](http://packages.debian.net/source/unstable/hurd):
+ $ git clone https://salsa.debian.org/hurd-team/hurd.git
+
+Or you could use apt source
+
$ apt source hurd
Please see the Debian [[FAQ]] before using `apt source`.
diff --git a/hurd/debugging/glibc.mdwn b/hurd/debugging/glibc.mdwn
index 1b7e6ab1..a5515e29 100644
--- a/hurd/debugging/glibc.mdwn
+++ b/hurd/debugging/glibc.mdwn
@@ -23,9 +23,11 @@ newly created libraries and loader actually work: they'll be used to run the
`rpcgen` program. If that step doesn't succeed, it'll look similar to this:
[...]
- CPP='gcc -E -x c-header' [...]/build/elf/ld.so.1 --library-path [...] [...]/build/sunrpc/rpcgen [...]
+ CPP='gcc -E -x c-header' [...]/build/elf/ld-x86-64.so.1 --library-path [...] [...]/build/sunrpc/rpcgen [...]
Segmentation fault
+Note: use `ld.so.1` instead of `ld-x86-64.so.1` on 32b systems.
+
---
Unless cross-compiling, the next thing you'll probably want to do
diff --git a/hurd/debugging/subhurd.mdwn b/hurd/debugging/subhurd.mdwn
index 7b5b07b1..34b3e097 100644
--- a/hurd/debugging/subhurd.mdwn
+++ b/hurd/debugging/subhurd.mdwn
@@ -42,11 +42,11 @@ with _ps_.)
W3
- $ sudo gdb /var/tmp/one.full/lib/ld.so.1
+ $ sudo gdb /var/tmp/one.full/lib/ld-x86-64.so.1
[...]
(gdb) set solib-absolute-prefix /var/tmp/one.full
(gdb) attach 854
- Attaching to program `/var/tmp/one.full/lib/ld.so.1', pid 854
+ Attaching to program `/var/tmp/one.full/lib/ld-x86-64.so.1', pid 854
warning: Can't modify tracing state for pid 854: No signal thread
Can't fetch registers from thread 1: No such thread
@@ -54,7 +54,7 @@ W1
[<Enter>.]
/hurd/ext2fs.static --bootflags=-dsf --host-priv-port=38 --device-master-port=43 --exec-server-task=47 -Tdevice pseudo-root
- /lib/ld.so.1 /hurd/exec
+ /hurd/exec.static
Now that this step has been accomplished, you can set break points in GDB, etc.
diff --git a/hurd/debugging/translator/gdb.mdwn b/hurd/debugging/translator/gdb.mdwn
index 82a50736..fdf6adff 100644
--- a/hurd/debugging/translator/gdb.mdwn
+++ b/hurd/debugging/translator/gdb.mdwn
@@ -12,6 +12,8 @@ Say you want to try running file system server ([[`ext2fs`|translator/ext2fs]],
[[`jfs`|translator/jfs]], ...) against a modified version of
[[`libpager`|libpager]] and debug the latter one using [[debugging/GDB]].
+On Debian you need the `hurd-dbgsym` and `libc0.3-dbg` packages installed.
+
Set the [[hurd/translator]] like this:
$ settrans -fgap ↩
@@ -51,3 +53,11 @@ course):
[...]
Voilà.
+
+If you need to debug the initialization of the translator, start the translator
+like
+
+ $ settrans -Pa /foo /hurd/foofs
+
+The `-P` option will make it
+pause and you will be able to attach [[debugging/GDB]] to the process.
diff --git a/hurd/documentation.mdwn b/hurd/documentation.mdwn
index f9a2428f..1a9ff3b3 100644
--- a/hurd/documentation.mdwn
+++ b/hurd/documentation.mdwn
@@ -69,6 +69,9 @@ is included in the section entitled
* [[glibc]]
* Device Drivers
* [[rump|hurd/rump]] NetBSD drivers
+ * [[hurd/rump/rumpdisk]]
+ * [[hurd/rump/rumpnet]]
+ * [[hurd/rump/rumpusbdisk]]
* [[DDE|hurd/dde]] Outdated Linux Drivers (unmaintained)
* RPC [[Interface]]s
* Libraries
diff --git a/hurd/glibc.mdwn b/hurd/glibc.mdwn
index 8e330aef..736cc099 100644
--- a/hurd/glibc.mdwn
+++ b/hurd/glibc.mdwn
@@ -49,6 +49,10 @@ One can build libc this way:
$ make
$ make check -k
+One can run tests individually with:
+
+ $ make test t=wcsmbs/test-wcsnlen
+
One can run tests with the new libc by hand:
$ ./testrun.sh ~/test
diff --git a/hurd/rump/rumpfs.mdwn b/hurd/rump/rumpfs.mdwn
index 8236defa..b98ceae5 100644
--- a/hurd/rump/rumpfs.mdwn
+++ b/hurd/rump/rumpfs.mdwn
@@ -29,3 +29,7 @@ some existing experimental code.
Another option is to create translators out of
[[libguestfs|hurd/translator/libguestfs]].
+
+Another option is the newly created
+[[experimental journal for ext2fs|https://lists.gnu.org/archive/html/bug-hurd/2025-08/msg00040.html]].
+As of November 9, 2025, this has not yet been merged upstream.
diff --git a/hurd/rump/rumpnet.mdwn b/hurd/rump/rumpnet.mdwn
index 5ea3ba61..ec67d6b5 100644
--- a/hurd/rump/rumpnet.mdwn
+++ b/hurd/rump/rumpnet.mdwn
@@ -13,10 +13,29 @@ License|/fdl]]."]]"""]]
# RumpNet
-Hurd developers want to use rumpnet, so that we can use modern
-ethernet and wifi device drivers. The Hurd is currently using Linux's
-old TCP/IP stack (`pfinet`) and device drivers. We plan to replace
-`pfinet` with [[lwip|hurd/translator/lwip]] and use rumpnet's modern
-device drivers for ethernet and wifi hardware. Alternatively, we
-could use rump's TCP/IP stack.
+The Hurd is currently using an old Linux's TCP/IP stack (`pfinet`) and
+device drivers. Hurd developers are replacing Linux's old ethernet
+drivers with rumpnet's modern ethernet and wifi device drivers. While
+porting Linux's device drivers would provide better hardware support,
+we do not have the developer man-power to maintain it. Hurd
+Developers prefer rumpnet's stable API over Linux's code churn. We
+plan to replace `pfinet` with [[lwip|hurd/translator/lwip]] (or use
+rump's TCP/IP stack).
+
+In 2025, Damien Zammit make significant progress with rumpnet. He
+coded rumpnet to work with `/dev/wmX` cards, which are Intel i8254x
+Gigabit Ethernet devices. (Documentation is available at
+man.netbsd.org's [wm(4)](https://man.netbsd.org/wm.4) web
+page). Please note that these are ethernet cards not wifi cards. This
+should be easily extended to support other NICs by contributing to
+netbsd/rump's makefiles.
+
+Example usage:
+
+ $ settrans -fgap /dev/rumpnet /hurd/rumpnet
+ $ settrans -fgap /dev/wm0 /hurd/devnode -M /dev/rumpnet wm0
+ $ settrans -fgap /servers/socket/2 /hurd/pfinet -i /dev/wm0
+ $ ifup /dev/wm0
+
+
diff --git a/hurd/running/debian.mdwn b/hurd/running/debian.mdwn
index 0772c48e..d3e60424 100644
--- a/hurd/running/debian.mdwn
+++ b/hurd/running/debian.mdwn
@@ -5,7 +5,7 @@ Debian GNU/Hurd is an effort to port the Debian distribution to the Hurd. Around
<!-- I don't know what it means that /etc/mtab -> /proc/mounts, but this is what I could interpret.
It was simply a line (h1, for some reason, on this page and it looked out of place. Correct or even delete this if it makes no sense -->
-One noteable difference in this port, is that `/etc/mtab` -> `/proc/mounts`
+One notable difference in this port, is that `/etc/mtab` -> `/proc/mounts`
---
# QEMU Image
@@ -13,9 +13,14 @@ One noteable difference in this port, is that `/etc/mtab` -> `/proc/mounts`
---
# Installing
-- [Installation Instructions](http://www.debian.org/ports/hurd/hurd-install)
- - [Upgrading K11 or K14 based systems to unstable](http://lists.debian.org/debian-hurd/2007/09/msg00007.html)
-- [[After_install]] — Do this to get networking, new console and X
+The Debian installer runs natively on the Hurd and it is possible to install a Debian GNU/Hurd system booting it from an IDE or SATA CD-ROM drive or from a USB stick. See
+[installation instructions](http://www.debian.org/ports/hurd/hurd-install) for details and post-installation configuration.
+
+As of late 2025 installation may require larger amount of RAM (&ge; 2 Gi) due to [[hurd/rump/rumpdisk]] memory requirements. It is possible to install 32 bit Hurd (`hurd-i386`) on lower RAM conditions (~ 500 Mi) using the [CrossInstall](#crossinstall) method, by not loading rumpdisk and using disk drivers in gnumach.
+
+---
+# <a id="crossinstall">CrossInstall</a>
+It is possible to install a Debian GNU/Hurd system on a spare partition from an existing Debian GNU/Linux installation. We call this [[CrossInstall]].
---
# Contributing
@@ -23,68 +28,9 @@ One noteable difference in this port, is that `/etc/mtab` -> `/proc/mounts`
* [[Patch_submission]] — How to submit patches for build failures
- [[Creating_image_tarball]]
-### IRC, freenode, #hurd, 2014-02-12
-
- <braunr> hm, there is something weird
- <braunr> after successfully installing (with the new installer cd), and rebooting, system init fails because fsck can't be run on /home (a separate partition)
- <braunr> it can't fsck because at that point, /home is already mounted, and indeed the translator is running
- <braunr> teythoon: any idea what might cause that ?
- <teythoon> me ?
- <teythoon> no
- <braunr> ok
- <braunr> ah no, actually /home isn't mounted oO
- <braunr> but fsck still refuses to check it, stating that reason
- <braunr> hm, /etc/mtab isn't a link to /proc/mounts here, might explain
-
-
-### IRC, freenode, #hurd, 2014-02-12
-
- <braunr> yes, better with a proper symlink :)
- <teythoon> good
- <youpi> Mmm, what is supposed to create that symlink?
- <teythoon> one debian init script did that at one time
- <teythoon> i believe they dropped that
- <youpi> err, but something must be creating it for newer systems
- <teythoon> good point
- <braunr> well, except for these small details, everything went pretty smooth
- <braunr> both on ide and ahci
- <youpi> it seems /etc/mtab gets created at boot
- <youpi> (on Linux I mean)
- <teythoon> youpi: i cannot find the init script, but i'm sure that it was there
- <youpi> I can't find it either on the installed system...
- <azeem> maybe pere or rleigh in #debian-hurd can help
-
-
-### IRC, freenode, #hurd, 2014-02-13
-
- <braunr> 6<--60(pid1698)->dir_lookup ("var/run/mtab" 4194305 0) = 0 3 "/run/mtab" (null)
- <braunr> looks like /etc/mtab isn't actually used anymore
- <teythoon> it never was on hurd
- <tomodach1> braunr: well it is generated i believe from mounted filesystems
- <tomodach1> if its still around there is a reason for it, like posix compatiblity perhaps?
- <braunr> well the problem is that, as mentioned in pere's thread on bug-hurd, some tools now expect /var/run/mtab instead of /etc/mtab
- <braunr> and since nothing currently creates this file, these tools, such as df, are lost
- <braunr> they can't find the info they're looking for
-
-
-### IRC, freenode, #hurd, 2014-02-17
-
- <braunr> i still don't have mtab at the proper location on darnassus
- <pere> is there something missing with sysvinit on hurd?
- <braunr> is that normal ?
- <pere> yes. I recommended fixing it in the hurd package. (BTS #737759)
- <braunr> yes i saw but was there any action taken ?
- <pere> did not check
- <teythoon> i thought youpi mentioned that it is fixed in the libc and we just need to rebuild coreutils or something
- <pere> yes
- <braunr> oh ok
- <braunr> but doesn't that mean it will use /etc/mtab ?
- <pere> if I was a hurd porter, I would fix it in hurd while waiting for a fix in coreutils, just to save people for wondering about the breakage, but I am not the most patient of developers. :)
-
---
-# Externel
+# Other links
* Official page about the Debian GNU/Hurd port: [Debian GNU/Hurd](http://www.debian.org/ports/hurd/)
* Debian [[FAQ]] — Frequently Asked Questions
-* [Presentation](http://people.debian.org/~mbanck/talks/hurd_lt2004/html/) -Debian GNU/Hurd*, [[MichaelBanck]], LinuxTag 2004 Karlsruhe
* [Archive Qualification](http://wiki.debian.org/ArchiveQualification/hurd-i386)
* [[!wikipedia Debian_GNU/Hurd]] on Wikipedia
diff --git a/hurd/running/debian/CrossInstall.mdwn b/hurd/running/debian/CrossInstall.mdwn
index 0f56a3e7..675d9992 100644
--- a/hurd/running/debian/CrossInstall.mdwn
+++ b/hurd/running/debian/CrossInstall.mdwn
@@ -1,31 +1,41 @@
-## <a name="Easy_install_with_CrossHurd"> Easy install with CrossHurd </a>
+Curious about the Hurd? Have a 1-5 GiB partition free? Let's install GNU/Hurd on it!
-Qurious about the Hurd? Have a 1-5 GiB partition free? Let's install GNU/Hurd on it!
+This page covers two ways to install a Debian GNU/Hurd system from a running
+Debian GNU/Linux in a dual boot type of setup, using either
+[crosshurd](#CrossHurd) or [mmdebstrap](#mmdebstrap).
-### <a name="Preparing_the_partition"> Preparing the partition </a>
+For the sake of the examples in this page we will consider `/dev/hda3` as
+the partition where you want to install your Hurd system as displayed from linux.
-We'll assume you have a partition ready, for the sake of argument we use an example here: /dev/hda3 is the Hurd partition (type: Linux) and /dev/hda4 is the Linux swap that we'll reuse.
+The examples here assume the installation of a `hurd-i386` system, but it is
+simple to modify for a `hurd-amd64` installation.
-First we create the Ext2 filesystem, notice the `hurd` option.
- # mke2fs -o hurd /dev/DEVICE
+## <a name="CrossHurd"> CrossHurd method </a>
-Next we create a useful mountpoint and mount the partition.
+First install the [crosshurd package](http://packages.debian.org/crosshurd).
- # mkdir /gnu
- # mount /dev/hda3 /gnu
+ # apt install crosshurd
-### <a name="Retrieving_CrossHurd"> Retrieving CrossHurd </a>
+If you have problems it might be because the crosshurd version in the Stable
+distribution is out of date, try the version in Unstable before reporting the issue.
-Unless you don't run Debian GNU/Linux download it from <http://packages.debian.org/crosshurd>, or simply apt the package from Testing or Unstable. Avoid using the version from Stable since it probably is outdated. In case of problems, make sure to try the Unstable version before reporting the issue.
+### <a name="Preparing_the_partition"> Preparing the partition </a>
+
+Create the Ext2 filesystem for the Hurd system, notice the `hurd` option.
+
+ # mke2fs -o hurd /dev/hda3
+
+Next create a useful mountpoint and mount the partition.
+
+ # mkdir /gnu
+ # mount /dev/hda3 /gnu
- # apt install crosshurd
### <a name="Cross_installing"> Cross installing </a>
The crosshurd package only operates in the given target directory, which is the first question asked when running the program.
- # cd /gnu
# crosshurd
Answer the questions you get: $ What is the target directory?: `/gnu` $ Target Debian system?: gnu $ Target CPU?: i386
@@ -34,34 +44,96 @@ Now the program starts retrieving all the necessary base packages.
### <a name="Preparing_to_reboot"> Preparing to reboot </a>
-When all packages have been extracted we must prepare [[GRUB]] for the Hurd when we reboot. Add the below entry to your `/boot/grub/menu.lst` file to boot the Hurd in single user mode (-s). Single user mode is needed only for the two reboots when running the Native Install.
+When all packages have been extracted we must prepare [[GRUB]] for the Hurd when we reboot.
+Add the below entry to `/etc/grub.d/40_custom` file in your linux installation.
+
+ menuentry "Debian GNU/Hurd" {
+ set root='hd0,msdos3'
+ echo 'Loading GNU Mach ...'
+ multiboot /boot/gnumach-1.8-486-up.gz root=part:3:device:wd0 noide
+ echo 'Loading the Hurd ...'
+ module /hurd/pci-arbiter.static pci-arbiter \
+ --host-priv-port='${host-port}' --device-master-port='${device-port}' \
+ --next-task='${acpi-task}' \
+ '$(pci-task=task-create)' '$(task-resume)'
+ module /hurd/acpi.static acpi \
+ --next-task='${disk-task}' \
+ '$(acpi-task=task-create)'
+ module /hurd/rumpdisk.static rumpdisk \
+ --next-task='${fs-task}' \
+ '$(disk-task=task-create)'
+ module /hurd/ext2fs.static ext2fs \
+ --multiboot-command-line='${kernel-command-line}' \
+ --exec-server-task='${exec-task}' -T typed '${root}' \
+ '$(fs-task=task-create)'
+ module /hurd/exec.static exec '$(exec-task=task-create)'
+ }
- title GNU (kernel GNUmach 1.5)
- root (hd0,2)
- kernel /boot/gnumach-1.5-486.gz root=device:hd0s3 -s
- module /hurd/ext2fs.static \
- --multiboot-command-line=${kernel-command-line} \
- --host-priv-port=${host-port} \
- --device-master-port=${device-port} \
- --exec-server-task=${exec-task} \
- -T typed ${root} $(task-create) $(task-resume)
- module /lib/ld.so.1 /hurd/exec $(exec-task=task-create)
+*Nota Bene:* In your menu file there should be no extra white space after the back slashes.
-**_Nota Bene:_** In your menu file there should be no extra white space after the back slashes.
+Following this, re-create the grub configuration file:
+
+ # update-grub
### <a name="Native_install"> Native install </a>
-Ah, reboot and select "GNU (kernel GNUmach 1.3)" from the Grub menu. At the prompt, setup TERM and run the native-install script.
+Then, reboot and select "Debian GNU/Hurd" from the Grub menu. At the prompt, setup TERM and run the native-install script.
# export TERM=mach
# ./native-install
-Done, continue setting up your system.
+You should add a swap partition to `/etc/fstab`. You can share the swap
+partition between your Hurd and linux installations. If the swap partition
+was `/dev/hda4` on linux, it will be `/dev/wd0s4` on the Hurd.
+
+Before you reboot the system be sure to set a root password.
+
+ # passwd
+
+We can now reboot into the newly configured system.
+
+ # reboot-hurd
+
+## <a name="mmdebstrap"> mmdebstrap method </a>
+
+First we need to install the [mmdebstrap](http://packages.debian.org/mmdebstrap) and libarchive13t64 packages.
+
+ # apt install mmdebstrap libarchive13t64
+
+The way this installation method works is to run mmdebstrap in the
+[chrootless mode](https://gitlab.mister-muffin.de/josch/mmdebstrap/wiki#modes)
+from a linux host. But because misconfigured package Maintainer scripts may
+damage the host installation while running in chrootless mode, we wrap two
+mmdebstrap calls: the first creates a throw-away linux chainroot from within
+which we call mmdebstrap in chrootless mode to install our GNU/Hurd image.
+
+We run the following command (we use line breaks for readability, but it is a
+single command):
+
+ # mmdebstrap --variant=apt
+ --include=passwd,debian-ports-archive-keyring,mmdebstrap,sysvinit-core,sysv-rc,e2fsprogs,libarchive13t64
+ --customize-hook='chroot "$1"
+ mmdebstrap --mode=chrootless --arch=hurd-i386
+ --include=sysvinit-core,sysv-rc,debian-ports-archive-keyring,netdde,gnumach-image-1-486
+ --customize-hook="passwd --root=\"\$1\" --delete root"
+ --variant=apt unstable -
+ "deb http://ftp.ports.debian.org/debian-ports/ unstable main"
+ "deb http://ftp.ports.debian.org/debian-ports/ unreleased main"
+ | mkfs.ext2 -o hurd -d - /dev/hda3'
+ stable /dev/null
+
+We then need to [configure the bootloader grub](#Preparing_to_reboot) in the
+same way as described in the crosshurd method above.
-----
+We can then reboot into the Debian GNU/Hurd system. If we check the `/etc/fstab`
+file we will note that the system boots even without specifying a root mountpoint.
+At the moment there is no swap partition defined either, and it is a good idea to
+edit `/etc/fstab` to add both root and swap partitions. We can share the swap
+partition between Hurd and linux installations. If the swap partition
+was `/dev/hda4` on linux, it will be `/dev/wd0s4` on the Hurd. To activate swap
+without rebooting we use the command
-Jeff Bailey has set up a system where you can install a Hurd system without having to use CDs. It's another type of cross-installation method which uses Debian package management tools to get the packages required as opposed to the one single big tarball.
+ # swapon /dev/wd0s4
-As of 2005-03-22, the latest version of crosshurd is 1.7.11. It can be found at <http://packages.debian.org/crosshurd>.
+Any other packages can now be installed using `apt`.
--- [[Main/PeterMelville]] - 12 Jun 2004
diff --git a/hurd/running/debian/qemu_image.mdwn b/hurd/running/debian/qemu_image.mdwn
index 8409bc8c..c6da1555 100644
--- a/hurd/running/debian/qemu_image.mdwn
+++ b/hurd/running/debian/qemu_image.mdwn
@@ -42,7 +42,7 @@ Optionally you may use `--curses` to keep your keyboard layout. If need be modpr
Note that if you do not have a command named `kvm`, you can try something across the lines of:
- $ qemu-system-i386 --enable-kvm -drive cache=writeback,file=$(echo debian-hurd-*.img) -net user,hostfwd=tcp:127.0.0.1:2222-:22 -net nic,model=e1000
+ $ qemu-system-i386 --enable-kvm -m 2G -drive cache=writeback,file=$(echo debian-hurd-*.img) -net user,hostfwd=tcp:127.0.0.1:2222-:22 -net nic,model=e1000
Or, if your machine does not allow for KVM acceleration, omit `--enable-kvm` from the command.
diff --git a/hurd/running/gnu.mdwn b/hurd/running/gnu.mdwn
index 964e7e8e..b45841df 100644
--- a/hurd/running/gnu.mdwn
+++ b/hurd/running/gnu.mdwn
@@ -2,31 +2,32 @@
# <a name="The_GNU_Operating_System"> </a> The GNU Operating System
-The GNU Operating System, Commonly referred to as simply "The GNU System", is a
+The GNU Operating System, commonly referred to as simply "The GNU System", is a
complete [[Unix]]-like operating system composed entirely of [free
software](http://www.gnu.org/philosophy/free-sw.html). The creation of the GNU
System is one of the goals of the [GNU Project](http://www.gnu.org/), which was
[launched in 1983](http://www.gnu.org/gnu/initial-announcement.html) by
-[Richard Stallman](http://www.stallman.org/). It has many ambitious goals that
-the GNU/Hurd intends to address.
-
-These goals include increased security through the [[principle of least
-privilege|https://en.wikipedia.org/wiki/Principle%5Fof%5Fleast%5Fprivilege]], an
-[[extensible system|extensibility]], conformation to open operating standards
-including [[POSIX|https://en.wikipedia.org/wiki/POSIX]], modularity, and
-respecting user freedom. Many of these goals are things that the GNU/Hurd can
-resolve, however the GNU/Hurd is not the most stable operating system yet.
+[Richard Stallman](http://www.stallman.org/). The GNU/Hurd intends to
+increase security through the [[principle of least
+privilege|https://en.wikipedia.org/wiki/Principle%5Fof%5Fleast%5Fprivilege]], provide an
+[[extensible system|extensibility]], conform to open operating standards
+including [[POSIX|https://en.wikipedia.org/wiki/POSIX]], contain a modular code-base, and
+[[respect user freedom|https://www.gnu.org/philosophy/free-sw.html]].
+Many of these goals are things that the GNU/Hurd can
+resolve, however the GNU/Hurd is not yet the most stable operating system.
If you are looking for a production ready GNU system, then [[hurd/running/Debian]] GNU/Hurd may
-not be the best choice for you. Debian GNU/Hurd currently lacks 64-bit support,
-many device drivers, sound support, SMP, and a few other essential bits that
-provide a flexible operating system.
+not be the best choice for you. Debian GNU/Hurd currently lacks many device drivers, sound
+support, and a few other essential bits that provide a flexible operating system.
+It also has some tricky [[problems|challenges]] to solve.
However, [[gnu.org|https://www.gnu.org/distros/free-distros.html]] maintains a
list of freedom respecting and production ready GNU/Linux systems. One of the
-most promising of these is [[GuixSD|https://www.gnu.org/software/guix/]], which
+most promising of these is [[Guix System|https://www.gnu.org/software/guix/]], which
is the GNU Guix System Distribution, which eventually plans to support the GNU
-Hurd as the kernel!
+Hurd as the kernel! You can even use a
+[[childhurd|https://guix.gnu.org/manual/devel/en/html_node/Virtualization-Services.html#The-Hurd-in-a-Virtual-Machine]]
+on Guix System!
## Resources
diff --git a/hurd/status.mdwn b/hurd/status.mdwn
index 28919995..16e2140c 100644
--- a/hurd/status.mdwn
+++ b/hurd/status.mdwn
@@ -59,7 +59,7 @@ GNU/Hurd|hurd/running/debian]] team released [[Debian GNU/Hurd
2015|news/2015-04-29-debian_gnu_hurd_2015]]. Similarly, along Debian "stretch",
in June 2017 [[Debian GNU/Hurd 2017|news/2017-06-18-debian_gnu_hurd_2017]] was released.
The latest release is from
-[[2023|https://darnassus.sceen.net/~hurd-web/news/2023-06-11-debian_gnu_hurd_2023/]].
+[[2023|news/2023-06-11-debian_gnu_hurd_2023]].
With [[Guix System|hurd/running/guix]] one can trivially run a childhurd or a
hurd vm running atop GNU/Linux. The adventurous can run it on
diff --git a/hurd/subhurd.mdwn b/hurd/subhurd.mdwn
index d24369bc..5bd81425 100644
--- a/hurd/subhurd.mdwn
+++ b/hurd/subhurd.mdwn
@@ -46,7 +46,6 @@ The 'fastboot' is necessary to skip the filesystem check which fails
because the image assumes the root filesystem to be /etc/hd0s1. Once
booted, you can correct this:
- root@debian:~# settrans -c /dev/pseudo-root /hurd/storeio pseudo-root
root@debian:~# echo /dev/pseudo-root / ext2 defaults 0 1 >/etc/fstab
root@debian:~# halt
@@ -83,8 +82,16 @@ debootstrap as root:
mke2fs /dev/hd0s6
settrans -ca mnt /hurd/ext2fs /dev/hd0s6
debootstrap --keyring=/usr/share/keyrings/debian-ports-archive-keyring.gpg --extra-suites=unreleased sid chroot http://deb.debian.org/debian-ports/
+ chroot mnt passwd
settrans -fga mnt
+## Using mmdebstrap
+
+One can also use mmdebstrap:
+
+ mmdebstrap --mode=chrootless --variant=required --keyring=/usr/share/keyrings/debian-ports-archive-keyring.gpg '' rootfs.tar.gz 'deb http://deb.debian.org/debian-ports unreleased main' 'deb http://deb.debian.org/debian-ports/ unstable main'
+ mke2fs /dev/hd0s6 -d rootfs.tar.gz
+
## Booting
If you are using a recent version of the Hurd (>= 0.9), then you can
@@ -152,6 +159,17 @@ numbers are different, the order should usually match. Often it also helps to
look at the number of threads (e.g. using `ps -l`), as many servers have very
characteristic thread counts.
+## Faster boot
+
+If you do not need daemons etc. you can just run a shell, similary to a chroot:
+
+ boot /dev/hd0s6 -c init=/bin/bash
+
+Unless you change the boot script to pass `--writable` to ext2fs, you will want to remount / read-write:
+
+ fsysopts / --writable
+
+And `poweroff-hurd` should be used to stop the subhurd.
### IRC, freenode, #hurd, 2013-08-09