国产树毒派上手体验

国产之光

作为一个树莓派用户,在经历了树莓派4和5挤牙膏的提升之后,终于将目光转向了国产派。先总结一下,除了芯片比较厉害之外,软件和文档适配完全不如树莓派,国产还有很长的路要走。

镜像选择

  1. 安卓:比较简单,适合玩游戏
  2. 官方瑞莎系统:软件文档可查
  3. Armbian:适合自己DIY
  4. Ubuntu:网络版本

安卓装了感觉很流畅,然后试试官方的瑞莎系统。

修改密码

按照官方文档设置成功。

开启ssh

按照官方文档设置成功。但是要注意,如果使用无屏模式,记得在/config/config.txt中加入下面的部分使得开机自动启动ssh服务,否则开机需要登录后才有ssh服务。

# Connect to Wi-Fi
# Command:
#   connect_wi-fi <network name> [password]
#
#connect_wi-fi private_network password
if headless enable_service ssh

具体细节参考官方文件

开启GPU驱动

按照官方文档开启。若要使KDE桌面支持GPU加速,可按照这里的方法开启

Driver OpenGL OpenGL ES OpenCL 8K HDMI Vulkan
Mali
Panthor

目前的桌面环境KDE不支持Mali驱动的GPU加速,但是Panthor驱动支持。一些应用也不支持在Mali的驱动上面跑。

开启RDP

瑞莎系统自带KDE和gnome桌面,GNOME 会话对 systemd 和 Wayland 依赖大,不推荐远程登录。

建议改用自带的KDE,更稳定、兼容性强:

sudo apt install sddm xrdp
echo "startplasma-x11" > ~/.xsession

在显示器连接情况下请不要用同一用户连接,会导致黑屏!别问我为什么知道。因为远程的rdp只支持x11,所以wayland桌面只能作罢。但是某些应用可能需要用到wayland才能开启UI,例如Waydroid,这时候就需要安装weston了。

开启Samba

按照官方文档设置成功。

添加输入法

按照官方文档设置成功。

风扇管理

参照官方文档设置成功。

开启热点

编译rtl8188无线网卡驱动

因为我使用的是RealTek RTL8188eus无线网卡,插入USB后使用命令

lsusb

查看具体网卡型号和驱动,参考这里。然后去GitHub上下载和编译驱动,命令如下:

git clone https://github.com/aircrack-ng/rtl8188eus
cd rtl8188eus
sudo apt install linux-headers-`uname -r`
sudo make && sudo make install

装完后重启即可。

编译安装r8125-dkms驱动

rock5b+自带的是Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE有线网卡,可以通过命令

lspci | grep -i ethernet

来查看有线网卡型号。接下来就是类似上面的找驱动和编译,命令如下:

git clone https://github.com/awesometic/realtek-r8125-dkms.git
cd realtek-r8125-dkms
sudo ./dkms-install.sh

利用自带软件开启

参照官方文档设置成功。如果使用命令行,可以先通过UI创建好配置文件,然后需要分别运行下面命令:

echo 密码 | nmcli connection up 配置文件名 --ask
iptables -t nat -A POSTROUTING -o 出口网卡 -j MASQUERADE

安装docker版本openwrt进行管理

失败了,苦呀西。但是过程可以记录一下,参考这里

需求目标

目前已有:

  • wlx0c82680ba357:连接宽带,作为 WAN。

  • wlP2p33s0:已配置为 AP 热点,用户设备连接至此。

希望通过 Docker 中运行的 OpenWRT 管理热点下的设备(如 DHCP、NAT、防火墙等)以及透明代理等。

方案核心

wlP2p33s0 通过宿主机发放wifi热点并桥接出网口,然后配置openwrt的lan口为桥接网口,从而作为这部分网络的软路由。但是不能用nmcli工具配置热点,因为无法桥接管理,具体看这篇回答。hostapd可以这么干,但是需要特定网卡(支持4addr/WDS)。这些都不满足目前的要求,最终方案只能使用编译好的openwrt镜像,在容器内映射宿主机网卡,并装驱动开热点下面的配置仅供参考。

配置步骤
  • 创建docker容器:
# 开启混杂模式
sudo ip link set enP4p65s0 promisc on
# 获取rock5b的openwrt镜像, 可前往 https://openwrt.ai 寻找最新镜像地址替换
wget https://dl.openwrt.ai/releases/24.10/targets/rockchip/armv8/kwrt-06.01.2025-rockchip-armv8-radxa_rock-5b-rootfs.tar.gz
docker import ./kwrt-06.01.2025-rockchip-armv8-radxa_rock-5b-rootfs.tar.gz kiddin9_openwrt
# 使用有线网络作为wan出口
docker network create -d macvlan -o parent=enP4p65s0 openwrt-wan
# 容器内需要管理网络(如 DHCP、iptables)
docker run -d --name openwrt --network openwrt-wan --privileged kiddin9_openwrt /sbin/init
docker exec -it openwrt bash
nano /etc/config/network
# 修改成下面的内容
config device
        option name 'eth1'
        option type 'bridge'
        list ports 'eth0'
        option promisc '1'

config interface 'wan'
        option device 'eth1'
        option proto dhcp

# 然后容器就可以上网了可以试试ping baidu.com

  • 宿主机启动WiFi, 并创建veth:
#创建 veth 对
sudo ip link add veth-host type veth peer name veth-openwrt
# 给 veth-host 分配 IP
sudo ip addr add 10.12.0.2/24 dev veth-host
sudo ip link set veth-host up
  • 配置容器地址
# 将另一端挂载入容器
PID=$(docker inspect -f '\{\{.State.Pid\}\}' openwrt)
sudo ip link set veth-openwrt netns $PID
# 配置容器内网卡(veth-openwrt)
sudo nsenter -t $PID -n ip addr add 10.12.0.1/24 dev veth-openwrt
sudo nsenter -t $PID -n ip link set veth-openwrt up
  • 宿主机和容器开启NAT转发以及防火墙
# 启用 IP 转发
#echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
#sudo nsenter -t $PID -n sysctl -w net.ipv4.ip_forward=1
# 关闭防火墙后测试
#docker exec openwrt /etc/init.d/firewall stop
#ping 10.12.0.1
# 在容器内给veth-openwrt添加接口
docker exec -it openwrt bash
uci set network.veth_if=interface
uci set network.veth_if.ifname='veth-openwrt'
uci set network.veth_if.proto='static'
uci set network.veth_if.ipaddr='10.12.0.1'
uci set network.veth_if.netmask='255.255.255.0'
uci commit network
# 重启防火墙
uci add_list firewall.@zone[1].network='veth_if'
uci commit firewall
/etc/init.d/network restart
/etc/init.d/firewall restart

DDNS

因为瑞莎系统使用的是Network Manager,可以利用本身的hook来运行ddns脚本。参考这里实现dhcp client在分配到ip结束后运行指定脚本。

man NetworkManager-dispatcher

可以查看相关的功能,然后记得启用该服务

sudo systemctl enable NetworkManager-dispatcher.service
sudo systemctl start NetworkManager-dispatcher.service

具体脚本如下:

#!/bin/bash

