radxa Rock 5b使用体验

今年双十一最大战果,就是通过radxa的QQ群找了个热心大哥,60¥买了他-400¥的券,下单了ROCK 5b裸板,昨天到货后我就迫不及待地去单位对面的顺丰网点自提了。回家因为没有HDMI显示器(家里甚至没电视),就用SSH+VNC进行了初体验,后来为这个板子专门买了台4K显示器,谁是椟谁是珠我都快搞不清了……

烧录镜像

我选用了官方提供的debian 11,在release里选了rock-5b-debian-bullseye-xfce4-arm64-20221111-1506-gpt.img.xz镜像,按照教程像树莓派一样用balenaEtcher烧录进TF卡中(使用TF卡是因为买不起emmc)。

后来摸索发现Armbian也挺好用,但是23版本一线通有问题,暂时使用22版本。如果把系统装在emmc上,就可以使用显示器反向充电一线通,据说tf卡速度不够pd协商过不去会不停重启。按照官方教程将系统烧录到emmc中。

安装风扇自动控制

淘宝了个5v/5.5cm孔距/1.25接口的北桥风扇,一开始插上去运行风扇测试脚本sudo test_fan_run.sh不转(手拨一下才转),万用表测FAN输出4.87V,将脚本里的PWM占空参数调整为9000/10000后风扇起码跑起来了,再减下去依然能跑。网上有大佬写了自动控制风扇的程序

1
2
3
4
5
6
7
8
9
sudo apt install lm-sensors

sudo ip route add 0.0.0.0/0 via 192.168.1.150 dev wlan0 proto static
wget https://github.com/pymumu/fan-control-rock5b/releases/download/1.1.0/fan-control-rock5b.1.1.0.arm64.deb
sudo ip route delete default via 192.168.1.150 dev wlan0 proto static
sudo apt install ./fan-control-rock5b.1.1.0.arm64.deb
sudo systemctl enable fan-control
sudo systemctl start fan-control
sudo systemctl status fan-control

正确设置WiFi和蓝牙

根据官方指南关于蓝牙的描述,如果使用RTL8852BE的蓝牙,需要修改黑名单设置才能让蓝牙正常工作:

1
2
3
4
5
6
sudo vim /etc/modprobe.d/blacklist.conf
blacklist pgdrv
blacklist btusb
blacklist btrtl
blacklist btbcm
blacklist btintel

在Armbian中,RTL8852BE网卡总会被认成两块MAC不同适配器,而且在启动时dmesg显示其中一块网卡会被重命名为wlP2p33s0,另一块可能叫做wlan0也可能叫做wlan1,这导致wlP2p33s0的MAC地址可能是14:xx:xx:xx:xx:xx也可能是16:xx:xx:xx:xx:xx,自动连接WiFi时不确定会先由哪个网卡连上,在IP-MAC绑定时就无法确定下一次连接上的IP是多少。临时的解决方法是禁止系统重命名设备

1
sudo ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules

重启后wlan0将会确定为14:xx:xx:xx:xx:xxwlan1将会确定为16:xx:xx:xx:xx:xx。网上有一些猜测认为这种现象可能是双模WiFi网卡引起的。使用iw dev确实能看到是同一块物理设备下产生的两个适配器,iw phy phy0 info虽然能看到设备的详细信息,但是完全看不懂……

更新设备并获取GPU支持

按照Armbian官方说明添加大佬的源,以更新GPU驱动

如果在/lib/firmware/下没有mali_csffw.bin,就去下载一个sudo curl -o /lib/firmware/mali_csffw.bin https://github.com/JeffyCN/rockchip_mirrors/blob/libmali/firmware/g610/mali_csffw.bin

镜像中如果有不需要的软件,如libreoffice,可以先卸掉在配置系统,以避免不必要的升级。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
sudo ip route add 0.0.0.0/0 via 192.168.1.150 dev wlan0 proto static
sudo add-apt-repository ppa:liujianfeng1994/panfork-mesa
sudo add-apt-repository ppa:liujianfeng1994/rockchip-multimedia
sudo ip route delete default via 192.168.1.150 dev wlan0 proto static

sudo apt remove --purge libreoffice\* thunderbird\* codium pidgin
sudo apt remove --purge thunderbird\*
sudo apt remove --purge codium
sudo apt remove --purge pidgin
# # 卸载自带的chromium,装大神的GPU加速版,卸载其他不需要的软件
# sudo apt remove chromium-\*

sudo apt-get clean
sudo apt-get autoremove

sudo apt update
sudo apt list --upgradable
#sudo apt dist-upgrade # 是否升级要斟酌,armbian22->23后,pd有问题,无法一线通,还可能需要诱骗。

sudo apt install rockchip-multimedia-config

# sudo curl -o /lib/firmware/mali_csffw.bin https://github.com/JeffyCN/rockchip_mirrors/blob/libmali/firmware/g610/mali_csffw.bin

# sudo vim /etc/udev/rules.d/11-rockchip-multimedia.rules
# KERNEL=="mpp_service", MODE="0660", GROUP="video"
# KERNEL=="rga", MODE="0660", GROUP="video"
# KERNEL=="system-dma32", MODE="0666", GROUP="video"
# KERNEL=="system-uncached-dma32", MODE="0666", GROUP="video" RUN+="/usr/bin/chmod a+rw /dev/dma_heap"

sudo apt install kodi

sudo mv /usr/share/xsessions/kodi.desktop /usr/share/wayland-sessions/kodi-wayland.desktop

