← 文章 / 开源项目
Hacker News 1小时前 · 2026-11-11 04:00:44 · 2 阅读

在树莓派 4 上搭建 NetBSD 11 桌面

更新:我发现这篇文章被 Hacker News 收录了,关注度比我预想的要高,不过也许是件好事——说明大家对 NetBSD 的兴趣在上升。我想部分原因是人们在寻找没有 AI 内容的开源替代品,而这样的选择已经不多了。 HN 上有些评论说得有道理,我据此更新了指南的几处内容(比如镜像写入 SD 卡的部分)。 --- 自从把这个 capsule 迁移到 VPS 之后,我的 Raspberry Pi 就空闲出来了。据我所知,NetBSD 是目前唯一还在开发中、不含 AI 垃圾内容的开源操作系统——至少现在是这样?于是我决定试试在树莓派上装它。能有多难呢?事实证明,并不难。我把安装过程写成了一份简短指南,希望能帮到某些人。 以下假设你在 Linux 上准备树莓派的 SD 卡。 下载最新的 arm64 镜像: https://nycdn.netbsd.org/pub/NetBSD-daily/netbsd-11/latest/evbarm-aarch64/binary/gzimg/arm64.img.gz 下载最新的 Raspberry Pi UEFI 固件: https://github.com/pftf/RPi4/releases 解压 NetBSD 镜像:
$ gunzip arm64.img.gz
把 microSD 卡插到笔记本上(我用的是一个便宜的 USB 读卡器)。 确认它是哪个设备:
$ lsblk
在我的机器上是 'sda'。 把镜像写入 SD 卡:
$ sudo dd if=arm64.img of=/dev/sda bs=4M status=progress conv=fsync
如果你更喜欢图形化工具,也可以用 Balena 的 Etcher 之类的软件: https://etcher.balena.io/#download-etcher 在界面中选择 "Flash from file",找到刚才解压的 NetBSD arm64 镜像;目标设备选择 SD 卡(务必确认选的确实是 SD 卡!),然后写入镜像(需要授权 sudo)。 接下来解压固件:
$ mkdir rpi_firmware
$ unzip -d rpi_firmware RPi4_UEFI_Firmware_v1.53.zip 
为 NetBSD 启动分区创建挂载目录:
$ sudo mkdir -p /mnt/netbsd-boot
把 SD 卡的第一个分区挂载上去:
$ sudo mount -t vfat /dev/sda1 /mnt/netbsd-boot

把 rpi_firmware 目录下的所有文件复制到 /mnt/netbsd-boot(全部覆盖)。

$ sudo cp -r rpi_firmware /mnt/netbsd-boot/

这一步是为了让 UEFI BIOS 能真正引导 SD 卡上的 NetBSD 分区。

卸载分区:

$ sudo umount /mnt/netbsd-boot

现在可以把 SD 卡插到 Raspberry Pi 里了。

开机后按 ESC 进入 UEFI 设置菜单。

打开 Boot Maintenance Manager -> Boot Options -> Change Boot Order,用 + 键把 SD 卡移到最上面,然后选择 Commit Changes and Exit。

NetBSD 现在应该能启动了。启动时会先调整 root 文件系统的大小。

完成后用 "root" 登录。

用 'passwd' 设置密码。

建议马上创建一个用户,当然稍后再建也可以:

$ useradd -m -G wheel YOUR_USER
$ passwd YOUR_USER 

让 WiFi 正常工作

接下来连接 WiFi。

输入 'ifconfig' 后看不到无线网卡,这就是个问题。

不过从 dmesg 里可以看到,内核其实识别到了它,也找到了驱动,只是无法自动配置:

$ dmesg | grep -iE 'bwfm|firmware|sdio|wifi'

bwfm0: Found firmware file: brcmfmac43455-sdio.bin

bwfm0: autoconfiguration error: NVRAM file not available

来修复一下:

$ cd /libdata/firmware/if_bwfm
$ ln -s brcmfmac43455-sdio.raspberrypi,4-model-b.txt "brcmfmac43455-sdio.Raspberry Pi 4 Model B.txt"

重启。

现在 ifconfig 能看到 bwfm0 设备了。接着配置 WiFi 接入点。

编辑 rc.conf:

$ vi /etc/rc.conf

在末尾加上:

ifconfig_bwfm0="up"
wpa_supplicant=YES

编辑 wpa_supplicant.conf:

$ vi /etc/wpa_supplicant.conf

在末尾加上(注意大小写):

network={
    ssid="Your_WiFi_SSID_name"
    psk="YourWifiPassword"
    scan_ssid=0
}

(Vi 快速入门:按 'i' 进入编辑模式;按 ESC 退出编辑模式后,把光标移到要删的字符上按 'x' 即可删除;在非编辑模式下按 ':' 进入命令模式,输入 'wq' 回车,即保存并退出。)

