检测到论坛CSS可能没有正确加载,如出现排版混乱请刷新重试。

We detected that the CSS might not be loaded correctly. If the website displays abnormally, Please refresh and try again.

  • *nixPC
  • Not Unix - 初探 Debian GNU/Hurd

为什么开发和维护的人力如此的紧张呢?

高中时喜欢翻各种 Wikipedia 词条。在阅读 Linux 的词条时发现了 GNU/Hurd。最近就突然心血来潮想要看看这个开发了近 30 年但还是无法达到在生产环境下使用条件的 GNU/Hurd 操作系统。

看了一下 Hurd 网站,就目前来讲能稳定运行的发行版本也只有 Debian GNU/Hurd 了。于是边啃文档边安装,小试了一下。

Debian GNU/Hurd

发行版Debian Ports
家族类 UNIX
POSIX 兼容
开发方GNU
内核GNU/Mach
内核结构微内核 + 服务器-客户端
语言C, 汇编语言
支持的架构i386
开发状态活跃
首次 release1990 年
网站https://www.gnu.org/software/hurd/index.html

注意,该操作系统 / 内核仍处于活跃开发状态。严格来讲,负责开发的人员大多数都是志愿者,并且开发时间仅限于他们的空闲时间。30 年来尽管有了一些 release,但是到目前为止 Hurd 并不完整和成熟,极其不稳定。请尝鲜的同学不要在实机上安装。

什么是 GNU/Hurd ?

GNU Hurd 是一个 GNU 开发的 Unix 内核替代品。它实际上是运行在 GNU Mach 微内核上的一系列服务(Server,而非 Service)的集合。这些 Server 实现了一系列协议(Protocol),这些 Protocols 定义了文件系统、网络协议和身份验证等。

如君所见,Hurd 严格意义上不能说是一个内核。它是一系列服务的集合,这些服务使用 Mach 内核的 Inter-Process-Communication (IPC) 机制来实现不同进程间的信息交换。

起源

1983 年 GNU 项目成立,目标是编写一个完全自由的 Unix 操作系统的替代。在随后的几年里 GNU 发行了一套用于编写操作系统内核所需要的全套工具,包括编辑器、编译器、命令解释器(Shell)和操作系统工具等。1989 年随着 GNU GPL 的问世,这个计划只剩下一部分没有完成,就是操作系统内核。
1990 年,在 3 年前因为内核导致的的弃坑之后 Hurd 的计划重新开始,选用了 Mach 内核。
1991 年随着 Linux 的问世,Hurd 的开发进度开始变得非常缓慢。

关于 Mach

Mach 是由卡内基梅隆大学开发的微内核,作为 BSD 版本的 Unix 内核替代。它在后来被 NeXT 选用,其操作系统 NEXTSTEP 的内核便是基于 Mach 的一个混合内核。随后它成为 Darwin 内核的基础,也就是运行在无数苹果设备上的 iOS, macOS 等的内核。

正在更新,欢迎参观~

Debian GNU/Hurd 具有以下组件 / 功能支持:

  • GNU/Hurd 操作系统
  • 标准 Debian 组件(包管理器 aptdpkg,GNU 核心组件等)
  • 网络(IPv4 / IPv6)支持
  • X11 支持

特点

Hurd 引用了服务器-客户端架构。服务器保证了基本组件(网络、文件系统、驱动程序)。
Hurd 引用了转换器(Translator)来支持各种文件系统操作。这些文件系统不再生存于内核空间,它们通过转换器生存在用户空间里,类似于 Linux 的 fuse
不同于 Unix 进程,Hurd 进程的身份不是固定的,它通过与进程并不挂钩的令牌(token)来标识。它可以被任何一个具有权限的用户添加或者破坏。
Hurd 选用 ext2 作为文件系统,当然 2GB 分区大小限制已被移除,最大大小现在是 2TiB(SATA)或 128GiB(IDE)。

Debian GNU/Hurd 为一般用户提供了两种方式,一种是使用现成的 qcow2 镜像直接启动,一种是使用移植的 Debian 安装镜像从头安装。在这里我们选择使用安装介质从头开始。

