Banana Pi R64 Лучший роутер для OpenWrt, или нет?
Здравствуйте меня зовут Дмитрий и сегодня я сделаю обзор на одноплатный компьютер Banana Pi R64. Мы узнаем как установить на него OpenWrt, а также как собрать самому прошивку под этот компьютер.
Итак на Хабре уже есть обзор на этот компьютер вот он, но там автор в качестве ОС использует Armbian. Я попробовал данную ОС, а также Debian и пришел к выводу что нет лучшей ОС для создания роутера чем OpenWrt, вот причины:
1) На OpenWrt сеть настраивается автоматически без какого-либо участия с вашей стороны. На Debian и Armbian нужно самому настраивать сеть, через конфигурационные файлы.
2) Веб интерфейс на OpenWrt заточен под управление роутером. На Debian и Armbian тоже есть веб интерфейсы (Webmin и т.д.), но они заточены под общее управление сервером.
3) Из плюсов Debian и Armbian можно отметить более простую файловую систему, которая отображается как есть. В то время как у OpenWrt очень сложная файловая система. Состоящая из нескольких точек монтирования, некоторые из которых имеют атрибут только чтение.
Как установить OpenWrt
Данная инструкция взята с официального форума Banana PI: forum.banana-pi.org/c/Banana-Pi-BPI-R2
Для установки OpenWrt вам понадобится:
1) Микро sd карта
2) Enternet кабель
3) Usb-Uart переходник
4) Win32 Diskimager sourceforge.net/projects/win32diskimager/files/Archive
5) TFTP сервер tftpd32.jounin.net/tftpd32_download.html
6) Putty
7) Sd образ для карты drive.google.com/file/d/1Ap7lt-pjpG-pAOAEqpH13-SMOSkRkZI0/view
8) Img образ который вы зальёте во внутреннею память устройства drive.google.com/file/d/1w8kO3klbPfdHK6lTI8Ub8sR_7ViISORM/view
9) Прелодер который нужен для загрузки этого образа drive.google.com/file/d/1Fy__GpNSWRcITEmzH4Z_jxnjrCS3BpQJ/view
Порядок действий:
1) Заливаете sd образ на sd карту
2) Подключаете Usb-Uart переходник к соответствующим контактам на плате, заходите в Putty и подключаетесь к Com порту, скорость передачи данных 115200. Какой именно Com порт вам нужен можно посмотреть в диспетчере устройств обычно это COM4.
3) Вставляете карту в Banana PI и включаете её.
4) В U-boot меню выбираете «b. System Load flashimage then write to Flash via TFTP» (TFTP сервер должен быть включен. Файл образа должен быть помещён в одну папку с TFTP сервером. В настройках сетевой карты надо задать IP адрес и Основной шлюз).
5) После прошивки возвращаемся в U-Boot меню командой bootmenu и опцией »7. System Load Preloader then write to Flash via TFTP» заливаем прелодер (Этот файл тоже должен лежать в папке с TFTP сервером).
6) Перезагружаем роутер и видим OpenWrt. U-boot меню теперь доступно без SD карты, теперь оно всегда будет на 3 секунды появляться при загрузке.
К сожалению образ который мы залили на устройство очень старый. Поэтому на него например нельзя установить дополнительные приложения (пакеты).
Где взять OpenWrt?
Надо сказать что на момент написания данной статьи нет стабильной версии OpenWrt для Bpi-R64. Есть поддержка данного устройства в ветке разработчиков, но на данный момент совместимость не полная. То есть, вы можете загрузить initramfs образ и он будет работать. Но этот образ создан для ознакомления с OpenWrt, он существует только в оперативной памяти и после перезагрузки устройства, все настройки, а также установленные приложения будут утеряны. Sysupgrade образ на данный момент нерабочий, и если вы его установите, то устройство просто будет постоянно перезагружаться.
Поэтому единственный способ получить рабочий sysupgrade образ это собрать его самому, используя патчи с официального форума Banana PI.
Я уже произвел сборку образа OpenWrt от 16 апреля 2020. Вот этот образ образ
Он включает в себя:
1) Transmission с веб итерфейсом
2) Ntfs-3G драйвер подробности здесь
3)Samba
4) mc, nano, htop и другие утилиты
Чтобы установить данный образ надо зайти в U-boot меню и выбрать опцию: 2) System Load Linux Kernel then write to Flash via TFTP.
Но если вы хотите собрать собственный образ, то вот как это сделать.
Как собрать работающий OpenWrt образ
Поскольку процесс сборки и подготовки к ней очень объемный, то описывать я буду лишь основный моменты.
1)Для сборки вам понадобится виртуальная машина и образ Linux. Как их подготовить и где достать описано здесь. Хочу заметить что в настройках виртуальной машины обязательно укажите количество ядер вашего процессора (по умолчанию там стоит 1). Сборка ядра процесс очень долгий, а на одном ядре она будет ещё дольше.
2) После этого нужно скачать исходники с Git как это сделать описано здесь. Надо остановится на команде make menuconfig
3) Заходите в файл openwrt/target/linux/mediatek/makefile и меняете номер ядра с 5.4 на 4.19. Собрать образ OpenWrt на ядре 5.4 в данный момент невозможно.
4) make menuconfig выбираем Target→Mediatck Arm, Subtarget→ mt7622, Profile→Banana Pi R64. Также можно выбрать необходимые вам дополнительные пакеты. После чего выходим с сохранение.
5) make defconfig не знаю зачем, но эту команду всегда делают.
6) make kernel_menuconfig -j5 число после j рассчитывается как количество ядер вашего процессора плюс один (у меня процессор четырех ядерный).
7) После получаса ожиданий, появится меню конфигурации ядра здесь, нужно задать вот эти опции:
«Device Drivers»-->«Memory Technology Device (MTD) support»-->«Command line partition table parsing»
«Device Drivers»-->«Memory Technology Device (MTD) support«Self-contained MTD device drivers»-->«MTD using block device»
«Device Drivers»-->«MMC/SD/SDIO card suport»→«MMC block device driver»
8) Берете вот этот патч и копируете его сюда: openwrt/target/linux/mediatek/patches-4.19. Я хочу заметить что у меня этот патч постоянно вызывал ошибки компиляции. Поэтому я просто руками скопировал строки из него в файл mt7622-bananapi-bpi-r64.dts который лежит здесь: openwrt/linux/mediatek/files-4.19/arch/arm64/boot/dts/mediatek
9) make -j5
10) После компиляции в папке bin будет лежать файл openwrt-mediatek-mt7622-bpi_bananapi-r64-squashfs-sysupgrade.bin который вы сможете прошить через u-boot меню опция: 2) System Load Linux Kernel then write to Flash via TFTP.
Вывод
Banana Pi очень спорное устройство. Высокая производительность в нем сочетается с безобразной поддержкой со стороны разработчиков. Официальной прошивки нет, а поддержка со стороны сторонних разработчиков так себе. Но все же это очень мощный роутер с 5 гигабитными портами, гигабайтом оперативной памяти, и быстрым двухядерным процессором. То есть тут нет такого как на обычном роутере, когда ты поставил Transsmison на закачку и роутер весь пыхтит скрипит как будто сейчас помрет. Здесь работа Transmission ни как не сказывается на отзывчивости устройства.
Также стоит отметить что устройство продается без корпуса. Поэтому корпус придется делать самому. Но если у вас есть 3D принтер то это не проблема вот мой вариант
Файлы
1) Мой билд прошивки
2) Настройки для menu config из моего билда
3) Корпус для Banana Pi R64 на thingiverse