---
title: "Hurd"
date: 2025-03-03T15:34:41+08:00
lastmod: 2025-03-03T23:28:46+08:00
layout: single
---
{{< mono >}}
[TODOS](/hurd/todos)
{{< /mono >}}
## links
{{< mono >}}
| name | link |
| --- | --- |
| kernel-list-archive | |
| debian-list-archive | |
| irc-archive | |
| kernel-home | |
| debian-home | |
{{< /mono >}}
refs:
{{< mono >}}
| name | link |
| --- | --- |
| c | |
| posix latest | |
| posix 2013 | |
| posix 2008 | |
| glibc | |
{{< /mono >}}
## *_MAX patch
TODO: Move to separate page.
```c
#include
#include
#include
static inline char *xreadlink(const char *restrict path) {
char *buffer;
size_t allocated = 128;
ssize_t len;
while (1) {
buffer = (char *)malloc(allocated);
if (!buffer) {
return NULL;
}
len = readlink(path, buffer, allocated);
if (len < (ssize_t)allocated) {
return buffer;
}
free(buffer);
if (len >= (ssize_t)allocated) {
allocated *= 2;
continue;
}
return NULL;
}
}
static inline char *xgethostname() {
long max_host_name;
char *buffer;
max_host_name = sysconf(_SC_HOST_NAME_MAX);
buffer = malloc(max_host_name + 1);
if (gethostname(buffer, max_host_name + 1)) {
free(buffer);
return NULL;
}
buffer[max_host_name] = '\0';
return buffer;
}
static inline char *xgetcwd() {
char *buffer;
size_t allocated = 128;
while (1) {
buffer = (char *)malloc(allocated);
if (!buffer) {
return NULL;
}
getcwd(buffer, allocated);
if (buffer)
return buffer;
free(buffer);
if (errno == ERANGE) {
allocated *= 2;
continue;
}
return NULL;
}
}
```
## git repos
{{< link-group >}}
hurd
cru:
upstream:
debian:
{{< /link-group >}}
{{< link-group >}}
gnumach
cru:
upstream:
debian:
{{< /link-group >}}
{{< link-group >}}
mig
cru:
upstream:
debian:
{{< /link-group >}}
{{< link-group >}}
glibc
cru:
upstream:
debian:
mirror:
{{< /link-group >}}
{{< link-group >}}
web
cru:
upstream:
{{< /link-group >}}
## cheatsheet
Start qemu
```sh
qemu-system-x86_64 -enable-kvm -m 4G -net nic -net user,hostfwd=tcp::3222-:22 -vga vmware -drive cache=writeback,file=[...]
```
Configure/Setup network
```sh
settrans -fgap /servers/socket/2 /hurd/pfinet -i /dev/eth0 -a 10.0.2.15 -g 10.0.2.2 -m 255.255.255.0
fsysopts /servers/socket/2 /hurd/pfinet -i /dev/eth0 -a 10.0.2.15 -g 10.0.2.2 -m 255.255.255.0
fsysopts /server/socket/2 -a 10.0.2.15 -g 10.0.2.2 -m 255.255.255.0
```
Setup apt
```sh
apt-get --allow-unauthenticated --allow-insecure-repositories update
apt-get --allow-unauthenticated upgrade
```
## mailing lists / irc
{{< mono >}}
| name | address |
| --- | --- |
| hurd | |
| debian | |
| irc | librechat #hurd |
{{< /mono >}}