0x00000000 准备

准备

为了安装 Debian GNU/Hurd ,你需要一个 QEMU / VirtualBox 虚拟机。这个虚拟机需要满足以下要求:

  • 控制器类型最好是 IDE。 Hurd 支持 SATA 控制器,但是只支持 ACHI 模式,并且不保证 SATA 控制器可用。
  • 磁盘大小不宜过大。
  • 没有 EFI 支持。
  • 如果你使用 VBox,操作系统建议选用 Other - Other (32Bit) 。设置保持默认即可。

1 获取镜像

Debian 提供一个基于 Hurd 的移植版本的 Debian 安装器。安装过程和 Debian GNU/Linux 类似,很适合新手。

安装镜像可以直接点击这里下载(DVD,1.7GB),或者浏览页面选择你需要的镜像。

下载完成之后,准备虚拟机以开始安装。在这里使用 Virtualbox。

2 准备虚拟机

新建一个虚拟机,操作系统选择 Other - Other/Unknown。
由于 Hurd 尚未支持 64 位架构,所以最好使用 32 位虚拟机。

内存大小 1GB。

至于硬盘,反正不要钱随便整,但别忘了分区大小限制。

虚拟机创建完成后,进入设置确保芯片组是 PIIX3,磁盘控制器类型是 IDE,建议显存为 64MB。

接下来就可以连接安装介质启动虚拟机安装了~

0x0000001 安装

用你下载到的镜像启动虚拟机,你将看到一个启动选单。

选择第 2/3 项以启用 Hurd Console。Hurd Console 有着 Linux Console 无法比拟的功能,比如 UTF-8 和宽字符支持。

接下来就会进入熟悉的安装界面,选择语言,探测硬件,探测网络,用户,分区,安装基本系统,安装软件包,etc。

这里的 CJK 字符支持不是传统的基于 Framebuffer 的 bterm所提供的,而是近似于 Native 的 Hurd Console。当然它也不是很稳定,有些情况下字符无法完整显示。

此时将询问你 root 密码。在这里以 hurd 为例。

