在树莓派 4 上搭建 NetBSD 11 桌面
$ 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
到这里你应该已经上手了,祝你在新玩具系统上玩得开心!