如何在 Raspberry Pi 上使用 NetBSD

在你的 Raspberry Pi 上体验 NetBSD,这是一个开源操作系统,其血统可以直接追溯到原始的 UNIX 源代码。
228 位读者喜欢这篇文章。
An introduction to GNU Screen

Opensource.com

你是否有一台旧的 Raspberry Pi 闲置积灰,可能是最近升级 Pi 后留下的?你是否对 BSD Unix 好奇?如果你对这两个问题的答案都是“是”,你会很高兴知道第一个问题是第二个问题的解决方案,因为你可以在 Raspberry Pi 上运行 NetBSD,甚至可以追溯到最早的版本。

BSD 是 Unix 的伯克利软件发行版。事实上,它是唯一一个开源 Unix,其血统可以直接追溯到 Dennis Ritchie 和 Ken Thompson 在贝尔实验室编写的原始源代码。其他现代版本要么是专有的(例如 AIX 和 Solaris),要么是巧妙的重新实现(例如 Minix 和 GNU/Linux)。如果你习惯了 Linux,你会觉得 BSD 大部分都很熟悉,但是也有很多新的命令和约定需要探索。如果你还是开源新手,尝试 BSD 是体验传统 Unix 的一个好方法。

诚然,NetBSD 并不是一个完美适配 Pi 的操作系统。与许多专门为 Pi 设计的 Linux 发行版相比,它的安装非常精简,而且并非所有最新 Pi 型号的组件都能在 NetBSD 下正常工作。然而,对于较旧的 Pi 型号来说,它可以说是理想的操作系统,因为它轻巧且维护良好。退一步说,对于任何铁杆 Unix 极客来说,体验 POSIX 世界的另一面也很有趣。

下载 NetBSD

BSD 有不同的版本。NetBSD 因其轻巧和通用性而享有盛誉(其网站的标语是“当然,它可以运行 NetBSD”)。它为自初代以来的每个版本的 Raspberry Pi 都提供了最新版本操作系统的镜像。要为你的 Pi 下载版本,你必须首先 确定你的 Pi 使用的 ARM 架构的变体。NetBSD 网站上提供了一些关于这方面的信息,但要获得全面的概述,你也可以参考 RPi 硬件历史

我在这篇文章中使用的 Pi,据我所知,是 Raspberry Pi Model B Rev 2.0(带有两个 USB 端口,没有安装孔)。根据 Raspberry Pi 常见问题解答,这意味着架构是 ARMv6,这在 NetBSD 的架构表示法中转换为 earmv6hf

NetBSD on Raspberry Pi

如果你不确定你拥有哪种 Pi,好消息是只有两个 Pi 镜像,所以先尝试 earmv7hf;如果它不起作用,则退回到 earmv6hf

为了最简单和最快速的安装,请使用二进制镜像而不是安装程序。使用镜像是将操作系统安装到 Pi 上的最常见方法:你将镜像复制到你的 SD 卡并启动它。没有安装是必要的,因为镜像是操作系统的通用安装,你只是将其逐位复制到 Pi 用作启动驱动器的介质上。

镜像文件位于 NetBSD 安装媒体服务器的 binary > gzimg 目录中,你可以从 NetBSD.org 的 首页 访问该服务器。镜像文件是 rpi.img.gz,一个压缩的 .img 文件。将其下载到你的硬盘驱动器。

一旦你下载了整个镜像,解压缩它。如果你运行的是 Linux、BSD 或 MacOS,你可以使用 gunzip 命令

$ gunzip ~/Downloads/rpi.img.gz

如果你在 Windows 上工作,你可以安装开源的 7-Zip 压缩实用程序。

将镜像复制到你的 SD 卡

一旦镜像文件被解压缩,你必须将其复制到你的 Pi 的 SD 卡。有两种方法可以做到这一点,所以使用最适合你的方法。

选项 1:使用 Etcher

Etcher 是一个跨平台应用程序,专门用于将操作系统镜像复制到 USB 驱动器和 SD 卡。从 Etcher.io 下载并启动它。

在 Etcher 界面中,选择你硬盘驱动器上的镜像文件和你想要刷写的 SD 卡,然后单击 Flash 按钮。

Etcher

就是这样。

选项 2:使用 dd 命令

