Radxa Zero踩坑记录

更新时间:2024/01

一年前,心血来潮买了几块Radxa Zero,觉得很有意思,可惜最近想升级到新的系统之后就出了问题,刷机挣扎了好几天,官方文档也已经各种过时了,于是决定记录一下踩坑的过程。

1. 系统安装

Radxa Zero有自带eMMC和不带eMMC两个版本,两个版本使用sd卡运行系统都是ok的,但是如果想将系统刷入eMMC并用eMMC进行引导,就很容易遇到u-boot无法引导的问题。网上有很多讨论,但是大多都已经过时了,官方提供的troubleshooting guide也非常的模糊,提供的u-boot更新依然有问题,即便是成功更新了u-boot,也有可能重启之后u-boot的patch就又失效了。在经过了一周的挣扎之后,以下是我找到的能用的方法。

1.1. 官方镜像

首先是Radxa Zero的官方镜像,最新的发布可以在这里找到:Github。但是在本文写成的时候,最新的版本已经很久都没有更新了,还是2022/08/01发布的,想尝试新系统的话,就无法使用了。

想要使用官方镜像的话,可以尝试使用最新的测试版本:Github(当前是test-build-4)。这些镜像都自带了修正之后的u-boot,所以可以直接使用最直接的方法刷机,不需要再额外的刷其他版本的u-boot了。我目前使用的就是这个版本的debian系统,暂时再也没有遇到任何和u-boot相关的问题了。

  1. 首先,我们先使用UART连接到zero的串口,并在电脑上使用Console打开它的串口,PuTTYMobaXtermtio都可以。
  2. 然后,进入Radxa Zero的maskrom模式
  3. 然后,将eMMC擦除。擦除完成后,zero的eMMC会被当成一个USB磁盘加载起来。
  4. 最后,使用Etcher刷入镜像。方法和刷microSD卡一样,只是选择的磁盘是zero的eMMC。

重启之后就完成了!我们就可以在Console里面使用默认的账号(rock)和密码(rock)登录啦!

Radxa Zero Boot Official Image

感谢Yuntian给予的帮助!

1.2. Armbian

Armbian最新的版本可以在armbian的官网找到:armbian。但是很不幸,直接刷机的方法是不行的,因为最新Armbian的u-boot依然有问题,会导致无法引导,刷入官方提供的u-boot也无法完全解决这个问题,只能保证一次引导成功,重启后就又会出现问题。需要使用下面的方法才能解决:

  1. 首先,将armbian的镜像刷入一张sd卡中。
  2. 然后,我们使用上面刷官方镜像的方法,连接UART,并将eMMC擦除。
  3. 擦除完成后,我们不要直接去刷armbian的镜像,而是将刷好的sd卡插入zero,然后重启,利用sd卡进行引导,并进入armbian。

如果你能使用sd卡进行引导,进入armbian,那么恭喜你,你已经成功一大半了!接下来,我们需要连接Wifi(请参考“设置系统->连接到Wifi”一节),然后使用armbian-config来将u-boot和系统都刷入eMMC中:

注意:armbian初始设置时也会提示你连接wifi,但是这个连接成功可能会是一个虚假的成功,有IP但是除了本地127.0.0.1什么都连不上,所以最好使用nmcli重新连接一次。

1
sudo armbian-config
  1. 然后在界面里面选择:
    1. System -> Install -> Boot from eMMC - system on eMMC。
      armbian-config Install u-boot
    2. 文件系统选择默认:ext4。
  2. 然后等待u-boot和rootfs传输完成,直到显示关机。
    armbian-config Install u-boot done

关机之后,我们就可以将sd卡取出了。重启zero,就可以看到zero已经可以正常引导了!

如果依然出错,那么可以尝试在u-boot里面运行以下命令:

  • mmc dev 2
  • mmc part

之后再运行mmc info,如果发现可以正常返回mmc的信息,那么就可以运行boot命令,正常引导了。成功之后,再次重启貌似就不会再出现问题了。(我重启了5次,但是不知道有没有意外,如果还是不行,那么现在就只能暂时使用官方镜像了)。

感谢MicroLinux提供的解决方法!大家有兴趣也可以去给他的频道和原视频点赞加鸡腿!

2. 设置系统

2.1. 连接到WiFi

为了方便使用,首先,我们最好通过串口将zero连接到WiFi。这里,我们可以使用nmtui

有时候nmtui会卡住,不响应键盘输入,这个时候也可以使用nmcli。复制粘贴如下命令运行,然后跟着提示选择就可以了:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# Enable WIFI
sudo nmcli radio wifi on
nmcli dev status

# Connect to WIFI
nmcli dev wifi list
sudo nmcli --ask dev wifi connect

# Show WIFI connection
nmcli con show

# Wait for WIFI connection to be ready
echo "Sleep 3 seconds for WIFI connection to be ready ..."
sleep 3

# Test
ping -c 1 8.8.8.8

# Show IP address
ip a

Radxa Zero WiFi setup

如果成功了,就可以看到ping 8.8.8.8可以正常工作,并且最后可以看到自己的IP地址了。

Radxa Zero WiFi setup done

2.2. 创建用户

连接上wifi之后,我们就可以使用ssh登录上去,或者继续在串口终端中创建用户和设置机器名了,这里我写了一个小脚本来完成这个枯燥的工作:

1
bash <(curl -sSf https://raw.githubusercontent.com/r12f/config/master/bootstrap/linux/bootstrap.sh)

2.3. 重启系统

这个时候,基本设置就已经完成了,可以重启系统了:

1
sudo reboot now

2.4. 登录并删除默认账户

为了安全,不要忘记删除默认账户:

1
sudo userdel -r rock

这样基本的设置就完成啦!

3. 软件安装

现在,无论是官方镜像还是Armbian,我们可以运行apt upgrade了,所以安装和升级软件就相对简单了。先把系统和源都升级到最新:

1
2
sudo apt update
sudo apt upgrade

3.1. 常用小工具系列

不喜欢的可以自行删除:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
sudo apt install -y iptables \
iotop \
bash-completion \
ca-certificates \
wget \
curl \
vim \
htop \
zip \
lsof \
net-tools \
bridge-utils \
traceroute \
iperf \
tcpdump \
minicom \
fio \
stress-ng \
tshark \
uuid \
setserial \
tio \

3.2. 基本的开发工具

git,c++,python,protobuf,cmake,等等:

1
2
3
4
5
6
7
8
9
10
11
12
sudo apt install -y build-essential \
g++ \
git \
cmake \
libboost-all-dev \
libpcap-dev \
python3 \
python3-dev \
python3-pip \
python3-setuptools \
pkg-config \
protobuf-compiler \

3.3. Rust

1
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
原创文章,转载请标明出处:Soul Orbit
本文链接地址:Radxa Zero踩坑记录