[[!meta copyright="Copyright © 2011, 2012, 2013, 2014, 2016, 2017 Free Software Foundation, Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable id="license" text="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|/fdl]]."]]"""]] [[!tag open_issue_gnumach open_issue_mig]] [[!inline pages="title(Is there a 64-bit version?)" feeds="no" raw="yes"]] **What is left for initial support (32-on-64) is** * Fixing bugs :) **For pure 64bit support, we need to** * bootstrap a distribution. Debian is done. Alpine-Hurd is mostly bootstrapped. Reach out to Sergey if you are interested in an Alpine-Hurd distribution with bleeding-edge software. Reach out to Guix, if you want to help them bootstrap a 64bit Hurd. * port gdb * Fix bugs :) * Notably it seems to be requiring at least 2G memory to boot. **Installing via the installer image** The installer appears to work in qemu. Give it a shot! Let us know how it works in real hardware! [[http://cdimage.debian.org/cdimage/ports/latest/hurd-amd64/current/]] **Installing a 64bit chroot** You can use the pre-built image from https://people.debian.org/~sthibault/hurd-i386/initrd-amd64.img.gz and boot that. Make sure to have `debootstrap >= 1.0.128+nmu2+hurd.1` debootstrap --foreign --verbose --arch hurd-amd64 --include=debian-keyring,wget,curl,inetutils-ping,openssh-server,openssh-client,nano,less --keyring=/usr/share/keyrings/debian-keyring.gpg sid chroot-hurd-amd64 https://people.debian.org/~sthibault/tmp/hurd-amd64 mkdir chroot-hurd-amd64/etc/apt/trusted.gpg.d ln -s /usr/share/keyrings/debian-keyring.gpg chroot-hurd-amd64/etc/apt/trusted.gpg.d/ Then boot it, it will drop you into a shell. You'll probably want to use a nicer shell: bash You need to make / writable: fsysopts / --writable and then run the second stage of the deboostrap (and clear debs): /debootstrap/debootstrap --second-stage apt clean set a root password: passwd Avoid core dumpings for now (not supported and hangs): rm -f /servers/crash ln -s crash-kill /servers/crash Disable the Hurd console, buggy for now: export TERM=mach nano /etc/default/hurd # set ENABLE to 'false' And reboot: reboot-hurd After reboot, you'll probably want to setup network: vi /etc/network/interfaces # put there this: auto /dev/eth0 iface /dev/eth0 inet static address 10.0.2.15/16 gateway 10.0.2.2 **Creating a 64bit disk image** You can use the pre-built image from https://people.debian.org/~sthibault/hurd-i386/disk-amd64.img.gz and boot that. To make a bootable system we really better make the disk image partitioned, and mount the partition: dd < /dev/zero > disk.img bs=1M count=1 seek=1000 fdisk disk.img # create a new primary partition spanning the whole disk: n p and just accept the defaults, and finish with w settrans -ca disk /hurd/storeio -T typed file:disk.img settrans -ca disk1 /hurd/storeio -T typed part:1:file:disk.img /sbin/mke2fs -E root_owner=$UID:0 disk1 settrans -ca chroot-hurd-amd64 /hurd/ext2fs disk1 (here we assume that fdisk puts the partition at sector 2048, that's indeed the current default behavior) Then run the same debootstrap command as above. You can then make the disk bootable: mkdir chroot-hurd-amd64/boot/grub tee chroot-hurd-amd64/boot/grub/grub.cfg << 'EOF' set default="0" set timeout=5 menuentry "Debian GNU/Hurd amd64" { insmod ext2 set root=(hd0,1) multiboot /boot/gnumach-1.8-486.gz root=part:1:device:wd0 module /hurd/pci-arbiter.static pci-arbiter \ --host-priv-port='${host-port}' --device-master-port='${device-port}' \ --next-task='${disk-task}' \ '$(pci-task=task-create)' '$(task-resume)' module /hurd/rumpdisk.static rumpdisk \ --next-task='${fs-task}' \ '$(disk-task=task-create)' module /hurd/ext2fs.static ext2fs --readonly \ --multiboot-command-line='${kernel-command-line}' \ --exec-server-task='${exec-task}' -T typed '${root}' \ '$(fs-task=task-create)' module /lib/ld-x86-64.so.1 exec /hurd/exec '$(exec-task=task-create)' } EOF grub-install --modules="part_msdos ext2" --boot-directory chroot-hurd-amd64/boot disk settrans -ga chroot-hurd-amd64 settrans -ga disk settrans -ga disk1 Then boot it, and proceed like for the chroot case. **Creating a pbuilder chroot** Here is a sample `/etc/pbuilderrc`: MIRRORSITE=https://people.debian.org/~sthibault/tmp/hurd-amd64 AUTOCLEANAPTCACHE=yes EXTRAPACKAGES="eatmydata" if [ -z "$LD_PRELOAD" ]; then LD_PRELOAD=libeatmydata.so else LD_PRELOAD="$LD_PRELOAD":libeatmydata.so fi export LD_PRELOAD DEBOOTSTRAPOPTS=( '--variant=buildd' '--force-check-gpg' '--keyring=/usr/share/keyrings/debian-keyring.gpg' ) APTKEYRINGS=(/usr/share/keyrings/debian-keyring.gpg) And this is needed until we get the `aptitude` package built: sudo ln -sf pbuilder-satisfydepends-apt /usr/lib/pbuilder/pbuilder-satisfydepends And then you can run `sudo pbuilder create` , `sudo pbuilder login` , `pdebuild` **Installing from the debian-ports archive** For now it's quite empty (not even gcc), but it can be debootstrapped. That will be used to build packages on the buildds. debootstrap --foreign --verbose --arch hurd-amd64 --extra-suites=unreleased --include=debian-ports-archive-keyring --keyring=/usr/share/keyrings/debian-ports-archive-keyring.gpg sid chroot-hurd-amd64 https://deb.debian.org/debian-ports/ **Installing proper & more packages** The `people.debian.org` repository is only for bootstraping the distribution. Proper packages are getting uploaded on the usual mirror: ``` deb http://deb.debian.org/debian-ports sid main deb http://deb.debian.org/debian-ports unreleased main ``` **Installing a 64bit system** In principle crosshurd should be working, one however should add this source to get more packages for now: deb http://people.debian.org/~sthibault/tmp/hurd-amd64 unstable into /etc/crosshurd/sources.list/gnu