Armbian进系统选用户和桌面环境的界面叫lightdm-slick-greeter,桌面环境列表来自/usr/share/xsessions/*.desktop/usr/share/wayland-session/*.desktop,如果列表里面有不需要的项目可以将*.desktop改为*.desktop.bak之类的名字。

1
2
3
4
5
6
7
sudo mv /usr/share/xsessions/gnome-xorg.desktop /usr/share/xsessions/gnome-xorg.desktop.bak
sudo mv /usr/share/xsessions/gnome.desktop /usr/share/xsessions/gnome.desktop.bak
sudo mv /usr/share/xsessions/ubuntu-xorg.desktop /usr/share/xsessions/ubuntu-xorg.desktop.bak
sudo mv /usr/share/xsessions/ubuntu.desktop /usr/share/xsessions/ubuntu.desktop.bak

sudo mv /usr/share/wayland-sessions/gnome.desktop /usr/share/wayland-sessions/gnome.desktop.bak
sudo mv /usr/share/wayland-sessions/ubuntu.desktop /usr/share/wayland-sessions/ubuntu.desktop.bak

可以使用lightdm --show-config查看lightdm各项配置来源,一些配置项可以参考LightDM - ArchWikiLightDM - UbuntuWikiDisplay manager - ArchWiki。其中,默认桌面环境可以在/etc/lightdm/lightdm.conf.d/11-armbian.conf中添加user-session=ubuntu-wayland。此外,可以用lightdm-settings以GUI的方式改登录时候的背景之类的东西。

  • 注意,更新Armbian23.02后,PD一线通会无限重启,官方建议诱骗。之后重新下载了旧版Armbian_22.1.2,然后单独升级armbian-firmware,并安装大佬ppa中的所有包,在更新gnome相关的包,断电重启进wayland恢复正常。
1
2
3
4
5
sudo apt install armbian-firmware

sudo apt install libgl4es libdri2to3 libmali-g610-x11 malirun mali-g610-firmware libd3dadapter9-mesa libegl-mesa0 libegl1-mesa libgbm1 libgl1-mesa-dri libgl1-mesa-glx libglapi-mesa libgles2-mesa libglx-mesa0 libosmesa6 libwayland-egl1-mesa mesa-opencl-icd mesa-va-drivers mesa-vdpau-drivers mesa-vulkan-drivers

sudo apt install gnome-control-center-data gnome-control-center gnome-remote-desktop language-selector-gnome

其他的参考:

基础设置

手册上说SSH默认用户名密码是rock/rock,就直接进去了。进去以后执行命令是不是报语言环境的相关警告,就安装一下语言包,这个镜像默认没有装locales,得自己手动安装。

双十一买到手时,Armbian只有民间支持没有官方支持,Radxa官方只有debian和ubuntu,经过我一个多月的把玩,还是觉得Armbian好用。另外,十二月Armbian也官方也有了支持,因此建议直接用Armbian。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# 用`free -m`检测虚拟内存,若有则关闭,5b的16G版本内存绰绰有余
sudo swapoff -a
# 修改虚拟内存优先级到`0`
sudo sysctl vm.swappiness=0
sudo vim /etc/sysctl.conf
vm.swappiness=0

# 如果是电口,就是`enP4p65s0`
ip route list
default via 192.168.1.1 dev enP4p65s0 proto dhcp metric 100
192.168.1.0/24 dev enP4p65s0 proto kernel scope link src 192.168.1.120 metric 100
# 添加一条默认路由到OpenWRT,更新会快一些
sudo ip route add 0.0.0.0/0 via 192.168.1.150 dev enP4p65s0 proto static
# 删除该默认路由
sudo ip route delete default via 192.168.1.150 dev enP4p65s0 proto static

# 如果是RTL8852BE无线网卡,就是`wlP2p33s0`
ip route list
default via 192.168.1.1 dev wlP2p33s0 proto dhcp metric 100
192.168.1.0/24 dev wlP2p33s0 proto kernel scope link src 192.168.1.120 metric 100
# 添加一条默认路由到OpenWRT
sudo ip route add 0.0.0.0/0 via 192.168.1.150 dev wlP2p33s0 proto static
#sudo ip route add 0.0.0.0/0 via 192.168.1.150 dev wlan0 proto static
# 删除该默认路由
sudo ip route delete default via 192.168.1.150 dev wlP2p33s0 proto static
#sudo ip route delete default via 192.168.1.150 dev wlan0 proto static

# 更新包管理器
sudo apt update
# 安装常用软件
sudo apt install -y zsh git vim tmux ufw neofetch aria2 lm-sensors glances exa
# 配置防火墙,# 设置legacy若ufw status报错
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
sudo ufw status
sudo ufw allow 22/tcp comment ssh
sudo ufw allow 5900/tcp comment vnc
sudo ufw allow 2017/tcp comment v2raya
sudo ufw allow 6800/tcp comment aria2
sudo ufw enable

# 安装oh-my-zsh
chsh -s $(which zsh)
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
# 如果安装路径有问题可以指定路径
ZSH="$HOME/.oh-my-zsh" sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

# 安装oh-my-tmux
cd ~
git clone https://github.com/gpakosz/.tmux.git
ln -s -f .tmux/.tmux.conf
cp .tmux/.tmux.conf.local .

# 生成ssh秘钥
ssh-keygen
# 安装locales
sudo apt install locales
# 配置语言
sudo dpkg-reconfigure locales
# 调整时区
sudo timedatectl set-timezone Asia/Shanghai

没想到的是,切换oh-my-zsh的theme(可能是切换光标引起的,我切到jonathan就直接chromium segmentation fault),会导致chrome崩溃实属想不到,详见这篇文章……

装了neofetch看一下Debian的系统信息,起码硬件很强:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
       _,met$$$$$gg.          rock@rock-5b
,g$$$$$$$$$$$$$$$P. ------------
,g$$P" """Y$$.". OS: Debian GNU/Linux 11 (bullseye) aarch64
,$$P' `$$$. Host: Radxa ROCK 5B
',$$P ,ggs. `$$b: Kernel: 5.10.66-27-rockchip-gea60d388902d
`d$$' ,$P"' . $$$ Uptime: 27 mins
$$P d$' , $$P Packages: 1141 (dpkg)
$$: $$. - ,d$$' Shell: zsh 5.8
$$; Y$b._ _,d$P' Terminal: /dev/pts/0
Y$$. `.`"Y$$$$P"' CPU: (8) @ 1.800GHz
`$$b "-.__ Memory: 365MiB / 15722MiB
`Y$$
`Y$$.
`$$b.
`Y$$b.
`"Y$b._
`"""

或是Armbian的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
                              pi@rock-5b
----------
█ █ █ █ █ █ █ █ █ █ █ OS: Armbian (22.11.2) aarch64
███████████████████████ Host: Radxa ROCK 5B
▄▄██ ██▄▄ Kernel: 5.10.110-rockchip-rk3588
▄▄██ ███████████ ██▄▄ Uptime: 30 mins
▄▄██ ██ ██ ██▄▄ Packages: 1551 (dpkg)
▄▄██ ██ ██ ██▄▄ Shell: zsh 5.8.1
▄▄██ ██ ██ ██▄▄ Resolution: 3840x2160
▄▄██ █████████████ ██▄▄ Terminal: /dev/pts/1
▄▄██ ██ ██ ██▄▄ CPU: (8) @ 1.800GHz
▄▄██ ██ ██ ██▄▄ Memory: 830MiB / 15720MiB
▄▄██ ██ ██ ██▄▄
▄▄██ ██▄▄
███████████████████████
█ █ █ █ █ █ █ █ █ █ █

安装科学冲浪

安装核心:

1
2
3
4
5
6
7
8
# 安装或更新核心
sudo bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install
# 仅更新核心
sudo bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install-geodata
# 卸载核心
sudo bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ remove

sudo systemctl status xray.service

安装UI,直接在release中挑了一个arm64的包

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
wget https://github.com/v2rayA/v2rayA/releases/download/v1.5.9.1698.1/installer_debian_arm64_1.5.9.1698.1.deb
sudo apt install ./installer_debian_arm64_1.5.9.1698.1.deb
# 可以添加为系统服务
sudo systemctl enable v2raya.service
sudo systemctl start v2raya.service
sudo systemctl status v2raya.service

# 更新防火墙
sudo ufw allow 2017/tcp

# 若防火墙报错可以切换nft或legacy试试
sudo update-alternatives --set iptables /usr/sbin/iptables-nft
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-nft
sudo update-alternatives --set arptables /usr/sbin/arptables-nft
sudo update-alternatives --set ebtables /usr/sbin/ebtables-nft

sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
sudo update-alternatives --set arptables /usr/sbin/arptables-legacy
sudo update-alternatives --set ebtables /usr/sbin/ebtables-legacy

这是个WebUI,访问192.168.1.120:2017,官方推荐配置如下:

配置 选项
透明代理/系统代理 启用: 大陆白名单模式
透明代理/系统代理实现方式 redirect
规则端口的分流模式 大陆白名单模式
防止DNS污染 仅防止DNS劫持(快速)
特殊模式 supervisor
TCPFastOpen 保持系统默认
多路复用 关闭
自动更新订阅 关闭
解析订阅链接/更新时优先使用 跟随透明代理/系统代理

配置aria2c服务

http下载vscode之类大文件之前,最好把aria2配好,然后使用如AriaNgAll-In-One版的WebUI控制。

如果想要将aria2c配置为系统服务随机启动,就不能再想以前部署服务器一样在$HOME目录下新建.conf.session文件来保存配置和会话信息了,因为Linux禁止系统服务从用户目录运行或访问用户目录。因此,不论二进制文件还是配置文件,或是启动时需要访问的会话文件都得放在别的地方。比如可以将配置文件放在/etc/aria2c.conf中,将其他文件放在/var/aria2c目录下。

这里我使用的用户/组为pi/pi,若使用www-data/www-data下下来的文件用起来可能不方便。

1
2
3
4
5
6
7
8
9
10
11
wget https://github.com/mayswind/AriaNg/releases/download/1.3.2/AriaNg-1.3.2-AllInOne.zip
unzip ./AriaNg-1.3.2-AllInOne.zip

# 更新防火墙
sudo ufw allow 6800/tcp
# 创建下载目录
sudo mkdir -p /var/aria2c/Downloads
# 即使用于/var/tmp一样的访问权限
sudo chmod 777 /var/aria2c /var/aria2c/Downloads
# 修改配置文件
sudo vim /etc/aria2.conf

配置如下,注意修改<your-rpc-secret>的远程密码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
## '#'开头为注释内容, 选项都有相应的注释说明, 根据需要修改 ##
## 被注释的选项填写的是默认值, 建议在需要修改时再取消注释 ##

## 文件保存相关 ##

# 文件的保存路径(可使用绝对路径或相对路径), 默认: 当前启动位置
dir=/var/aria2c/Downloads
# 启用磁盘缓存, 0为禁用缓存, 需1.16以上版本, 默认:16M
#disk-cache=32M
# 文件预分配方式, 能有效降低磁盘碎片, 默认:prealloc
# 预分配所需时间: none < falloc ? trunc < prealloc
# falloc和trunc则需要文件系统和内核支持
# NTFS建议使用falloc, EXT3/4建议trunc, MAC 下需要注释此项
#file-allocation=none
# 断点续传
continue=true

## 下载连接相关 ##

# 最大同时下载任务数, 运行时可修改, 默认:5
#max-concurrent-downloads=5
# 同一服务器连接数, 添加时可指定, 默认:1
max-connection-per-server=16
# 最小文件分片大小, 添加时可指定, 取值范围1M -1024M, 默认:20M
# 假定size=10M, 文件为20MiB 则使用两个来源下载; 文件为15MiB 则使用一个来源下载
min-split-size=4M
# 单个任务最大线程数, 添加时可指定, 默认:5
split=16
# 整体下载速度限制, 运行时可修改, 默认:0
max-overall-download-limit=3000000
# 单个任务下载速度限制, 默认:0
#max-download-limit=0
# 整体上传速度限制, 运行时可修改, 默认:0
max-overall-upload-limit=50000
# 单个任务上传速度限制, 默认:0
#max-upload-limit=0
# 禁用IPv6, 默认:false
disable-ipv6=true
# 连接超时时间, 默认:60
#timeout=60
# 最大重试次数, 设置为0表示不限制重试次数, 默认:5
#max-tries=5
# 设置重试等待的秒数, 默认:0
#retry-wait=0

## 进度保存相关 ##

# 从会话文件中读取下载任务
input-file=/var/aria2c/aria2c.session
# 在Aria2退出时保存`错误/未完成`的下载任务到会话文件
save-session=/var/aria2c/aria2c.session
# 定时保存会话, 0为退出时才保存, 需1.16.1以上版本, 默认:0
save-session-interval=60

## RPC相关设置 ##

# 启用RPC, 默认:false
enable-rpc=true
# 允许所有来源, 默认:false
rpc-allow-origin-all=true
# 允许非外部访问, 默认:false
rpc-listen-all=true
# 事件轮询方式, 取值:[epoll, kqueue, port, poll, select], 不同系统默认值不同
#event-poll=select
# RPC监听端口, 端口被占用时可以修改, 默认:6800
rpc-listen-port=6800
# 设置的RPC授权令牌, v1.18.4新增功能, 取代 --rpc-user 和 --rpc-passwd 选项
rpc-secret=<your-rpc-secret>
# 设置的RPC访问用户名, 此选项新版已废弃, 建议改用 --rpc-secret 选项
#rpc-user=<USER>
# 设置的RPC访问密码, 此选项新版已废弃, 建议改用 --rpc-secret 选项
#rpc-passwd=<PASSWD>
# 是否启用 RPC 服务的 SSL/TLS 加密,
# 启用加密后 RPC 服务需要使用 https 或者 wss 协议连接
#rpc-secure=true
# 在 RPC 服务中启用 SSL/TLS 加密时的证书文件,
# 使用 PEM 格式时,您必须通过 --rpc-private-key 指定私钥
#rpc-certificate=/path/to/certificate.pem
# 在 RPC 服务中启用 SSL/TLS 加密时的私钥文件
#rpc-private-key=/path/to/certificate.key

## BT/PT下载相关 ##

# 当下载的是一个种子(以.torrent结尾)时, 自动开始BT任务, 默认:true
follow-torrent=true
# BT监听端口, 当端口被屏蔽时使用, 默认:6881-6999
listen-port=51414
# 单个种子最大连接数, 默认:55
#bt-max-peers=55
# 打开DHT功能, PT需要禁用, 默认:true
enable-dht=true
# 打开IPv6 DHT功能, PT需要禁用
#enable-dht6=false
# DHT网络监听端口, 默认:6881-6999
dht-listen-port=6881-6999
# 本地节点查找, PT需要禁用, 默认:false
bt-enable-lpd=true
# 种子交换, PT需要禁用, 默认:true
enable-peer-exchange=true
# 每个种子限速, 对少种的PT很有用, 默认:50K
bt-request-peer-speed-limit=3M
# 客户端伪装, PT需要
peer-id-prefix=-TR2770-
user-agent=Transmission/2.77
peer-agent=Transmission/2.77
# 当种子的分享率达到这个数时, 自动停止做种, 0为一直做种, 默认:1.0
seed-ratio=1.0
seed-time=0
# 强制保存会话, 即使任务已经完成, 默认:false
# 较新的版本开启后会在任务完成后依然保留.aria2文件
#force-save=false
# BT校验相关, 默认:true
#bt-hash-check-seed=true
# 继续之前的BT任务时, 无需再次校验, 默认:false
bt-seed-unverified=true
# 保存磁力链接元数据为种子文件(.torrent文件), 默认:false
bt-save-metadata=false
# dht-file
dht-file-path=/var/aria2c/dht.dat
# 删除未选择的文件
bt-remove-unselected-file=true
# 无速度时自动停止时间
#bt-stop-timeout=1800

添加启动项:

1
sudo vim /etc/systemd/system/aria2c.service

修改配置文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[Unit]
Description=Aria2c download manager
Requires=network.target
After=dhcpcd.service

[Service]
Type=forking
User=pi
Group=pi
ExecStartPre=/usr/bin/env touch /var/aria2c/aria2c.session
WorkingDirectory=/var/aria2c/
ExecStart=/usr/bin/aria2c --conf-path=/etc/aria2.conf -D
TimeoutStopSec=20
Restart=on-failure

[Install]
WantedBy=multi-user.target

测试启动:

1
2
3
sudo systemctl enable aria2c.service
sudo systemctl start aria2c.service
sudo systemctl status aria2c.service

安装vscode

添加微软源安装:

1
2
3
4
5
6
7
8
9
sudo apt-get install wget gpg
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
sudo install -D -o root -g root -m 644 packages.microsoft.gpg /etc/apt/keyrings/packages.microsoft.gpg
sudo sh -c 'echo "deb [arch=amd64,arm64,armhf signed-by=/etc/apt/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" > /etc/apt/sources.list.d/vscode.list'
rm -f packages.microsoft.gpg

sudo apt install apt-transport-https
sudo apt update
sudo apt install code # or code-insiders

或是下载deb安装:

下载微软官方arm64 deb安装即可。

1
2
wget https://az764295.vo.msecnd.net/stable/6261075646f055b99068d3688932416f2346dd3b/code_1.73.1-1667966450_arm64.deb
sudo apt install ./code_1.73.1-1667966450_arm64.deb

安装wps-office

wps主页下载即可。

1
2
wget https://wps-linux-personal.wpscdn.cn/wps/download/ep/Linux2019/11664/wps-office_11.1.0.11664_arm64.deb
sudo apt install ./wps-office_11.1.0.11664_arm64.deb

Armbian安装rime输入法

这篇文章中fcitx5+rime的方法我没安装成功,就转向这个答案,使用ibus+rime的组合。

1
sudo apt install ibus ibus-rime

区域与语言->管理已安装的语言->键盘输入法系统->选择IBus。此时在keyboard->input source中能看到汉语->中文(Rime)(没有重启即可),选上即可。重启后,右上角出现ibus的选择框,选中文(Rime)后报错,查看日志:

1
2
3
4
5
6
7
8
9
cat /tmp/rime.fcitx-rime.ERROR
E0116 16:40:14.597605 4678 deployment_tasks.cc:212] missing input schema: luna_pinyin
E0116 16:40:14.598170 4678 deployment_tasks.cc:212] missing input schema: luna_pinyin_simp
E0116 16:40:14.598309 4678 deployment_tasks.cc:212] missing input schema: luna_pinyin_fluency
E0116 16:40:14.598423 4678 deployment_tasks.cc:212] missing input schema: bopomofo
E0116 16:40:14.598546 4678 deployment_tasks.cc:212] missing input schema: bopomofo_tw
E0116 16:40:14.598660 4678 deployment_tasks.cc:212] missing input schema: cangjie5
E0116 16:40:14.598773 4678 deployment_tasks.cc:212] missing input schema: stroke
E0116 16:40:14.598884 4678 deployment_tasks.cc:212] missing input schema: terra_pinyin

apt搜索rime发现需要继续安装data包(不必装全,最关键的应该是luna-pinyin):

1
sudo apt install rime-data-luna-pinyin rime-data-pinyin-simp rime-data-bopomofo rime-data-cangjie5 rime-data-stroke rime-data-terra-pinyin

随便找个能输入的地方,此时左上角已经可以切换到Rime输入法了,随意输入后按F4调出菜单界面选择朙月拼音 简化字即可。

Armbian安装谷歌输入法

上安装中文输入法,我选了fcitx,不过中间需要很多玄学操作(UI上的操作就是“支持的语言”、“语言/区域”这种地方把中文选上,把默认输入法选成fcitx),关键是用fcitx-configtool查看报错,哪里飘红搜哪里。通常需要的操作是:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 我也不知道到底是哪些包起作用
sudo apt install fcitx fcitx-pinyin fcitx-googlepinyin fcitx-config-gtk fcitx-frontend-all fcitx-frontend-gtk2 fcitx-frontend-gtk3 fcitx-frontend-qt5 fcitx-libs-dev fcitx-ui-classic fcitx-ui-qimpanel fcitx-ui-light fcitx-table
# 在shell配置文件里加几个环境变量
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
# 设置开机启动
cp /usr/share/applications/fcitx.desktop ~/.config/autostart/fcitx.desktop
# 用fcitx配置工具查看谷歌拼音之类的中文输入法有没有显式出来
fcitx-configtool
# 用输入法配置工具查看需要装什么东西
im-config
# 根据诊断工具debug
fcitx-diagnose
# 解决诊断工具中`gtk-query-immodules-3.0`和`gtk-query-immodules-2.0`的报错
sudo ln -s /usr/lib/aarch64-linux-gnu/libgtk-3-0/gtk-query-immodules-3.0 /usr/bin/gtk-query-immodules-3.0
sudo ln -s /usr/lib/aarch64-linux-gnu/libgtk2.0-0/gtk-query-immodules-2.0 /usr/bin/gtk-query-immodules-2.0

安装chromium(有些民间Armbian镜像没有浏览器)

注:chromium升级后不需要再进行下面的操作了,直接apt install chromium-browser即可。

1
sudo apt install chromium-browser

如果chromium慢,可能是登录的时候没用wayland(我习惯用ubuntu-wayland,速度上gnome-wayland也一样)。

可以换源

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
sudo apt remove --purge chromium-browser chromium-codecs-ffmpeg-extra
sudo apt install chromium-browser=$(apt-cache show chromium-browser|grep Version|grep rkmpp|cut -d " " -f2) chromium-codecs-ffmpeg-extra=$(apt-cache show chromium-browser|grep Version|grep rkmpp|cut -d " " -f2) libv4l-rkmpp v4l-utils

sudo ln -s /lib /usr/lib64
cd /usr/lib64/ && sudo ln -s aarch64-linux-gnu/libv4l2.so.0.0.0 libv4l2.so

sudo vim /etc/rc.local:
# 添加以下内容
echo dec > /dev/video-dec0
chown root:video /dev/video-dec0
chmod 0660 /dev/video-dec0
echo enc > /dev/video-enc0
chown root:video /dev/video-enc0
chmod 0660 /dev/video-enc0

sudo vim /etc/chromium-browser/default
# 替换默认flag
CHROMIUM_FLAGS="--use-gl=egl"

sudo apt install gstreamer1.0-rockchip1 gstreamer1.0-alsa gstreamer1.0-pipewire gstreamer1.0-plugins-base-apps gstreamer1.0-plugins-base gstreamer1.0-x libgstreamer-gl1.0-0 libgstreamer-plugins-base1.0-0 clapper ffmpeg kodi moonlight-embedded obs-gstreamer obs-studio

安装syncthing

尝试部署一个syncthing服务器,在4x的服务器上安装:

1
2
curl -sS https://webinstall.dev/syncthing | bash
source ~/.config/envman/PATH.env

在公网IP上开GUI配置界面,并开启防火墙:

1
2
3
syncthing --gui-address=0.0.0.0:8384
sudo firewall-cmd --zone=public --permanent --add-port=8384/tcp # WEB-UII界面
sudo firewall-cmd --zone=public --permanent --add-port=22000/tcp # 通信端口

在想用的机子上:

1
2
3
4
5
sudo apt install syncthing
sudo systemctl enable syncthing-resume.service
systemctl --user enable syncthing.service
systemctl --user start syncthing.service
systemctl --user status syncthing.service

民间旧版Armbian遗留操作

他们官网上说对debian做了优化,比如尽量使用内存,减少落盘读写什么的。Radax的群里有大佬做了action日更镜像,可以试一下。另外,Armbian官方也更新了适用于Rock5B的镜像

如果刷了armbian接HDMI时ctrl+alt+F7只有光标,回ctrl+alt+F1dmesg八成是显卡驱动问题:

1
2
3
4
5
6
7
8
9
10
11
12
# 命令行下搜WiFi
iwlist scanning
# 加入WiFi
nmcli d wifi connect "<your-ssid>" password <your-password>

# 下载显卡驱动固件
wget https://github.com/JeffyCN/rockchip_mirrors/raw/libmali/firmware/g610/mali_csffw.bin
sudo mv mali_csffw.bin /lib/firmware/
# 添加大佬源
sudo add-apt-repository ppa:liujianfeng1994/panfork-mesa
sudo apt update
sudo apt upgrade

Armbian安装docker

按照这篇文章一次安装完成:

  1. 更新,安装依赖:

    1
    2
    3
    4
    # update software repositories
    sudo apt update
    # install necessary packages for https apt calls
    sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
  2. 使用Ubuntu构建的Armbian添加如下gpg秘钥:

    1
    2
    3
    4
    # add docker GPG key
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    # add docker software repository
    sudo add-apt-repository "deb [arch=arm64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
  3. 使用Debian构建的Armbian添加如下gpg秘钥:

    1
    2
    3
    4
    # add docker GPG key
    curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
    # add docker software repository
    sudo add-apt-repository "deb [arch=arm64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
  4. 安装docker:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # install docker
    sudo apt update
    sudo apt install docker-ce docker-ce-cli containerd.io
    # start docker service
    sudo systemctl start docker
    # enable docker service on startup
    sudo systemctl enable docker
    # create a docker group
    sudo groupadd docker
    # add the current user to the docker group
    sudo usermod -aG docker $USER
  5. 使用hello-world镜像测试安装结果:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    sudo docker run hello-world

    Unable to find image 'hello-world:latest' locally
    latest: Pulling from library/hello-world
    7050e35b49f5: Pull complete
    Digest: sha256:faa03e786c97f07ef34423fccceeec2398ec8a5759259f94d99078f264e9d7af
    Status: Downloaded newer image for hello-world:latest

    Hello from Docker!
    This message shows that your installation appears to be working correctly.

    To generate this message, Docker took the following steps:
    1. The Docker client contacted the Docker daemon.
    2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (arm64v8)
    3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
    4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

    To try something more ambitious, you can run an Ubuntu container with:
    $ docker run -it ubuntu bash

    Share images, automate workflows, and more with a free Docker ID:
    https://hub.docker.com/

    For more examples and ideas, visit:
    https://docs.docker.com/get-started/

挂载smb共享

直接安装rock5b上的vlc和vlc-plugin-samba后,vlc仍然无法打开smb共享中的文件,若使用mpv时会报错说”ffmpeg protocol not found. make sure ffmpeg/libav is compiled with networking support … smb”,可能是编译的时候没有带smb模块吧,懒得研究这个了,干脆将smb共享挂载为本地文件。

参考Mount password protected network folders

1
2
3
4
5
6
7
8
9
10
sudo apt install cifs-utils
sudo mkdir /media/exos_1t
vim ~/.smbcredentials
#.smbcredentials
username=username
password=password

chmod 600 ~/.smbcredentials

//servername/EXOS_1T /media/exos_1t cifs credentials=/home/pi/.smbcredentials,iocharset=utf8 0 0

尝试玩游戏

B站上偶然间看到一个大佬的视频,大佬即是UP又是malior的作者,运行这个库需要先装docker再部署:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
wget -O - https://github.com/ChisBread/malior/raw/main/install.sh > /tmp/malior-install.sh && bash /tmp/malior-install.sh  && rm /tmp/malior-install.sh 
malior-sudo 'echo $USER' # 拉rk3588-gaming的镜像时间比较长

# 安装wine,时间比较长
malior install wine
# 安装中文环境:
malior winetricks -q fakechinese wenquanyi
# 游戏貌似必须放在`~/.local/malior/`目录下,红警跑起来报Yuri.exe的错
malior wine "~/.local/malior/games/CandC_RA2/CandC_RA2YR/YURI.exe"
# 冰封王座,但是声音只会出来一秒,在设置的声音里选一下输出设备就好了
# `-windows`是窗口模式,不加就是全屏:
malior wine "~/.local/malior/games/Warcraft3_1.24E/War3.exe -opengl -windows"
# 混乱之治加上`-classic`
malior wine "~/.local/malior/games/Warcraft3_1.24E/War3.exe -opengl -classic"

参考:

安装node

node对arm64的支持貌似最高到14,更高的我没测试。

1
2
3
4
# 安装nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash
# 安装node 14
nvm install 14

安装Anaconda

anaconda也支持arm64,虽然Python不随最新的,但是包多省心啊。去anaconda或者miniconda下载一个arm64的.sh安装就好了。

备份tf卡

装了这么多东西,有必要备份一下系统,我这里备在samba的一个盘上了,5.7G备了一个小时(macOS上64kk要小写,否则报错):

1
sudo dd if=/dev/disk2 conv=sync,noerror bs=64k status=progress | gzip -c > /Volumes/EXOS_1T/backup_image20221129.img.gz

恢复:

1
gunzip -c /Volumes/EXOS_1T/backup_image20221129.img.gz | dd of=/dev/disk2 bs=64k status=progress

maskrom模式写入emmc

买个民间大神的emmc模块比官方便宜很多。

1
2
3
4
5
6
7
8
9
10
11
# 安装rkdeveloptool
sudo port install automake autoconf libusb # 或 brew install automake autoconf libusb
git clone https://github.com/radxa/rkdeveloptool.git
cd rkdeveloptool
autoreconf -i
./configure
make
sudo cp rkdeveloptool /opt/homebrew/bin/
# 测试rkdeveloptool
rkdeveloptool -v
rkdeveloptool ver 1.32

烧录镜像,按住maskrom后type-c口接电脑,使用lsusb验证USB设备显示Bus 020 Device 031: ID 2207:350b Fuzhou Rockchip Electronics Company。运行rkdeveloptool

1
2
3
4
5
6
7
8
9
sudo rkdeveloptool ld
DevNo=1 Vid=0x2207,Pid=0x350b,LocationID=1402 Maskrom
# 下载spl loader
wget https://dl.radxa.com/rock5/sw/images/loader/rock-5b/rk3588_spl_loader_v1.08.111.bin
# 初始化ram并准备闪存环境
sudo rkdeveloptool db ./rk3588_spl_loader_v1.08.111.bin
Downloading bootloader succeeded.
# 写入镜像,如果是Armbian官网的.xz镜像则需要解压为.img
sudo rkdeveloptool wl 0 Armbian_22.11.2_Rock-5b_jammy_legacy_5.10.110_gnome_desktop.img

GPIO的PWM

参考这篇文章,用大佬的Blinka,先看香橙派的手册作参考:

1
2
3
4
5
6
7
8
sudo apt install -y python3 python3-pip
sudo apt install libgpiod2 python3-libgpiod
pip3 install gpiod
pip3 install --upgrade setuptools
pip3 freeze - local | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip3 install -U

sudo apt install -y python3-smbus2 python3-dev i2c-tools
sudo pip3 install Adafruit-Blinka

安了一大堆东西,在5b的vscode上按手册写代码测试一下,GPIO的pin定义在rock5.py中:

1
2
3
import board
import pwmio
pwm = pwmio.PWMOut(board.PWM14)

在vscode的launch.json中要加上"sudo": true"justMyCode": false两个选项,即“以管理员身份调试运行”和“调试库代码”,单步调试adafruit_blinka/microcontroller/rockchip/PWMOut.py中的PWMOut类时发现这段代码需要访问/sys/class/pwm/pwmchip0/pwm14这个文件,但是我只有/sys/class/pwm/pwmchip0/pwm0,而且感觉我的这个文件是风扇在用。

问了一下群里大神,可能跟设备树有关,有人说要改dts编译dtb后替换现有文件,有人说改overlay可能也行,搜了半天,找到这篇文章。改overlay即可:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 查看有哪些overlay
exa -alT /boot/dtb/rockchip/overlay/
#...
.rwxr-xr-x 309 root 8 12月 2022 ├── rk3588-pwm2-m1.dtbo
.rwxr-xr-x 309 root 8 12月 2022 ├── rk3588-pwm3-m1.dtbo
.rwxr-xr-x 309 root 8 12月 2022 ├── rk3588-pwm5-m2.dtbo
.rwxr-xr-x 309 root 8 12月 2022 ├── rk3588-pwm6-m2.dtbo
.rwxr-xr-x 309 root 8 12月 2022 ├── rk3588-pwm7-m3.dtbo
.rwxr-xr-x 309 root 8 12月 2022 ├── rk3588-pwm8-m0.dtbo
.rwxr-xr-x 311 root 8 12月 2022 ├── rk3588-pwm12-m0.dtbo
.rwxr-xr-x 311 root 8 12月 2022 ├── rk3588-pwm13-m0.dtbo
.rwxr-xr-x 311 root 8 12月 2022 ├── rk3588-pwm13-m2.dtbo
.rwxr-xr-x 311 root 8 12月 2022 ├── rk3588-pwm14-m0.dtbo
.rwxr-xr-x 311 root 8 12月 2022 ├── rk3588-pwm14-m1.dtbo
.rwxr-xr-x 311 root 8 12月 2022 ├── rk3588-pwm15-m0.dtbo
.rwxr-xr-x 311 root 8 12月 2022 ├── rk3588-pwm15-m1.dtbo
.rwxr-xr-x 311 root 8 12月 2022 ├── rk3588-pwm15-m3.dtbo

# 修改`armbianEnv`
sudo vim /boot/armbianEnv.txt
# 添加`overlays=pwm2-m1 pwm6-m2 pwm7-m3`(心比较沉,加了三个)
overlay_prefix=rk3588
overlays=pwm2-m1 pwm6-m2 pwm7-m3

重启后发现/sys/class/pwm/下出现了另外的pwmchip1pwmchip2pwmchip3,此时用exa查看这三个新项目比原来的pwmchip0少一些子目录,可能是没启用导致的,按照radax给的风扇的例子启用一下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# 查看pwm项目
ls /sys/devices/platform/ | grep pwm
fd8b0010.pwm
fd8b0020.pwm
febd0020.pwm
febd0030.pwm
# 或用exa
exa -alt /sys/class/pwm/pwmchip0/
drwxr-xr-x - root 14 2月 22:57 /sys/class/pwm/pwmchip0
lrwxrwxrwx 0 root 14 2月 22:59 ├── device -> ../../../fd8b0010.pwm

exa -alt /sys/class/pwm/pwmchip1/
drwxr-xr-x - root 14 2月 22:57 /sys/class/pwm/pwmchip1
lrwxrwxrwx 0 root 14 2月 22:58 ├── device -> ../../../fd8b0020.pwm

exa -alt /sys/class/pwm/pwmchip2/
drwxr-xr-x - root 14 2月 22:57 /sys/class/pwm/pwmchip2
lrwxrwxrwx 0 root 14 2月 22:58 ├── device -> ../../../febd0020.pwm

exa -alt /sys/class/pwm/pwmchip3/
drwxr-xr-x - root 14 2月 23:08 /sys/class/pwm/pwmchip3
lrwxrwxrwx 0 root 14 2月 22:58 ├── device -> ../../../febd0030.pwm

# 启用pwm7-m3,引脚pin为27,https://wiki.radxa.com/Rock5/hardware/5b/gpio
echo 0 > /sys/devices/platform/febd0030.pwm/pwm/pwmchip3/export
# 设置总周期
echo 10000 > /sys/devices/platform/febd0030.pwm/pwm/pwmchip3/pwm0/period
# 调整占用时间
echo 3000 > /sys/devices/platform/febd0030.pwm/pwm/pwmchip3/pwm0/duty_cycle
echo normal > /sys/devices/platform/febd0030.pwm/pwm/pwmchip3/pwm0/polarity
# 打开引脚
echo 1 > /sys/devices/platform/febd0030.pwm/pwm/pwmchip3/pwm0/enable
# 关闭引脚
echo 0 > /sys/devices/platform/febd0030.pwm/pwm/pwmchip*/pwm0/enable

