summaryrefslogtreecommitdiff
path: root/open_issues/64-bit_port.mdwn
blob: 9693ee15ae5cb72b0c23628034fc37d805db0fe2 (plain)
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
[[!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 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'
    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

Note: you need to set the uuid in the grub config according to the uuid produced by the `mke2fs` command.

Then boot it, and proceed like for the chroot case.

**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 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