menu Chancel's Blog
rss_feed lightbulb_outline

X96 Max Plus刷Armbian Linux系统

1. 前言

很久之前买了一个外贸电视盒子,X96 Max Plus,但后来不怎么看电视也收拾起来吃灰

无意中了解到ArmBian项目,发现这个电视盒子可以跟N1盒子一样刷Arm的Linux系统来做微型家庭服务器,PT下载/Openwrt之类的

Tip:X96 Max Plus的质量相对较差,比如电源就很扯蛋,我随便找个电源超过10w(原装5V2A)接入就直接把电源模块给损坏了,寄回去维修花了我30元..

整个机器配置如下

  • S905X2 处理器
  • 4G RAM + 64G ROM
  • 千兆网卡

这个配置外挂硬盘跑跑PT,挂一些Docker容器应该是轻而易举的

实测机器是可以完美刷入ArmBian Linux到emmc存储中,做到完美启动的

2. 安装 ArmBian Linux

安装不难,但过程比较折腾,尤其是一不小心出错可能就砖了,不好维护

ARM大部分设备不像X86设备,大不了重装,出了问题往往是引导就进不去了,所以刷入过程务必谨慎小心

如刷入失败,可以参考使用Usb Tools工具来救活(救砖可看文末)

2.1. 材料准备

首先是要下载适合X96 Max Plus的系统,这里直接从ArmBian的官网地址下载

我选择的是Armbian_20.10_Arm-64_buster_current_5.9.0.img.xz,如果需要桌面可选择带Desktop字眼的版本

X96 Max Plus这个机器的ArmBian系统存在2个问题,一个是网卡驱动,一个是Bootloader有问题

所以我们需要给下载的ArmBian系统引入3个文件来解决这个问题,三个文件分别是

  • meson-sm1-x96-max-plus-100m.dtb
  • meson-sm1-x96-max-plus.dtb
  • hk1box-bootloader.img

可根据上述文件名自行Google获取下载地址,若找不到,也可从下列链接中获得

2.2. 制作U盘镜像

需要的文件准备妥善之后,我们就可以制作启动U盘了,首先将Armbian_20.10_Arm-64_buster_current_5.9.0.img.xz解压,然后写入U盘

xz -d Armbian_20.10_Arm-64_buster_current_5.9.0.img.xz
sudo dd if=Armbian_20.10_Arm-64_buster_current_5.9.0.img of=/dev/sdb status=progress

如果您是Windows操作系统,可以使用rufus/imagewrite等工具写入U盘

写入完成后,弹出U盘后重新插入U盘,因为刷入后需要为我们的设备定制化修改镜像

Boot分区

打开Boot分区,将 “u-boot-s905x2-s922”文件重命名成 “u-boot.ext”

sudo mv u-boot-s905x2-s922 u-boot.ext

打开BOOT分区->dtb文件夹->amlogic文件夹,将 “meson-sm1-x96-max-plus-100m.dtb” 和 “meson-sm1-x96-max-plus.dtb”文件放入内

sudo mv ~/Downloads/meson-sm1-x96-max-plus-100m.dtb ~/Downloads/meson-sm1-x96-max-plus.dtb /mnt/boot/

打开BOOT分区->extlinux文件夹->extlinux.conf文件,全量替换为以下内容即可

LABEL Armbian
LINUX /zImage
INITRD /uInitrd
FDT /dtb/amlogic/meson-sm1-x96-max-plus-100m.dtb
APPEND root=LABEL=ROOTFS rootflags=data=writeback rw console=ttyAML0,115200n8 console=tty0 no_console_suspend consoleblank=0 fsck.fix=yes fsck.repair=yes net.ifnames=0

ROOTFS分区

打开ROOTFS分区->root文件夹,将hk1box-bootloader.img放入内

到这里我们需要的U盘镜像制作完成了

2.3. 替换bootloader

我们提前插入U盘到X96 Max Plus中,要引导到U盘启动,有两种方法

方法1

  • 打开X96 Max Plus的设置,打开开发者选项,允许usb调试
  • 连接机器的网线(Wifi也可,但重启到U盘之后是没有Wifi的,所以建议还是用网线操作)
  • 使用adb进行网络调试,指令如下

    adb connect 192.168.1.100
      adb shell
      su
      reboot update
    

方法2

  • 断开电源,找一根牙签
  • 戳中AV孔,里面有一个小按钮,戳中按钮后接入电源
  • 看到启动画面即可松开

等待漫长的开机加载后,第一次启动要求输入Root用户的密码,请自行设置密码

2.4. 写入bootloader

启动成功后,我们需要刷入事先准备好的Bootloader

dd if=/root/hk1box-bootloader.img of=/dev/mmcblk2 bs=1 count=442
dd if=/root/hk1box-bootloader.img of=/dev/mmcblk2 bs=512 skip=1 seek=1
sync
shutdown now

然后等待关机,关机之后断开电源,拔出U盘,将U盘插入PC中,再次修改BOOT分区中->extlinux文件夹->extlinux.conf文件,全量替换为以下内容即可

LABEL Armbian
LINUX /zImage
INITRD /uInitrd
FDT /dtb/amlogic/meson-sm1-x96-max-plus.dtb
APPEND root=LABEL=ROOTFS rootflags=data=writeback rw console=ttyAML0,115200n8 console=tty0 no_console_suspend consoleblank=0 fsck.fix=yes fsck.repair=yes net.ifnames=0

PS:其实我这里不太明白 “meson-sm1-x96-max-plus-100m.dtb” 与 “/dtb/amlogic/meson-sm1-x96-max-plus.dtb”的区别,一开始加载/dtb/amlogic/meson-sm1-x96-max-plus.dtb应该也是可行的,欢迎同学尝试一下