Armbian上的这个pwmchip*应该是按顺序分配的,不是固定的,所以写成星号比较保险,用前面的fexxxxxx确定针脚就好了。

USB声卡

群里大佬都说5b这个把3.5mm模拟音频口放在DP电源旁边的操作很魔幻,刚好我有块MOTU M2的外置声卡,走USB让5b只输出数字信号就好了。而且如果是一线通的话声卡直接插显示器通过显示器的USB Hub送到type-c再到5b,也就是5b上始终只有一根type-c线,负责供电、显示以及声卡。

这时候问题就出现了,首先M2官方不支持Linux,然后在Armbian下5b的USB口直接驱动不起来声卡,必须接显示器USB Hub才能有足够的供电,一线通到5b时也能认出来这块声卡,但是播放音频的时候基本上每16秒钟有2-4秒的噪音,这种好了但没完全好的状态非常蛋疼,因为不懂dts也不懂内核,就懒得动手搞底层的东西,只是调了调pulseaudioalsa的参数,毫无作用。

想到手里还有一块再吃灰的树莓派2b,就想着如果是Armbian的问题,树莓派作为SBC里被支持的最好的设备,声卡什么的应该没问题。一开始拿出RPi-2b送电俩指示灯常亮,插拔SD卡也没反应,很诡异。我换了几个电源都不行,万用表瞎戳也没搞清楚啥情况,都送上咸鱼准备告别了,搜了一下有老外说灯常亮的时候换根线试试,竟然被他说中了……