在 Linux、BSD 或 MacOS 上,你可以使用 dd 命令将镜像复制到你的 SD 卡。

  1. 首先,将你的 SD 卡插入读卡器。不要将卡挂载到你的系统,因为 dd 需要设备处于分离状态才能将数据复制到其上。
  2. 运行 dmesg | tail 以找出卡的位置,而无需挂载它。在 MacOS 上,使用 diskutil list
  3. 将镜像文件复制到 SD 卡
    $ sudo dd if=~/Downloads/rpi.img of=/dev/mmcblk0 bs=2M status=progress

    在执行此操作之前,你必须确保你拥有 SD 卡的正确位置。如果你将镜像文件复制到错误的设备,你可能会丢失数据。如果你对此有任何不确定,请改用 Etcher!

dd 或 Etcher 将镜像写入 SD 卡后,将卡插入你的 Pi 并接通电源。

首次启动

首次启动时,NetBSD 检测到 SD 卡的文件系统没有占用所有可用的可用空间,并相应地调整文件系统的大小。

Booting NetBSD on Raspberry Pi

完成后,Pi 重新启动并显示登录提示。使用 root 作为用户名登录你的 NetBSD 系统。不需要密码。

设置用户帐户

首先,为 root 用户设置密码

# passwd

然后为自己创建一个用户帐户,使用 -m 选项提示 NetBSD 创建一个主目录,使用 -G users 选项将你自己添加到 users 组并使其成为你的主组,以及 -g wheel 选项将你的帐户添加到 wheel 组,以便你可以在需要时成为管理用户 (root)

# useradd -m -G users -g wheel seth

再次使用 passwd 命令为你的用户帐户设置密码

# passwd seth

注销,然后使用你的新凭据重新登录。

向 NetBSD 添加软件

如果你曾经使用过 Pi,你可能知道向你的系统添加更多软件的方法是使用像 aptdnf 这样的特殊命令(取决于你是否喜欢在你的 Pi 上运行 RaspbianFedBerry)。在 NetBSD 上,使用 pkg_add 命令。但是在命令知道去哪里获取你想要安装的软件包之前,需要进行一些设置。

在 NetBSD 的服务器上,有现成的(预编译的)NetBSD 软件包,使用方案 <ftp://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/[PORT]/[VERSION]/All&gt;。将 PORT 替换为你正在使用的架构,earmv6hfearmv7hf。将 VERSION 替换为你正在使用的 NetBSD 版本;在撰写本文时,它是 8.0

将此值放在名为 /etc/pkg_install.conf 的文件中。由于这是一个系统文件,位于你的用户文件夹之外,你必须调用 root 权限才能创建它

$ su -
<password>
# echo \
"PKG_PATH=ftp://ftp.NetBSD.org/pub/pkgsrc/packages/NetBSD/earmv6hf/8.0/All/" \
>> /etc/pkg_install.conf

现在你可以从 NetBSD 软件发行版安装软件包了。一个好的首选是 Bash,通常是 Linux(和 Mac)系统上的默认 shell。此外,如果你还不是 Vi 文本编辑器的用户,你可能想尝试一些更直观的编辑器,例如 JoveNano

# pkg_add -v bash jove nano
# exit
$

与许多 Linux 发行版(Slackware 是一个值得注意的例外)不同,NetBSD 代表你做的配置非常少,这被认为是一个特性。因此,要使用 Bash、Jove 或 Nano 作为你的默认工具集,你必须自己设置配置。

你可以使用环境变量动态设置你的许多首选项,环境变量是你的整个系统都可以访问的特殊变量。例如,Unix 中的大多数应用程序都知道,如果设置了 VISUALEDITOR 变量,则应将这些变量的值用作默认文本编辑器。你可以临时设置这两个变量,仅用于你当前的登录会话

$ export EDITOR=nano
# export VISUAL=nano

或者你可以通过将它们添加到默认的 NetBSD .profile 文件中使它们永久生效

$ sed -i 's/EDITOR=vi/EDITOR=nano/' ~/.profile

加载你的新设置

$ . ~/.profile

要将 Bash 设置为你的默认 shell,请使用 chsh(更改 shell)命令,该命令现在加载到你首选的编辑器中。但是在运行 chsh 之前,请确保你知道 Bash 的位置

$ which bash
/usr/pkg/bin/bash

chsh 条目中 shell 的值设置为 /usr/pkg/bin/bash,然后保存文档。

添加 sudo

pkg_add 命令是一个特权命令,这意味着要使用它,你必须使用 su 命令成为 root 用户。如果你愿意,你也可以设置 sudo 命令,该命令允许某些用户使用自己的密码来执行管理任务。