之后是创建用户。在这里取名为 hurd ,密码与用户名(root 密码)相同。(

接下来是分区时间~

选择我们的虚拟硬盘。
此时需要注意一点,在 Hurd 里,/usr 是一个到 / (或者 .) 的符号链接,所以千万不要单独创建 /usr 分区!

和其他 Debian 安装程序一样,它也会在 tty4 运行日志输出。

你会发现在这里也可以输出宽字符!虽然说它确实有些残废...

咱们回到 tty1
之后安装程序会询问是否扫描其他介质。
因为我们这里只有一个介质,所以 DVD 里的软件包几乎就是全部的了,选择否。

之后会询问是否使用网络镜像,选择是(如果你网络好的话)。
注意,Debian Ports 一般不会在国内被镜像。所以如果要使用网络镜像,你可能需要一些特殊操作来给 apt 挂上 HTTP 代理。

在你兴致勃勃准备选择镜像的时候,却发现没有镜像可用!怎么办呢?选择手动输入信息,你会发现其实默认地址就在里面。直接回车即可。

如果你选择了网络镜像,那么你需要等待软件包更新完毕才能进行下一步。
等这个过程完毕,会询问你是否加入软件包流行度调查。
之后便是 tasksel 环节,在这里选择你需要安装的软件。目前 X11 已经被移植到了 Hurd 上,并且可以稳定运行。

为了节省时间,我选择 Xfce。因为最近网络异常爆炸...(

接下来就是漫长的等待。
下面是 Host 机器的配置。
终端字体是 Inconsolata ,为 Android 所使用。
然后因为 5.4 以上的内核中 iwlwifi 一直爆炸,所以我只能使用 Debian 分发的最高版本能用的内核(懒.jpg)

经过半小时的漫长等待,我终于能到下一步了(
接下来会询问你是否安装引导器。
最初 GUN 这一套软件确实是为他们未来的操作系统准备的。(雾,为什么还是有这么多不可思议的 bug?)

大功告成!现在我们应该可以重启来使用新系统了。移除安装介质,体验一下 Debian GNU/Hurd 吧~

0x00000003 体验

理论上所有支持 Multiboot 的引导器都可以引导 Hurd。

由于是类 Unix 操作系统,并且有这一套 GNU 核心组件,在这里的体验和其他 Unix 操作系统差不多。
但除了一些操作——比如网络设置、分区挂载等。
但是...它... hang 了(
没关系,重启应该可以正常运行。

终于我们来到了登录界面。

输入用户名和密码即可登录。

你会发现,这里的 Console 和我们启动时内核输出日志时的 Console 还不一样。
你现在知道,Hurd 基于 Mach 内核。我们启动时看到的 Console 是 Mach Console,之后屏幕会闪一下进入 Hurd Console。Hurd Console 就是传说中可以输出宽字符的东西喔,但是我们现在还没有字体来供它显示。
先不着急,我们来看看它的内核:

$ uname -a
GNU hurd 0.9 GNU-Mach 1.8+git20191117-486/Hurd-0.9 i686-AT386 CPU

如果你在安装时选择了 SSH 服务器,你就可以 SSH 进你的虚拟机:
(如果你的网络是 NAT,先去网络设置里进行端口转发)

ssh -p <forward_port> hurd@localhost

当你执行 startx 准备启动 GUI 的时候,却发现...

怎么办呢?按照官方 FAQ 的说法,重新配置 xerver

# dpkg-reconfigure xserver-xorg-legacy

并在接下来的界面中选择 Anybody
具体原因是,目前还没有方法检测运行的用户是否为控制台用户。

emmm... 那看来我们先去整一个字体吧。

安装字体

Hurd Console 支持 BDF 格式的点阵字体。目前 GNU Unifont 有提供该格式的字体。自家的字体怎能不分发自家的格式
首先我们从 Unifont 获取字体文件:

$ wget http://unifoundry.com/pub/unifont/unifont-12.1.04/font-builds/unifont-12.1.04.bdf.gz
$ gzip -d unifont-12.1.04.bdf.gz 
$ ls
unifont-12.1.04.bdf

然后将该字体放在某个地方:

# mv /home/hurd/unifont-12.1.04.bdf /lib/unifont/bdf

之后编辑 /etc/default/hurd-console

# vim /etc/default/hurd-console

在光标处插入 -f /lib/unifont.bdf

保存退出,重启。

重启后我们发现字体变了!

这说明我们已经成功使用了 Unifont。接下来整几个中文字符看看效果:

嚯嚯嚯,是不是很炫酷

配置 Xorg

如上所说,执行这条命令:

# dpkg-reconfigure xserver-xorg-legacy

选择 任何用户,大功告成。你现在可以用普通用户启动桌面环境了。

现在是下午饭时间。我会慢慢更新帖子的,谢谢大家支持~

所以Hurd是为了取代Linux成为100%开源(甚至没有Blob)的内核而生的吗🤔

    JC_ProPlus 不。它的目标是开发一个 Unix 内核替代,而不是 Linux。
    但是因为 Linux 的诞生,GNU 于是有了一个现成的开源自由的操作系统内核,所以叫 GNU/Linux。
    然而 Hurd 的开发并未停止。

    Edit: 那不是 Hurd 的目标,是 GNU 的目标)

      21 天 后

      第一批精品我安排上了,记得继续更哦qwq

      1 个月 后

      咕了 ,等有时间更新吧(

      1 个月 后

      难得看到有关注GNU hurd,楼主写的非常好,继续关注。

      © 2024 wvbCommunity 管理团队

      删封申诉 | 知乎专栏 | 状态监控 | 用户协议(EULA) | 隐私政策

      本站文章除其作者特殊声明外,一律采用CC BY-NC-SA 4.0许可协议进行授权,进行转载或二次创作时务必以相同协议进行共享,严禁用于商业用途。