然后就是在RPi-2b上刷了个Raspberry Pi OS Lite (32-bit),用当年RPi-2b配的USB 2.4G WiFi连上网,常规updateupgrade后,USB直接插声卡,亮了,说明起码供电没问题。装上pulseaudio,用aplay test.wav放歌试了一下,什么都没设它自动就送到USB声卡上了,没有噪音,很好。此时只需要把RPi-2b配置成PulseAudio Server,把5b配置成PulseAudio Client就好了。按照这个教程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# client and server both
sudo apt install pulseaudio-zeroconf # rock5b上可能是 sudo apt install pulseaudio-module-zeroconf
sudo systemctl enable avahi-daemon.service
sudo systemctl start avahi-daemon.service

# server side:
sudo vim /etc/pulse/default.pa
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/24 auth-anonymous=1
load-module module-zeroconf-publish
# restart pulseaudio, check loaded modules
pulseaudio -k
pulseaudio --start
pacmd list-modules | grep native-protocol-tcp
pacmd list-modules | grep zeroconf-publish

# client side:
sudo vim /etc/pulse/default.pa
load-module module-native-protocol-tcp
load-module module-zeroconf-discover
# restart pulseaudio, check loaded modules
pulseaudio -k
pulseaudio --start
pacmd list-modules | grep native-protocol-tcp
pacmd list-modules | grep zeroconf-discover