首先,安装它

# pkg_add -v sudo

然后使用 visudo 命令编辑其配置文件。你必须使用 visudo 命令来编辑 sudo 配置,并且它必须以 root 身份运行

$ su
# SUDO_EDITOR=nano visudo

进入编辑器后,找到允许 wheel 组成员执行任何命令的行,并取消注释它(通过删除行首的 #

## Uncomment to allow members of group wheel to execute any command
%wheel ALL=(ALL) ALL

按照 Nano 底部菜单面板中的说明保存文档并退出 root shell。

现在你可以将 pkg_addsudo 一起使用,而不是成为 root 用户

$ sudo pkg_add -v fluxbox

净收益

NetBSD 是一个功能齐全的 Unix 操作系统,现在你已经在你的 Pi 上设置好了它,你可以探索它的每一个角落。它碰巧是一个非常轻量级的操作系统,所以即使是具有 700mHz 处理器和 256MB RAM 的旧 Pi 也可以轻松运行它。如果这篇文章激发了你的兴趣,并且你有一台旧 Pi 放在某个抽屉里,那就试试看吧!

标签
Seth Kenlon
Seth Kenlon 是一位 UNIX 极客、自由文化倡导者、独立多媒体艺术家和 D&D 爱好者。他曾在电影和计算行业工作,经常同时进行。

8 条评论

我在哪里可以找到具有 256GB 内存的旧 rpi?嘿嘿

只是少了几位数而已,而且零是空值,所以没什么大不了的,对吧?:^)

已在文章中修复,供未来读者参考。感谢你指出这一点!

回复 ,作者:BobS (未验证)

只是一个更正 - NetBSD 是一个开源的“类 Unix”操作系统。它不是一个开源的 UNIX 操作系统。

它没有追溯到原始 AT&T UNIX 源代码的血统。它是 386BSD 的一个分支,386BSD 基于 NET/2 代码,其中删除的 AT&T 代码是从头开始重写的。

谢谢,我已经更改了一些措辞,以便在被指控误导读者时能够合理地否认。这篇文章的目的不是历史课,所以我不想让它陷入细节,但我确实想在不传达明显不正确的数据的情况下介绍 BSD。

致未来的读者:本文早期的副标题严重混淆了 NetBSD 的血统,称其为“唯一具有原始直接血统的 Unix”(然而,文章本身也引用了 BSD 的这一荣誉,并解释说 NetBSD 本身与通用 BSD 不同)。

回复 ,作者:OldSchoolSean (未验证)

NetBSD 不是 BSD 的“发行版”。FreeBSD、NetBSD、OpenBSD 和其他都是*不同的*操作系统,具有不同的内核。与 Linux 不同,Linux 在发行版之间共享相同的内核。

感谢你的澄清,Mark___。

我听说过对 BSD 的这种区分,但我不理解其语义。我想这与用内核的名称来称呼整个操作系统(例如“Linux”)类似。我不知道我是否同意这种说法,但如果普遍理解在操作系统*发行版*的上下文中,“发行版”一词意味着“相同的内核”,那么我以不同的方式使用这个词会让我感到困惑。

我已在介绍段落中将术语“发行版”更改为“版本”。我猜也会有人对这个术语提出异议。我真正想表达的是,有许多操作系统的名称中包含连续的字母“BSD”。它们中的大多数都具有包含此字母序列的原因,最终它围绕伯克利展开,伯克利在某个时候从 AT&T 获得了软件,这成为了进一步开发的基础。我可能应该直接将这些写入文章中,但这听起来有点厚颜无耻,我想给 BSD 们应有的尊重。我当然不打算让这篇文章成为对 BSD 历史或发展的探索,而是对安装和使用它的探索。

回复 ,作者:Mark____ (未验证)

我想尝试向 Pi 添加第二个(甚至第三个)网络接口。实际上,我希望它是内置的!:) 我认为这将是一个很棒的 SOHO 防火墙/路由器。

NetBSD 不是 BSD 的“发行版”。FreeBSD、NetBSD、OpenBSD 和其他都是*不同的*操作系统,具有不同的内核。与 Linux 不同,Linux 在发行版之间共享相同的内核。https://open-source.net.cn/article/19/3/netbsd-raspberry-pi 是一篇好文章,我读后可以这么说

Creative Commons 许可协议本作品根据 Creative Commons 署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.