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
|
[[!meta copyright="Copyright © 2013 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 date="2024-01-05 22:22 UTC"]]
Hello! Welcome to a new qoth. This qoth covers new and interesting GNU/Hurd
developments in Q4 of 2023!
[[!if test="included()" then="""[[!toggle id=full_news
text="Details."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]"""
else="
[[!paste id=full_news]]"]]
[[!cut id="full_news" text="""
Samuel Thibault fixed gcc's Hurd's default pie and [[added static pie
support|https://lists.gnu.org/archive/html/bug-hurd/2023-10/msg00061.html]].
He also added a [[whatis
command|https://lists.gnu.org/archive/html/bug-hurd/2023-10/msg00007.html]]
to GNU Mach's kernel debugger, which can determine what an
address points to (a stack? a port? some kalloc? ...). He also added
[[hurd-amd64 support to
GCC|https://lists.debian.org/debian-hurd/2023/11/msg00039.html]].
Samuel requested that the Hurd team set up a [[continuous
integration,|https://lists.gnu.org/archive/html/bug-hurd/2023-12/msg00007.html]]
so that when developers make code changes, they can be certain that
they did not break anything. It turns out that the Hurd supports
several different environments: 32 bit, 64 bit, 32-on-64 bit, ACPI,
non-ACPI, SMP, non-SMP, Xen, etc. Apparently Flavio has a [[personal
CI|https://github.com/flavioc/cross-hurd/actions/runs/7080757561]],
but it is set up in a Debian independent way. If you are interested in
helping the Hurd project set up a CI, then please get in touch!
Luca Dariz worked on adding [[some simple GNU Mach user-space tests
|https://lists.gnu.org/archive/html/bug-hurd/2023-10/msg00031.html]].
With a working MiG, a GNU/Linux machine can run make check in the GNU
Mach source code, which will launch qemu to ensure that 32 bit (PAE
and non PAE), 32 on 64 bit, and full 64 bit GNU Mach works. We
currently do this testing on GNU/Linux, because qemu does not run on
the Hurd.
Many people worked on the Hurd's new [[x86_64 bit
support|https://lists.gnu.org/archive/html/bug-hurd/2023-10/msg00036.html]].
A 64-bit debian bbuild is set up, and we can bootstrap a chroot! The
hurd-amd64 wanna-build infrastructure is also set up. We are having
issues reliably building packages on a 64-bit Hurd, which lead Samuel
to uncover and fix [[a proc
leak|https://lists.gnu.org/archive/html/bug-hurd/2023-11/msg00035.html]].
Flavio Cruz [[improved GNU Mach's
IPC|https://lists.gnu.org/archive/html/bug-hurd/2023-11/msg00033.html]]
by reordering `mach_msg_type_t` fields to byte align `msgt_name` and
`msgt_size`. He also created a patch series to [[avoid message
resizing for
x86_64|https://lists.gnu.org/archive/html/bug-hurd/2023-11/msg00028.html]].
He also [[removed untyped mach RPC
code|https://lists.gnu.org/archive/html/bug-hurd/2023-11/msg00026.html]].
GNU Mach uses typed IPC. The Hurd could support both typed and
untyped, but it appears that the Hurd only uses typed RPC. So it
seems best to remove any untyped RPC code.
Sergey Bugaev added [[GNU Mach entry re-coalescing
support|https://darnassus.sceen.net/~hurd-web/open_issues/gnumach_vm_map_entry_forward_merging/]].
Essentially, Mach is not always able to merge two vm entries that are
made next to each other, which slows down ext2 and bash. Sergey
allowed GNU Mach to merge entries in the common cases, which greatly
helps ext2fs.
Sergey is also working on [[porting the Ladybird web
browser|https://lists.gnu.org/archive/html/bug-hurd/2023-11/msg00013.html]]
to the Hurd. The author of this post uses the [[netsurf web
browser|https://www.netsurf-browser.org/]] on the Hurd, which works on
simple websites like wikipedia, but it badly renders javascript heavy
websites, which makes many websites un-useable. If Sergey is
successful in porting [[Ladybird|https://ladybird.dev/]], then Hurd
users could start using sites like Github! It is worth noting that
someone should update the [[Firefox
port|https://lists.debian.org/debian-hurd/2014/09/msg00070.html]] as
well.
Sergey also started [[porting the Hurd to
AArch64!|https://lists.gnu.org/archive/html/bug-hurd/2023-12/msg00110.html]]
While a port to RISC-V might be more exciting, it is worth mentioning
that AArch64 is more established. What is interesting is that Sergey
is already able to build Hurd servers for AArch64! Normally, in order
to run the binaries, one would port GNU Mach to AArch64. Luckily for
us, he turned to GDB and directly ran a 'Hello World' Hurd AArch64
binary on Linux! This helped him fix some bugs along the way. We
still need to define the ABI and complete the GNU Mach port, but this
is exciting news!
Tobias Platen started [[porting GNU Mach to
Power9|https://lists.gnu.org/archive/html/bug-hurd/2023-10/msg00021.html]].
So if you want to test if your favorite packages work on the Hurd and
contribute towards making the full GNU system usable for a wider range
of people, please [[get in contact|contact_us]] -- and maybe already
grab the [[source code|source_repositories]].
---
The **GNU Hurd** is the GNU project's replacement for the Unix kernel. It is a
collection of servers that run on the Mach microkernel to implement file
systems, network protocols, file access control, and other features that are
implemented by the Unix kernel or similar kernels (such as Linux). [[More
detailed|hurd/documentation]].
**GNU Mach** is the microkernel upon which a GNU Hurd system is based. It
provides an Inter Process Communication (IPC) mechanism that the Hurd uses to
define interfaces for implementing in a distributed multi-server fashion the
services a traditional operating system kernel provides. [[More
detailed|microkernel/mach/gnumach]].
"""]]
|