此时在作为客户端的5b上,用pavucontrol查看输出设备,就已经出现多个RPi-2b上的虚拟输出设备了(多个可能是即有IPv4又有IPv6),选M2即可。测试播放音频,好了但没完全好,明显会有丢帧。RPi-2b(2.4G WiFi)与5b(5G Wifi)互联的延迟挺十几毫秒,有时候还跳上百,可能是因为小区的问题,我家的2.4G信号挺糟糕的。此时只能掏出网线,用RPi-2b跟5b直插,配上另一个段的IP(nmcli配上ipv4后记得改manual)再把RPi-2b的WiFi关了(nmcli里device disconnect或者connection down),重启PulseAudio即可,重新连上后基本解决了丢帧问题,现在听起跟本地设备一样,非常丝滑。

1
2
nmcli connection modify Wired\ connection\ 1 ipv4.addresses 192.168.100.100/24
nmcli connection modify Wired\ connection\ 1 ipv4.method manual

算是半完美解决声卡问题,小团圆结局也是happy ending。

安装硬盘休眠

hd-idle项目可以完成这个任务:

1
2
3
git clone https://github.com/adelolmo/hd-idle
cd hd-idle
make

直接运行hd-idle -i 300 -l /mnt/UD_64G/hd-idle.log,即为所有硬盘设置300秒空闲停转时间,并指定日志文件。

