summaryrefslogtreecommitdiff
path: root/hurd/running/flash_qemu_img.mdwn
blob: 38d3fd7dd03312c153493c143fea43e0ea6184e6 (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
[[!meta copyright="Copyright © 2026 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]]."]]"""]]

[[!meta title="Installing the Hurd from a Qemu Image"]]

# Installing the Hurd from a Qemu Image

Perhaps the easiest method of installing the Hurd on [[real
hardware|faq/drivers]] is to use a GNU/Linux machine to download a [[qemu
image|https://cdimage.debian.org/cdimage/ports/latest/hurd-i386/]] (or [[64 bit
image|https://cdimage.debian.org/cdimage/ports/latest/hurd-amd64/]]), run it via
[[hurd/running/qemu]], update the distribution, install the packages you want,
and [[configure your hurd to your
liking|https://www.debian.org/ports/hurd/hurd-install]], and finally flash the
image directly to your SSD.

Please note that as of Feb 2026, the 64 bit image uses [[hurd/rump/rumpdisk]] by
default, while the 32 bit image does not use rumpdisk, because rumpdisk is a
little memory hungry at the moment.  If you wish, you can switch to [[hurd/rump/rumpdisk]]. Please read this [[faq entry|faq/2_gib_partition_limit]] to learn more about maximum partition sizes.

#### Getting a qemu image

[[!inline pages=hurd/running/debian/qemu_image raw=yes feeds=no]]

#### Flashing a qemu hurd image to an SSD or HDD

Next attach your spare SSD to your GNU/Linux machine via USB to SATA dongle. StarTech dongles are a good choice.  Once you are plugged in run this command to determine your spare SSD's device name.

    $ lsblk
    NAME          MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINTS
    sda             8:0    0  74.5G  0 disk
    ├─sda1          8:1    0     2M  0 part
    └─sda2          8:2    0  74.5G  0 part
      └─cryptroot 253:0    0  74.5G  0 crypt /gnu/store
                                             /
    sdb             8:16   0 953.9G  0 disk
    └─sdb4          8:20   0 953.9G  0 part

Normally `/dev/sda` and `/dev/sdaN` is GNU/Linux's SSD and `/dev/sdb` is your blank SSD.  In the above example, Guix System is my `sda` and `sdb` is my spare SSD. To double check your spare SSD's device name, run the above command with your SATA dongle connected and disconnected.  Once you have your spare SSD's device name, flash your hurd image to it. Here's the command that worked for me:

    # dd if=debian-hurd*.img of=/dev/sdb bs=1m status=progress

Note do not write `/dev/sdb1`.  Write it as `/dev/sdb`.  The vm image already contains the partitions.

#### Expand your hurd filesystem partitions.

    $ lsblk | grep sdb
    NAME          MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINTS
    sdb             8:16   0 238.5G  0 disk
    ├─sdb1          8:17   0   953M  0 part
    ├─sdb2          8:18   0     1K  0 part
    └─sdb5          8:21   0     4G  0 part

Sweet!  Flashing was successful! You cannot really tell here, but my Hurd partitions are `sdb1` swap, `sdb2` extended, `sdb5` ext2.  We need to expand the `sdb2` and `sdb5` and resize the filesystem to take up all available space (please be aware of the [[partition size limits|faq/2_gib_partition_limit]]). That's easily achieved via:

    # parted /dev/sdb
    (parted) resizepart 2 100%
    (parted) resizepart 5 100%
    (parted) quit
    # resize2fs /dev/sdb5
    $ echo new let's check out work!
    $ lsblk | grep sdb
    NAME          MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINTS
    sdb             8:16   0 238.5G  0 disk
    ├─sdb1          8:17   0   953M  0 part
    ├─sdb2          8:18   0     1K  0 part
    └─sdb5          8:21   0 237.5G  0 part

It looks like our ext2 filesystem has expanded to about 240G.  Now we can unplug our SATA dongle, install the SSD to a [[supported Hurd machine|faq/drivers]] and boot!  Our [[hurd/running/x]] page gives some good window manager recommendations!