为RB5009UG刷入OpenWrt

刷写过程中使用了多台设备,无截图记录,仅作为经验分享。
0. 前沿⌗
RB5009UG目前属于OpenWrt官方支持的设备,主要得益于RouterOS v7.19终于修复了对第三方固件的启动支持,因此在按照本博文整理的方案对RB5009UG进行刷写时,需要先确认路由器已经升级到了RouterOS v7.19以上。本文的主要思路来自于官方Wiki-RB5009UG-S-IN专页 以及官方Wiki-Mikrotik通用。
1. 准备所有文件⌗
前往OpenWrt Table of Hardware,搜索RB5009,获取最新的Installation Firmware与Upgrade Firmware,其中Installation Firmware的文件结尾为.itb
,Upgrade Firmware的文件结尾为.bin
。随后,前往OpenWrt Snapshots 下载为RB5009UG定制的U-boot固件,文件名为u-boot.elf。最后,下载维护者推荐的可启用设备UART的改版RouterBOOT:https://public.robimarko.eu/RB5009/70x0-7.15-uart.fwf。
2. 准备环境⌗
在一台拥有RJ45网口并且可以网线直连到RB5009UG的Windows设备上,确保已经下载了winbox,然后下载erwan2212/tinypxeserver提供的pxesrv.zip。然后将Windows设备的网口IPv4地址设置为192.168.88.10/24。在Windows搜索高级安全Windows Defender防火墙,临时关闭所有域下的防火墙。解压pxesrv.zip并启动主程序,接口选择修改过地址的网卡。在下方启动文件中,选择之前下载的u-boot.elf文件,并确保第1步下载的.itb
文件和u-boot.elf位于同一目录中,注意.itb
的文件名必须是openwrt-mvebu-cortexa72-mikrotik_rb5009-initramfs-uImage.itb
,即Snapshot版固件的文件名,如果你希望使用Release固件,则将文件重命名,去除其中的版本号。
3. 配置路由器从BOOTP启动⌗
打开WinBox,通过扫描neighbor并点击MAC地址的方式连接到路由器,打开Terminal,运行/system/device-mode/print
,确认自己的routerboard
项是否为no
(一般都是no
),如果是的话,则运行/system/device-mode/update routerboard=yes
,并按提示重启路由器完成修改。
重启后,重新进入WinBox Terminal,运行如下三条命令:
/system routerboard settings set protected-routerboot=disabled
/system routerboard settings set boot-device=try-ethernet-once-then-nand
/system routerboard settings set boot-protocol=bootp
RouterOS将在下次启动时尝试BOOTP方式网络启动。
4. 准备网络启动⌗
将PC的网线接入ether1,在Tiny PXE Server中确保网卡选择正确,文件选择正确,然后点击最上方的Online。如果你不希望DHCP混乱的话,同时拔掉RB5009UG上其它所有网线,然后对路由器进行重启。需要注意的是,Wiki中说部分设备需要/system shutdown
后手动插拔电源线才能进入网络启动,实测RB5009UG只需要/system reboot
即可。
路由器重启后,你应当可以在Tiny PXE Server的日志中看到路由器先请求了u-boot.elf
文件,然后请求了openwrt-mvebu-cortexa72-mikrotik_rb5009-initramfs-uImage.itb
文件。等待数分钟,你可以在两个文件都传输完成并等待一分钟后,向路由器的其它接口插入一个网络设备,观察该接口的LED闪烁模式,如果接口ACT灯快速闪烁,则说明OpenWrt可能已经启动完成。
5. 进入OpenWrt⌗
将你的Windows设备网卡地址修改回DHCP,观察能否获取192.168.1.0/24段的地址,随后进入192.168.1.1即可,身份为OpenWrt默认的root/<无密码>
。
6. 完成正式刷写⌗
目前RB5009UG的OpenWrt运行于内存中,需要继续完成一系列操作使得系统刷入内置Flash与NAND中。在刷写前,请先插回自己的SFP+模块(如果有),确认模块在OpenWrt下被兼容。
首先,将70x0-7.15-uart.fwf
、u-boot.elf
与.bin
文件拷贝到OpenWrt /tmp
目录中,由于OpenWrt不自带SFTP子系统,可以尝试使用HTTP文件传输或者SCP。后面直接按照原文步骤进行安装,这里给出博文编写时原文给出的命令:
Run: mtd erase RouterBOOT-primary
Run: mtd write /tmp/70x0-7.15-uart.fwf RouterBOOT-primary
Run: . /lib/functions.sh
Run: yafut -d /dev/mtd$(find_mtd_index "YAFFS") -w -i /tmp/u-boot.elf -o kernel -T
Run: ubiformat /dev/mtd$(find_mtd_index "ubi") -y
Run: sysupgrade /tmp/openwrt-mvebu-cortexa72-mikrotik_rb5009-squashfs-sysupgrade.bin
(文件名自己修改)
运行sysupgrade
命令后,SSH连接会断开,这是正常现象。
7. (可选)安装一些kmod模块⌗
如果你需要使用一些AES相关的应用,可以选择性安装kmod-crypto-*
的相关包,否则系统默认不支持处理器的AES硬件加速。另外虽然RB5009UG的主处理器Armada 7040带有一组独立的硬件加解密模块SafeXcel,并且可以通过特定的kmod启用部分支持,但是大部分Go编写的代理应用都无法使用该模块,因此无需在意。