修改完成后保存,然后弹出U盘,插入X96 Max Plus中,无需再按AV孔,直接插入电源即可

2.5. 更换网卡驱动并写入系统

启动之后,直接运行刷写系统的脚本即可

bash /root/install-aml.sh

3. 简单初始化

安装完成后,使用SSH进入系统,更新操作系统

sudo apt update

3.1. Oh-My-Zsh

安装ZSH并切换到Oh-My-Zsh

sudo apt install zsh
chsh -s /bin/zsh
wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh
bash ./install.sh

3.2. Docker + Openwrt

Openwrt算是这种盒子的绝配,但ARM的虚拟化比较麻烦,所以退一步讲使用Docker做Openwrt也是可以的,只是不能使用我之前编译的Leda大的Openwrt版本了,可以使用第三方编译好的Openwrt Docker版本

  • unifreq/openwrt-aarch64
  • buddyfly/openwrt-aarch64
  • p3terx/openwrt-mini

首先是安装Docker

curl -fsSL https://get.docker.com -o get-docker.sh
bash get-docker.sh --mirror Aliyun

安装Openwrt之前需要做一些网络环境的准备工作,这里假设我的网络环境信息如下

  • X96 Max Plus IP:192.168.1.10/24
  • 主路由器IP:192.168.1.1/24
  • OpenwrtIP:192.168.1.100/24
  • Openwrt Docker虚拟网卡名称:macvlan

注意:以下配置是根据上面列出的网络信息进行配置的,您需要参考自己的网络环境自行配置

那么首先配置X96 Max Plus的静态IP

sudo vim /etc/network/interfaces


source /etc/network/interfaces.d/*

# Wired adapter #1
allow-hotplug eth0
no-auto-down eth0
#iface eth0 inet dhcp
iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.11.1
dns-nameservers 223.5.5.5
#       hwaddress ether # if you want to set MAC manually
#       pre-up /sbin/ifconfig eth0 mtu 3838 # setting MTU for DHCP, static just: mtu 3838


# Wireless adapter #1
# Armbian ships with network-manager installed by default. To save you time
# and hassles consider using 'sudo nmtui' instead of configuring Wi-Fi settings
# manually. The below lines are only meant as an example how configuration could
# be done in an anachronistic way:
# 
#allow-hotplug wlan0
#iface wlan0 inet dhcp
#address 192.168.0.100
#netmask 255.255.255.0
#gateway 192.168.0.1
#dns-nameservers 8.8.8.8 8.8.4.4
#   wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
# Disable power saving on compatible chipsets (prevents SSH/connection dropouts over WiFi)
#wireless-mode Managed
#wireless-power off

# Local loopback
auto lo
iface lo inet loopback

打开X96 Max Plus的网卡混杂模式,然后在Docker中创建Openwrt的网卡

sudo ip link set eth0 promisc on
sudo docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=eth0 macnet

查看创建结果

➜  ~ sudo docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
8fdad37c414a   bridge    bridge    local
692be2914400   host      host      local
e6aeaf2d3d0e   macnet    macvlan   local
d7f7cea61064   none      null      local

现在可以拉取Openwrt的镜像并运行Openwrt了,这里使用 buddyfly/openwrt-aarch64 的Openwrt的镜像

sudo docker pull buddyfly/openwrt-aarch64
sudo docker run --restart always --name openwrt-aarch64 -d --network macnet --privileged buddyfly/openwrt-aarch64:latest

注意:第三方Openwrt镜像有安全问题,请自行注意网络安全

运行之后我们需要修改Openwrt的IP

docker exec -it openwrt sh
vi /etc/config/network

config interface 'lan'
        option type 'bridge'
        option ifname 'eth0'
        option proto 'static'
        option ipaddr '192.168.1.100'
        option netmask '255.255.255.0'
        option ip6assign '60'
        option gateway '192.168.1.1'
        option broadcast '192.168.1.255'
        option dns '192.168.1.1'

重启Openwrt网卡

/etc/init.d/network restart

访问 http://192.168.1.100 ,如果配置没有问题,可以看到Openwrt的登录界面,后续如何配置单臂路由可以参考网上文章(把网关改成192.168.1.100即可实现单臂路由)

4. 救砖

如果您不幸刷入失败,可能会遇到机器无法正常启动,如开机画面闪烁,无法正常引导到U盘中,那么我们就需要刷入出厂固件,那么您需要有如下设备

固件的IMG必须放在盘符根目录下面,大概是不能有中文的缘故,刷机步骤如下

  1. 打开Usb Burning Tool,选择file->import image导入我们下载的固件
  2. 选择擦除flash/擦除Bootloader,然后点Start,软件会等待接入设备
  3. Type-c接入PC,USB接入X96 Max Plus,然后给接入电源会自动开始刷机

刷完机器之后即可重头再来

吐槽:ARM设备相对就是折腾

5. 引用

参考如下

阅读: 36
分类: 杂锦记录
创建时间: 2021-09-05 01:26:20
更新时间: 2021-09-05 22:12:58
博文目录

[[replyMessage== null?"发表评论":"@" + replyMessage.m_author]]

account_circle
email
web_asset
textsms

评论列表([[messageList.data.items.length]])

[[messageItem.m_author]] [[messageItem.m_author]]
[[messageItem.create_time]]
[[messageItem.m_environ.browser]] [[messageItem.m_environ.os]] [[messageItem.m_environ.device]]
[[subMessage.m_author]] [[subMessage.m_author]] @ [[subMessage.parent_message.m_author]] [[subMessage.parent_message.m_author]]
[[subMessage.create_time]]
[[subMessage.m_environ.browser]] [[subMessage.m_environ.os]] [[subMessage.m_environ.device]]