#$1是网卡
#$2是触发的action
if [ "$1" = "网卡名" ]; then
    case "$2" in
        dhcp4-change)
            ipvfour=`ip addr show 网卡名 | grep 'inet ' | awk '{print $2}' | awk -F '/' '{print $1}' `
            curl "https://api.cloudflare.com/client/v4/zones/域名id/dns_records/dnd记录ID" -X PATCH -H "Content-Type:application/json" -H "Authorization: Bearer API密钥"  -d "{\"comment\": \"Domain verification record\",\"content\": \"$ipvfour\",\"name\": \"域名\", \"proxied\": false, \"ttl\": 3600, \"type\": \"A\"}"
            ipvfourt=${ipvfour//./\\\\.}
            curl -X POST -H "Content-Type: application/json" -d "{\"chat_id\": \"目标id\", \"text\": \"Dear Doctor: Your *IP address* changed to ipv4: $ipvfourt\", \"parse_mode\": \"MarkdownV2\"}"  https://t.me/your_bot_api_key/sendMessage
            ;;
    esac
fi

串口测试

按照官方文档测试成功。

摄像头

参考官方文档,编译安装ffmpeg。 首先安装v4l-utils:

sudo apt update
sudo apt install v4l-utils

树莓派摄像头可以安装拍照,但是motion打不开设备,GG。

蓝牙音频

不能连接Airpods pro。而且KDE自带的蓝牙管理器太难用了,显示一串地址无法找到设备。。。参考这个

大模型部署

待测试。。。

redroid游戏

根据redroid官方部署文档,需要先找一个ubuntu编译镜像。 然后按照官方的教程安装scrpy,编译镜像还是太费事了,所以我选择用别人编译好的。 先装docker:

sudo apt install docker.io -y #安装 docker
sudo usermod -aG docker $USER
sudo chmod a+rw /var/run/docker.sock

再加docker镜像:

sudo mkdir -p /etc/docker
sudo nano /etc/docker/daemon.json

编辑daemon.json文件,加入以下内容:

{
  "registry-mirrors": ["https://docker.nw.ip-ddns.com"]
}

使用docker info命令查看是否有镜像地址。记得一定要先开启Mali显卡驱动!!! 然后开启容器:

sudo docker run -itd --privileged \
    --name redroid \
    -v /data:/data \
    -v /dev/mali0:/dev/mali0 \
    -p 5555:5555 \
    iceblacktea/redroid-arm64:12.0.0-250116 \
    androidboot.redroid_gpu_mode=mali \
    androidboot.redroid_radio=1 \
    androidboot.redroid_wifi=1 \
    androidboot.redroid_wifi_gateway=10.100.200.1/24 \
    androidboot.redroid_magisk=1

注意/data目录一定要干净!!!而且要加sudo权限!镜像可以成功开启,但是因为使用了Mali的驱动,OpenGL支持不完全(只支持了OpenGL ES),所以abd可以连上但是scrpy不能显示。

Waydroid软件渲染

因为redroid失败,所以尝试使用waydroid。waydroid也可以用,但是只能用软件渲染。具体步骤参考armbian的教程OrangePi5Plus的教程。 接下来讲讲详细步骤。首先按照官方教程将GPU驱动切换到panthor,启用psi,按照官方文档进行启用

sudo nano /etc/kernel/cmdline   # 添加或修改你所需要的选项
# 在最后加入 psi=1即可
sudo u-boot-update  # 执行命令以更新启动参数

设置好后重启系统:

# 可以使用 cat /boot/extlinux/extlinux.conf 检查参数
sudo reboot

然后安装waydroid:

sudo apt install curl ca-certificates -y
curl https://repo.waydro.id | sudo bash
sudo apt install waydroid -y

但是安装时会出现init falied的提示,没关系,需要我们配置一下镜像再重试,如下:

wget https://github.com/WillzenZou/armbian_fork_build/releases/download/willzen-armbian-24.5.0/2.waydroid-panthorv10-240416-v1.img.tar.gz
sudo mkdir -p /usr/share/waydroid-extra/images
sudo tar -xf 2.waydroid-panthorv10-240416-v1.img.tar.gz -C /usr/share/waydroid-extra/images
sudo waydroid init -f -i /usr/share/waydroid-extra/images

因为GPU加速不能用,只能软件渲染,所以这里要编辑配置文件进行软件渲染:

sudo nano /var/lib/waydroid/waydroid_base.prop

将这个文件里的ro.hardware.gralloc=gbmro.hardware.egl=mesa修改成 ro.hardware.gralloc=default ro.hardware.egl=swiftshader 然后重启waydroid container

sudo systemctl restart waydroid-container

因为rdp不支持waydroid,所以需要用到weston,先安装

sudo apt install -y weston

接着打开weston

weston > log.txt 2>&1 &

可以看到弹出了窗口,在窗口里打开终端开启waydroid会话

waydroid session start

开另一个终端输入下面命令开启安卓容器画面即可

waydroid show-full-ui

实测下来卡卡的,并没有那么流畅,只能当玩具。

一些参考

1

2


最近刷了armbian,蓝牙体验非常好!

如果您觉得该文章对您有用,欢迎打赏作者,激励创作!
Welcome to tip the author!

微信(WeChat Pay) 支付宝(AliPay)
比特币(Bitcoin) 以太坊(Ethereum)
以太坊(Base) 索拉纳(Solana)