Re: [PATCH web] Update crossinstall documentation
bug-hurd
Top
][
All Lists
Date Prev
][
Date Next
][
Thread Prev
][
Thread Next
][
Date Index
][
Thread Index
Re: [PATCH web] Update crossinstall documentation
From
Samuel Thibault
Subject
Re: [PATCH web] Update crossinstall documentation
Date
Sun, 5 Oct 2025 13:59:24 +0200
Hello,

Fixed a bit and applied, thanks!

Samuel

João Pedro Malhado, le sam. 04 oct. 2025 23:01:30 +0100, a ecrit:
Hello everyone,
Please consider the attached patch that
* Updates instructions on crosshurd use.
* Eliminates duplication of crosshurd documentation.
* Documents use of mmdebstrap to create hurd image on disk partition.
Best regards,
João
diff --git a/faq/drivers.mdwn b/faq/drivers.mdwn
index 16d60a9a..0d73f995 100644
--- a/faq/drivers.mdwn
+++ b/faq/drivers.mdwn
@@ -24,9 +24,8 @@ Other working Thinkpads include the X200, T400,
which support internet connectivity via the ethernet port. You can
use an [[SSD|hurd/rump/rumpdisk]] on these laptops, which support a
maximum of 8GB of RAM. The Debian installer images from 2023 fail to
-boot these machines, but you can install the Hurd via [[Debian's
-CrossInstall|hurd/running/debian/CrossInstall]] or
-[[mmdebstrap|
]].
+boot these machines, but you can install the Hurd from a linux
+installation via [[crossinstall method|hurd/running/debian/CrossInstall]].
_While the [[64 bit port|faq/64-bit]] is about as stable as the 32-bit
port, the rumpdisk support needed for it is still relatively experimental.
diff --git a/hurd/running/debian/CrossInstall.mdwn
b/hurd/running/debian/CrossInstall.mdwn
dissimilarity index 73%
index 38a33040..f3f987dc 100644
--- a/hurd/running/debian/CrossInstall.mdwn
+++ b/hurd/running/debian/CrossInstall.mdwn
@@ -1,69 +1,136 @@
-## Easy install with CrossHurd
-Qurious about the Hurd? Have a 1-5 GiB partition free? Let's install
GNU/Hurd on it!
-### Preparing the partition
-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.
-First we create the Ext2 filesystem, notice the `hurd` option.
- # mke2fs -o hurd /dev/DEVICE
-Next we create a useful mountpoint and mount the partition.
- # mkdir /gnu
- # mount /dev/hda3 /gnu
-### Retrieving CrossHurd
-Unless you don't run Debian GNU/Linux download it from
>, 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.
- # apt install crosshurd
-### Cross installing
-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
-Now the program starts retrieving all the necessary base packages.
-### Preparing to reboot
-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.
- 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-x86-64.so.1 /hurd/exec $(exec-task=task-create)
-Note: use `ld.so.1` instead of `ld-x86-64.so.1` on 32b systems.
-**_Nota Bene:_** In your menu file there should be no extra white space
after the back slashes.
-### Native install
-Ah, reboot and select "GNU (kernel GNUmach 1.3)" 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.
-----
-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.
-As of 2005-03-22, the latest version of crosshurd is 1.7.11. It can be found
at <
>.
--- [[Main/PeterMelville]] - 12 Jun 2004
+Curious 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).
+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.
+The examples here assume the installation of a `hurd-i386` system, but it
should
+be simple to modify for a `hurd-amd64` installation.
+## CrossHurd method
+First install the [crosshurd package](
).
+ # apt install crosshurd
+If you have problems it might be because the corsshurd version in the Stable
+distribution is out of date, try the version in Unstable before reporting
the issue.
+### Preparing the partition
+We create the Ext2 filesystem for the Hurd system, notice the `hurd` option.
+ # mke2fs -o hurd /dev/hda3
+Next we create a useful mountpoint and mount the partition.
+ # mkdir /gnu
+ # mount /dev/hda3 /gnu
+### Cross installing
+The crosshurd package only operates in the given target directory, which is
the first question asked when running the program.
+ # crosshurd
+Answer the questions you get: $ What is the target directory?: `/gnu` $
Target Debian system?: gnu $ Target CPU?: i386
+Now the program starts retrieving all the necessary base packages.
+### Preparing to reboot
+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)'
+ }
+*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:
+ # grub-mkconfig > /boot/grub/grub.cfg
+And then install it to your disk:
+ # grub-install /dev/hda
+### Native install
+Ah, 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
+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
+## mmdebstrap method
+First we need to install the
[mmdebstrap](
) and libarchive13t64
packages.
+ # apt install mmdebstrap libarchive13t64
+The way this installation method works is to run mmdebstrap in the
+[chrootless
mode](
+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
unstable main"
+ "deb
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.
+You can then reboot into the Debian GNU/Hurd system and install any further
+packages using `apt`.
diff --git a/unsorted/CrossHurd.mdwn b/unsorted/CrossHurd.mdwn
deleted file mode 100644
index 6a01e1bc..00000000
--- a/unsorted/CrossHurd.mdwn
+++ /dev/null
@@ -1,96 +0,0 @@
-This will eventually become an installation guide for the Debian crosshurd
package (GNU/Hurd cross install only). However, for the time being I am
setting it up as a diet version of Hurd/InstalNotes, adapted for crosshurd,
adapted for me.
--- [[Main/JoachimNilsson]] - 14 Mar 2004
-## Reserving partitions
-You need a swap and root partition, much like any other UNIX system. Two
things to remember:
-1. Root partition still <2.0 GiB
-2. Root partition: mke2fs -o hurd -b 4096 -L Carlsberg
-From a Debian GNU/Linux installation preparing install of GNU/Hurd on
/dev/hdb2 reusing the Linux swap on /dev/hdb4.
- # mke2fs -o hurd -b 4096 -L Carlsberg /dev/hdb2
-


-
"Carlsberg. Probably the best beer in the world."

-

-## Bootstrapping
-After having installed the Debian crosshurd package you need to mount your
newly created Hurd partition.
- mkdir /gnu
- mount /dev/hdb2 /gnu
-Now, simply run the crosshurd program and follow the onscreen directions.
**Do** select the usr symlink.
- crosshurd
-crosshurd burps a lot of unneeded information on screen and probably fails
to install one or two files due to duplicates between GNU and Debian
packages. Lets hope this mess is worked out some day.
-## Rebooting
-Before we reboot you must setup a Hurd entry in the menu.lst file of Grub.
Do it like this and remember, **no trailing spaces**!
-The first two runs (reboots) you must run the Hurd in single-user mode!
- title GNU (kernel GNUmach 1.5)
- root (hd1,1)
- kernel /boot/gnumach-1.5-486.gz root=device:hd1s2 -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-x86-64.so.1 /hurd/exec $(exec-task=task-create)
-Note: use `ld.so.1` instead of `ld-x86-64.so.1` on 32b systems.
-N.B. the '-s' on the kernel line, it is "single user mode", which you need
for the first two reboots.
-OK, reboot now.
-## First steps
-Set TERM variable and run native-install script.
- export TERM=mach
- ./native-install
-You can then remove the '-s' in the kernel line above and boot GNU/Hurd as a
normal user.
-## Logging in
-Finally, a complete bootstrapped GNU system.
- login root
- export TERM=mach
- nano /etc/fstab
- [add swap partition /dev/hd1s4]
- nano /etc/ttys
- [remove all hashes to enable the new Hurd Console]
- settrans -fgap /servers/socket/2 /hurd/pfinet -i /dev/eth0 -a
192.168.1.3 -g 192.168.1.1 -m 255.255.255.0
- dselect
-Now, do the old Debian thing of dancing with dselect for a couple of hours.
-Reboot and start the new [[Console]]
- login root
- console -d vga -d pc_kbd -d generic_speaker /dev/vcs
-Move around just like in Linux console, but with persistent scroll-back
buffers for each console.
-## References
-* [[Network]]
-* [[Console]]
--
2.47.3
--
Samuel
ya(ka|ma|to)* ca existe une fois sur 2 au japon, c'est facile ;-)
-+- #ens-mim au japon -+-
Prev in Thread
Current Thread
[Next in Thread]
[PATCH web] Update crossinstall documentation
João Pedro Malhado
2025/10/04
Re: [PATCH web] Update crossinstall documentation
Amos Jeffries
2025/10/05
Re: [PATCH web] Update crossinstall documentation
Samuel Thibault
<=
Prev by Date:
Re: [PATCH web] Update crossinstall documentation
Next by Date:
Re: IRQ selection during rumpcomp_pci_irq_establish
Previous by thread:
Re: [PATCH web] Update crossinstall documentation
Next by thread:
[RFC] pthread_create generic argument passing
Index(es):
Date
Thread