我的rock5b直接装不上release的deb,自己编译也不行。不折腾了

安装搜狗输入法(armbian安装可能会有问题)

apt中貌似没有,得从搜狗官网下载arm64的包

1
2
3
4
# 安装输入框架
sudo apt install fcitx5
# 安装输入法
sudo apt install ./sougoxxx.deb

然后再系统dock里找到“搜索”,搜“fcitx”启动,搜狗就出现了。

安装VNC(debian可能没有需要安装)

如此豪华的硬件,必须得体验一下图形界面!随便搜个教程安装VNC服务端:

1
2
3
4
5
6
7
8
9
10
11
# 大概看一下装了哪些包
apt list --installed
# 已更新且发行版自带了xfce4和xfce4-goodies就不用再装了
#sudo apt update && sudo apt install xfce4 xfce4-goodies

# 安装vnc服务端,这个发行版的apt里能搜到这一个vnc的server
sudo apt install tightvncserver
# 安装相关依赖
sudo apt install dbus-x11
# 启动
vncserver

使用vncserver执行首次启动,设置VNC访问密码(6-8位)并让VNC服务端生成配置文件。(我第一次不知道为什么密码没有设置成功,连接失败时日志指示~/.vnc/passwd文件没生成,运行vncpasswd再来一次就可以了)。