一切顺利的话,重启(或重启 wpa supplicant)后就能联网了。

用 ifconfig 检查,应该能看到 'status: active' 以及通过 DHCP 获取到的 IP 地址。

从这里开始,系统怎么配置、装什么软件,完全由你决定。下面是我在个性化使用上做的一些事情。

安装软件

NetBSD 提供了 pkg_src,可以从源码安装和构建软件包;还有 pkgin,用来安装预编译的二进制包。

编辑 ~/.profile,把设置 PKG_PATH 的 export 行前面的注释去掉,这样才能安装二进制包。

然后输入 'exit' 注销,重新登录。

接下来安装 pkgin,也就是二进制包管理器:

$ pkg_add pkgin

现在可以装一些软件了,比如:

$ pkgin update
$ pkgin install nano fastfetch doas

doas 的用法和 sudo 类似,可以让普通用户执行管理员命令。

用 'vi /etc/pkg/etc/doas.conf' 创建 doas 配置文件,加入这一行:

permit persist YOUR_USER

配置 X11

启用图形登录管理器:

$ cp /etc/X11/xinit/xinitrc ~/.xinitrc
$ chmod u+w ~/.xinitrc
$ ln -s .xinitrc ~/.xsession
$ echo 'xdm=YES' >> /etc/rc.conf
$ service xdm start

注意,.xinitrc 和 .xsession 要放在你的用户主目录下(如果想以 root 登录,/root 下也要放一份)。

更多信息参见:

https://www.netbsd.org/docs/guide/en/chap-x.html

用你的普通用户登录(输入用户名后按回车进入密码输入)。

这样会启动 NetBSD 内置的 ctwm 窗口管理器。它非常简单,但很高效。

NsCDE - 不那么常见的桌面环境

如果想让桌面真正好用起来,我推荐 NsCDE——一个基于 fvwm、模仿 CDE 风格的现代桌面环境:

https://github.com/NsCDE/NsCDE

首先安装它需要的所有依赖。以下操作全部以 root 身份进行:

su -
pkgin install fvwm3 ksh93-1.0.10nb3 py313-yaml py313-qt5 py313-psutil coreutils xclip 
pkgin install gtail ImageMagick xdotool dunst stalonetray gsed xterm git xscreensaver-615nb2 

让 python3 可用:

mkdir -p "$HOME/bin"
ln -s /usr/pkg/bin/python3.13 "$HOME/bin/python3"
export PATH="$HOME/bin:/usr/pkg/bin:/usr/pkg/sbin:/usr/X11R7/bin:$PATH"
python3 --version

给你的用户家目录也做同样的操作。

创建 NsCDE 可能需要的这个目录:

mkdir -p /etc/xdg/menus

获取并编译 NsCDE:

cd /tmp
git clone https://github.com/NsCDE/NsCDE.git
cd NsCDE
./configure

注意检查有没有警告信息,如果还缺什么软件包就装上。可以用下面的命令查找可用的软件包:

pkgin search <packagename>

然后编译 NsCDE:

make

如果一切顺利:

make install

为了让 shell 更好用,编辑 root 和你用户的 ~/.shrc,在交互模式设置部分加上这些内容:

set -E
set -o emacs
PS1='$PWD $ '
HISTFILE="$HOME/.sh_history"
HISTSIZE=1000
HISTAPPEND=1
export HISTFILE HISTSIZE HISTAPPEND

接下来编辑你用户的 ~/.xinitrc(如果你以后想用 root 登录,root 的也要改),把底部的 exec 行改成:

export PATH="$HOME/bin:/usr/pkg/bin:/usr/pkg/sbin:/usr/local/bin:/usr/X11R7/bin:$PATH
export ENV="$HOME/.shrc"
exec /usr/local/bin/nscde

重启后用你的用户登录,NsCDE 的首次启动设置向导会自动运行,你可以在里面配置主题以及与 GTK 和 QT 的集成。

点击任务栏多媒体图标上方的向上箭头,会看到一个 Volume Control 菜单项,但点击后会报错说没有安装 volumectrl 应用。File Manager 也是同样的问题。我们来修复一下:

doas pkgin install xmix pcmanfm 

编辑 ~/.NsCDE/NsCDE.conf,加上这行:

InfoStoreAdd volumectrl xmix

把 'InfoStoreAdd filemgr true' 替换为:

InfoStoreAdd filemgr pcmanfm

作为起步,我们还可以装一个图形界面的网页浏览器:

$ doas pkgin install dillo

到这里你应该已经上手了,祝你在新玩具系统上玩得开心!

截图:

Raspberry Pi 上运行 NsCDE 的 NetBSD 11 [图片,png,250Kb]

原始来源: Hacker News

评论 (0)