mirror of
https://github.com/dongdigua/dongdigua.github.io
synced 2024-11-27 17:10:55 +08:00
78 lines
3.2 KiB
Org Mode
78 lines
3.2 KiB
Org Mode
|
#+TITLE: 在 NanoPi R2S 上运行 FreeBSD/OpenBSD
|
||
|
#+DATE: <2023-07-10 一>
|
||
|
|
||
|
曾经有两个树莓派, Pi3 因为碰水, Zero 因为腐蚀, 都报废了
|
||
|
|
||
|
我想在 R2S 上运行 BSD, 因为:
|
||
|
1) it's cool, 2) [[https://feng.si/posts/2019/06/freebsd-and-risc-v-the-future-of-open-source-iot-ecosystem/][diff FreeBSD Linux | grep IoT]]
|
||
|
|
||
|
* 艰辛的历程
|
||
|
- 带上手套防止腐蚀, 用螺丝刀和弯头镊子 (文具盒里随手使用) 撬开外壳
|
||
|
- 缝合了一个 OpenBSD 镜像, 用 Arduino Uno 当串口连接 UART, 输出毫无意义的字符
|
||
|
- 运行 OpwnWRT, 依旧输出垃圾
|
||
|
- 运行 Armbian, 依旧输出垃圾, 弹了一会琴后开始思考是不是串口出错了
|
||
|
- 翻箱倒柜找到一个 USB Mini-B 线用于 Arduino Nano (山寨版 CH340 芯片)
|
||
|
- 重新烧写 OpenBSD 镜像, 成功启动, 但键盘无法输入, 无法安装
|
||
|
- 缝合 FreeBSD 镜像, 成功启动, ssh 登录 (user/passwd:freebsd), 耶!
|
||
|
- 合上外壳
|
||
|
|
||
|
** 关于镜像制作
|
||
|
- [[https://personalbsd.org][PersonalBSD.org]] 但是构建过程不知道, 不敢用
|
||
|
- [[https://asciinema.org/a/381979][asciinema: NanoPi r2s RK3328 with FreeBSD 13-CURRENT]]
|
||
|
- [[https://asciinema.org/a/381973][asciinema: NanoPi r2s RK3328 with OpenBSD 6]]
|
||
|
|
||
|
总的来说就是:
|
||
|
#+BEGIN_SRC sh
|
||
|
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
|
||
|
#+END_SRC
|
||
|
|
||
|
|
||
|
* 开始
|
||
|
- 中国用户第一件事先换源: [[https://mirror.bjtu.edu.cn/help/freebsd/][bjtu FreeBSD 镜像]]
|
||
|
- 然后像之前 [[./whatif_openbsd.org][OpenBSD]] 一样还是装机必备软件, 因为是服务器所以没几个
|
||
|
#+BEGIN_SRC sh
|
||
|
pkg install neofetch oksh sudo git fzf frp
|
||
|
#+END_SRC
|
||
|
- 改密码, =/usr/local/etc/sudoers=
|
||
|
不用 doas 因为 persist 选项只在 OpenBSD 上可用
|
||
|
- 主机名, 路由器配置 DHCP 静态 IP, 本机 =/etc/hosts= 加入主机名解析
|
||
|
#+BEGIN_SRC sh
|
||
|
hostname freebsd-r2s
|
||
|
vi /etc/rc.conf
|
||
|
#+END_SRC
|
||
|
- 改 shell 配置, [[https://github.com/dongdigua/configs/blob/main/.profile.in][基本还是之前那样]]
|
||
|
|
||
|
* 第一个服务: gopher
|
||
|
#+BEGIN_SRC sh
|
||
|
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
|
||
|
#+END_SRC
|
||
|
|
||
|
* TODO frpc daemon
|
||
|
frp 这完意好啊, 但是 [[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1030841][Debian 搁置了挺长时间]]也没加入
|
||
|
|
||
|
我作为 RHEL7 入坑 Linux 的用户, 没有体验过 systemd 之前的服务管理, 这里可以体验一把.
|
||
|
(关于 systemd 有个不错的视频: [[https://www.bilibili.com/video/BV1oo4y1x7Nw][【人肉精翻】systemd的悲剧]] [[https://youtu.be/o_AIw9bGogo][YouTube]])
|
||
|
=/usr/local/etc/rc.d/frpc=:
|
||
|
#+BEGIN_SRC sh
|
||
|
#+END_SRC
|
||
|
|
||
|
别忘了把 gophernicus 的 host 和 port 改成远程主机的
|
||
|
|
||
|
* TODO git 服务器
|
||
|
|
||
|
|
||
|
* Ref
|
||
|
- [[https://hauweele.net/~gawen/blog/?p=2662][FreeBSD on NanoPi R2S]] 提到网络有时会卡住, 我也遇到了
|