1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
|
[[!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 distrib
* port gdb
* Fix bugs :)
* Notably it seems to be requiring at least 2G memory to boot.
**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
mke2fs 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
|