接下来自定义VNC服务端配置文件。VNC默认启动于5901端口,默认由:1session占用,先停止默认的实例,再修改配置。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 开防火墙端口
sudo ufw allow 5901/tcp
# 停止实例`:1`
vncserver -kill :1
# 备份配置文件
mv ~/.vnc/xstartup ~/.vnc/xstartup.bak
# 新建配置文件
vim ~/.vnc/xstartup

#######写入配置#######
#!/bin/bash
xrdb $HOME/.Xresources # 让VNC的GUI去读取`.Xresources`文件,以指定图形化桌面终端的主题、颜色、字体等。
startxfce4 & # 让VNC启动xfce
#######写入结束#######

# 设置运行权限
sudo chmod +x ~/.vnc/xstartup
# 再次启动
vncserver

VNC本身不使用加密协议,可以使用SSH建立隧道转发VNC以实现加密:

1
ssh -L 5901:127.0.0.1:5901 -C -N -l rock 192.168.1.120
  • -L:将远端的5901绑定在127.0.0.15901上;
  • -C:开启压缩以节省流量;
  • -N:告诉ssh我们不在远端执行命令;
  • -l:指定登录用户名,应使用非root用户登录。

这条命令执行后将建立到192.168.1.120的隧道,命令不返回。在VNC客户端里,新建一个到本地127.0.0.1:5901的连接,用户名改成rock,就可以远程了。

