mirror.dongdigua.github.io/org/nanopi_r2s_bsd.org

3.2 KiB

在 NanoPi R2S 上运行 FreeBSD/OpenBSD

曾经有两个树莓派, Pi3 因为碰水, Zero 因为腐蚀, 都报废了

我想在 R2S 上运行 BSD, 因为:

  1. it's cool, 2) diff FreeBSD Linux | grep IoT

艰辛的历程

  • 带上手套防止腐蚀, 用螺丝刀和弯头镊子 (文具盒里随手使用) 撬开外壳
  • 缝合了一个 OpenBSD 镜像, 用 Arduino Uno 当串口连接 UART, 输出毫无意义的字符
  • 运行 OpwnWRT, 依旧输出垃圾
  • 运行 Armbian, 依旧输出垃圾, 弹了一会琴后开始思考是不是串口出错了
  • 翻箱倒柜找到一个 USB Mini-B 线用于 Arduino Nano (山寨版 CH340 芯片)
  • 重新烧写 OpenBSD 镜像, 成功启动, 但键盘无法输入, 无法安装
  • 缝合 FreeBSD 镜像, 成功启动, ssh 登录 (user/passwd:freebsd), 耶!
  • 合上外壳

关于镜像制作

总的来说就是:

dd if=FreeBSD-13.2-RELEASE-arm64-aarch64-ROCK64.img of=root.img bs=1M
dd if=usr/lib/linux-u-boot-edge-nanopi-r2s_22.05.3_arm64/idbloader.bin of=root.img seek=64 conv=notrunc
dd if=usr/lib/linux-u-boot-edge-nanopi-r2s_22.05.3_arm64/uboot.img of=root.img seek=16384 conv=notrunc
dd if=usr/lib/linux-u-boot-edge-nanopi-r2s_22.05.3_arm64/trust.bin of=root.img seek=24576 conv=notrunc
doas dd if=root.img of=/dev/sda

开始

  • 中国用户第一件事先换源: bjtu FreeBSD 镜像
  • 然后像之前 OpenBSD 一样还是装机必备软件, 因为是服务器所以没几个
pkg install neofetch oksh sudo git fzf frp
  • 改密码, /usr/local/etc/sudoers 不用 doas 因为 persist 选项只在 OpenBSD 上可用
  • 主机名, 路由器配置 DHCP 静态 IP, 本机 /etc/hosts 加入主机名解析
hostname freebsd-r2s
vi /etc/rc.conf

第一个服务: gopher

su
pkg add gophernicus
vi /etc/inetd.conf
echo 'inetd_enable="YES"' >> /etc/rc.conf
mkdir /var/gopher
# don't also chown nobody group so it belongs to wheel group
chown nobody /var/gopher
chmod 775 /var/gopher
service inetd onestart

TODO frpc daemon

frp 这完意好啊, 但是 Debian 搁置了挺长时间也没加入

我作为 RHEL7 入坑 Linux 的用户, 没有体验过 systemd 之前的服务管理, 这里可以体验一把. (关于 systemd 有个不错的视频: 【人肉精翻】systemd的悲剧 YouTube) /usr/local/etc/rc.d/frpc:

别忘了把 gophernicus 的 host 和 port 改成远程主机的

TODO git 服务器

Ref