У меня дома опрометчиво появился новый зверек - TerraMaster F4-210, модель с 2Гб памяти за $260 на SoC Realtek1296 - arm64. И я решил его начать использовать. Использовать - это значит сделать цифровым сердцем дома - поставить dhcp/dns/tor, homeassistant, vpn и прочие радости NAS - transmission, dlna, aria2.
Но вот незадача - не получается. Там сейчас стоит OpenWrt 15.05 + кастомный linux kernel 4.4.18. Для использования моего zigbee stick cc2531 понадобился новый модуль ядра - cdc-acm. Для использования wireguard vpn нужен либо модуль ядра tun (если запускать wireguard в user space) либо собственный модуль wireguard. cdc-acm я с грехом пополам как-то собрал. Не совсем правильно - модуль грузится и отображается в lsmod со статусом [permanent], что говорит о том, что у него не реализована функция выгрузки. tun грузиться и работать нормально не захотел. Я подозреваю, что проблема в неправильной конфигурации ядра при сборке модуля. Но правильной конфигурации у меня нет :(. Хотя исходники есть - на официальном сайте.
Все, что нашел по аппарату сложил сюда.
Сначала я попытался собрать инфу с рабочей платы:
- uname, openwrt version, kernel arg
- kernel params
- lsblk
- lspci
- lsusb
- mtd map
- mtd dump
- opkg packages
- proc devices
- proc device tree
- firmware, с помощью которого можно восстановить убитый NAS после неудачного обновления как написано на официальном форуме - через USB
- php7-all.tar - архив PHP Web UI, идет на флешке, вставленной в USB 2.0 разъем платы.
- Последняя прошивка - TOS_A1.0_Install_ARM4.2_4.2.12_2104281637_2104281658.ins - вся файловая система NAS
И в общем я решил попробовать накатить туда ubuntu или другой линукс.
Есть очень сильно похожая плата - Banana Pi BPI-W2 на таком же процессоре. Там есть описанная возможность установить разные линуксы, в том числе ubuntu и openWrt. На моей плате есть uart (такой же порт как в TV Box Zidoo-X9S - TX и RX можно подключить с разъема, а землю с любого места платы, поскольку uart разъем на плате - jst с шагом 2мм немного маловат для подключения трех стандартных монтажных проводов). С uart терминалом можно войти либо в SPI prompt (d/g/r> prompt, если зажать ctrl+q в uart терминале перед включением платы), либо в uboot (Realtek> prompt, если предварительно зажать Esc в uart терминале перед включением платы), либо в сам OpenWrt Linux, если ничего не нажимать.
Далее попробовал загрузить ядро. Поскольку scsi в данной сборке uboot судя по всему нет, то ядро грузил с USB поскольку перепрошивать eMMC не пока сыкотно. Ну, допустим, я знаю параметры загрузки текущего ядра OpenWrt: `rdinit=/sbin/init mtdparts=RtkSFC:128k(factory),512k(uboot),320k(logo),1408k(afw),64k(dtb),7680k(kernel),5632k(initrd) earlycon=uart8250,mmio32,0x98007800 console=ttyS0,115200 loglevel=7 U-boot=2015.07 (Nov 27 2019 - 14:31:13)`
device-tree есть с рабочей системы - см. mtd map, mtd dump выше. Больше всего на мой взгляд похож 'NVR_18/linux-4.4.18/arch/arm64/boot/dts/realtek/rtd-1296-saola-2GB-HDMI.dts' из исходников. С некоторыми изменениями - там разные bootargs, initrd-start, end, и другие параметры. Может они как-то динамически меняются во время сборки OpenWrt.
Сделал дампы uart:
- plain1.cap.txt - простая загрузка
- spi.cap.txt - вход SPI prompt (если зажать ctrl+q в uart терминале перед включением платы)
- ubuntu4.cap.txt - безуспешная попытка загрузки другого ядра (предварительно зажать Esc в uart терминале перед включением платы для входа в uboot console - Realtek>)
- ubuntu2-bootm.cap.txt - безуспешная попытка загрузить ядро через комманду uboot `bootm`
На форуме Armbian нашел похожий тред по запуску Armbian на похожем железе, запустил примерно так:
Realtek> fatload usb 0:1 $kernel_loadaddr uimagereading uimage10630032 bytes read in 667 ms (15.2 MiB/s)Realtek> fatload usb 0:1 $fdt_loadaddr tm_f4-221.dtbreading tm_f4-221.dtb65536 bytes read in 32 ms (2 MiB/s)Realtek> env set bootargs earlycon=uart8250,mmio32,0x98007800 console=ttyS0,115200 noinitrd root=/dev/sda1 rootfs=vfatRealtek> bootm $kernel_loadaddr - $fdt_loadaddrWrong Image Format for do_booti commandERROR: can't get kernel image!