将VNC加入系统服务,新建文件sudo vim /etc/systemd/system/vncserver@.service

/etc/systemd/system/vncserver@.service
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target

[Service]
Type=forking
User=rock
Group=rock
WorkingDirectory=/home/rock

PIDFile=/home/rock/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :%i
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target

加载配置(@后面的1指的是VNC的:1):

1
2
3
4
5
6
7
# 重新加载系统配置工具
sudo systemctl daemon-reload
# 启动VNC服务端
sudo systemctl enable vncserver@1.service
sudo systemctl start vncserver@1
# 查看运行状态
sudo systemctl status vncserver@1

如果打开chrome上B站发现中文全是方框,则应安装字体(不过前面选过locale就没问题了):

1
sudo apt install fonts-wqy-microhei fonts-wqy-zenhei xfonts-intl-chinese xfonts-intl-chinese-big emacs-intl-fonts

安装USB无线网卡(失败)

随便找了个USB网卡,插入后查看USB设备,找到设备ID为148f:7601 Ralink Technology, Corp. MT7601U Wireless Adapter。查看识别的网络设备,发现这个网卡未识别:

1
2
3
4
5
6
7
8
9
10
 lsusb
# ...
Bus 001 Device 004: ID 148f:7601 Ralink Technology, Corp. MT7601U Wireless Adapter
# ...

ip a # 或ip l
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
# ...
2: enP4p65s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
# ...

下载驱动并编译(没搞定没深究):

1
2
3
4
5
6
7
8
sudo apt install linux-headers-generic build-essential
git clone https://github.com/art567/mt7601usta.git
cd mt7601usta/src
make # 此时报错 `can't find file Kconfig` 就不懂了
sudo make install
sudo mkdir -p /etc/Wireless/RT2870STA/
sudo cp RT2870STA.dat /etc/Wireless/RT2870STA/
sudo modprobe mt7601Usta

把吃灰中raspberry pi 2的USB WiFi拔下来,0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN Adapter,是个2.4G免驱,解决。

部署matrix

安装数据库:

1
2
3
4
5
6
7
8
9
10
11
12
sudo apt install postgresql
# 安装完毕后系统中会自动新增一个`postgres`用户,切换用户
sudo -i -u postgres
# 登录postgreSQL
psql
psql (14.5 (Ubuntu 14.5-0ubuntu0.22.04.1))
Type "help" for help.

# 退出
\q
# 查看状态
systemctl status postgresql.service

初始化:

1
2
3
4
5
6
7
# 创建角色
sudo -u postgres createuser -P dendrite
# 创建数据库(单数据库模式)
sudo -u postgres createdb -O dendrite -E UTF-8 dendrite
# 测试connection string
pg_isready -d postgresql://dendrite:dendrite@localhost/dendrite
localhost:5432 - accepting connections

安装golang,nginx:

1
2
3
sudo apt install golang nginx
go version
go version go1.18.1 linux/arm64

安装并配置

1
2
3
4
5
6
7
8
9
10
11
# 下载
wget https://github.com/matrix-org/dendrite/archive/refs/tags/v0.10.8.zip
unzip /v0.10.8.zip
cd ./dendrite-0.10.8
# 构建安装
./build.sh
go install ./cmd/dendrite-monolith-server
# 生成密钥
./bin/generate-keys --private-key matrix_key.pem
Created private key file: matrix_key.pem
# 按手册提示修改配置文件,若需要命令行添加用户,还需要将`client_api.registration_shared_secret`设置值。

启动dendrite,添加用户:

1
2
3
4
5
6
# 启动
./dendrite-monolith-server -config /path/to/dendrite.yaml
# 添加管理员用户
./bin/create-account -config ./dendrite.yaml -username admin -admin
# 添加普通用户
./bin/create-account -config ./dendrite.yaml -username qinzishi

下载并解压element客户端

1
2
wget https://github.com/vector-im/element-web/releases/download/v1.11.15/element-v1.11.15.tar.gz
tar -zxvf element-v1.11.15.tar.gz

配置nginx为一个简单的静态文件服务器:

/etc/nginx.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
worker_connections 768;
# multi_accept on;
}

http {
server {
listen 80;
location / {
root /var/aria2c/element-v1.11.15;
}
}
}

网络问题

2024/04/14更新:

领导又支援了一块5b。首先是随便买了个rtl8852be,结果lspci时发现verdor id是b85b,而不是原来的b852。整了一个礼拜,试了各种系统,编译了新驱动,lsmod什么的都能加载驱动,驱动起来也能搜索wifi,但是就是无法连接。我懒得编译旧驱动了,就重新买了块b852的卡。刷了Armbian上的默认系统,这次ok了。

发现了第二个问题,新系统5b的网卡是两块,用上面禁止重命名的方式无法连接,就将就着用了,但是俩个5b在某张卡连wifi时报destination host unreachable。两个5b到别的机子都通,但是互相之间不通。用arp -a或者ip neigh show看ARP表发现是incomplete状态,临时解决办法是在两个5b上都手写一条arp进去:

1
sudo ip neigh replace to xxx.xxx.xxx.xxx dev wlP2p33s0 lladdr xx:xx:xx:xx:xx:xx nud permanent

临时解决方法就这样了,也可以把命令加在启动脚本里省点事。

评论

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×