Если инфорация оказалась интересна и/или полезна, не побрезгуйте, оставьте комментарий ;)

пятница, 4 февраля 2022 г.

Первый запуск Banana PI M5. Установка Ubuntu Server 20.04

Долгое вступление

Медленно продвигаюсь со своей идеей мониторинга жилплощади. Первая статья - "Чем прошить Zigbee-контроллер на Mac OS". Приехала ко мне от Алика Banana PI M5. Хотел купить Raspberry PI 4. Но за нормальную цену ее не взять. При цене у производителя за модель 4 ГБ в районе 4 тыс., ни в России, ни на Алике дешевле 10-11 тыс ее не найти. Поэтому решил рискнуть и взять китайский аналог. Если интересно, брал тут. Приехало в плотной картонной коробке, в которой уже лежала родная упаковка. Кроме самой платы ничего в комплекте не приходит. Сравнение с Raspberry можно посмотреть тут.

Какие особенности надо иметь в виду:

  • Она китайская
  • Сообщество меньше, чем у Raspberry
  • Есть встроенный накопитель на 16 ГБ (удобно, но из-за него танцы с бубном
  • Нет Wi-Fi
  • Объем оперативной памяти - 4 ГБ
  • Есть технологические кнопки и есть кнопка Reset (удобно)

Что потребуется для запуска:

  • Сама плата
  • Компьютер, желательно с Linux или Mac OS
  • MicroSD на 8-16 ГБ
  • Флешка USB на 4 ГБ и более
  • Блок питания с кабелем USB-C
  • Монитор с кабелем HDMI
  • DHCP-сервер с доступом к его списку выданных IP-адресов. Это может быть, например, домашний роутер
  • Немного терпения
  • Знание английского, если моей статьи будет недостаточно
  • Пиво

У проекта есть неплохая Вики. В целом ее и базовых знаний Linux достаточно. Но, как мне показалось, аппаратная часть в ней описана заметно подробнее программной:)


В поисках образа

Немного об особенностях. Так как плата имеет внутренний накопитель, то он имеет приоритет надо USB и microSD. Как я понял, плата приходит с неким загрузиком, записанным на внутренний накопитель, причем, этот загрузчик для Андроида. Если он не находит ОС на внутреннем накопителе, то он ищет на внешних (microSD). Но он не умеет грузить флешки, прошитые стандартными образами ОС. Я пробовал флешки с RaspberryOS и Ubuntu. Поэтому для первого запуска подходят только "родные" образы.

С их закачкой я промучился долго. Заказчка постоянно обрывалась. Интернет у меня хороший, дело в чем-то другом: в настройке сервере, в большой нагрузке, не знаю... Пробовал я с разных компьютеров, разными браузерами. Safari вообще отказался открывать страницу репозитория. В виде жеста отчаяния я решил попробовать wget. И о чудо, это сработало. При каждом обрыве связи ему удавалось начать заказчку с места обрыва. Иногда он писал, что начал качать с нуля, но потом перескакивал на нужное место. И так за 15 обрывов он файл с ОС выкачал. Поэтому не теряйте время с браузерами, сразу качайте через wget. Точнее не совсем так. Вам нужна ссылка на файл (если приведенная ниже "сломается"). Поэтому пытаемся один раз скачать браузером.

Из меню закачек копируем настоящую ссылку на файл.
подставляем ее во wget:
wget -v https://download.banana-pi.dev/seafhttp/files/129e07cc-8452-40da-8ac3-36b55dbbd506/2021-06-21-ubuntu-20.04-server-bpi-m5-m2pro-aarch64-sd-emmc.img.zip

Рекомендую проверить контрольную сумму скаченного файла. Контрольная сумма в выводе команды должна сойтись с той, что написана в файле с расширением ".md5", лежащем в репозитории рядом с архивом, например, 2021-06-21-ubuntu-20.04-server-bpi-m5-m2pro-aarch64-sd-emmc.img.zip.md5

  • Mac OS
    md5 2021-06-21-ubuntu-20.04-server-bpi-m5-m2pro-aarch64-sd-emmc.img.zip
  • Linux
    md5sum 2021-06-21-ubuntu-20.04-server-bpi-m5-m2pro-aarch64-sd-emmc.img.zip

Теперь разворачиваем образ на microSD. Я использовал программу balenaEtcher.

А еще архив образа ОС копируем USB-флешку. Она понадобится позже.

Ставим ОС

Всё, теперь вставляем microSD в плату, подключаем монитор, проводную сеть и питание платы. Должна загореться красная лампочка, а синяя начать мигать с частотой раз в секунду. Если обе лампочки горят постоянно, и ничего не происходит на экране, значит система не может загрузиться microSD. У меня так было с неродными образами ОС.

Если этот этап пройден успешно, ждем, когда система загрузится У меня загрузка надолго останавливалась на пункте Amlogic A/V streaming port init.

Учетная запись на Ubuntu: pi/bananapi. На DHCP-сервере надо найти, какой IP-адрес был выдан нашей плате.

Следующим этапом надо прошить образ ОС на внутренний накопитель. Я использовал SSH для настройки ОС. Но можно пользоватья и локальной клавиатурой.

  1. На сервере запущена служба unattended-upgrades. Ее надо остановить и удалить, так как она будет блокировать менеджер пакетов apt, и не даст установить нужные утилиты:
    pi@ubuntu:~$ systemctl status unattended-upgrades.service 
    ● unattended-upgrades.service - Unattended Upgrades Shutdown
         Loaded: loaded (/lib/systemd/system/unattended-upgrades.service; enabled; vendor preset: enabled)
         Active: active (running) since Sat 2020-12-12 11:01:31 UTC; 1 years 1 months ago
           Docs: man:unattended-upgrade(8)
       Main PID: 2433 (unattended-upgr)
          Tasks: 2 (limit: 3839)
         Memory: 10.1M
         CGroup: /system.slice/unattended-upgrades.service
                 └─2433 /usr/bin/python3 /usr/share/unattended-upgrades/unattended-upgrade-shutdown --wait-for-signal
    
    Dec 12 11:01:31 ubuntu systemd[1]: Started Unattended Upgrades Shutdown.
    
    pi@ubuntu:~$ sudo systemctl stop unattended-upgrades.service
    pi@ubuntu:~$ sudo apt purge unattended-upgrades
                    
  2. Вставляем USB-флешку с образом ОС. Смотрим подключенные устройства:
    pi@ubuntu:~$ lsblk -a
    NAME         MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    loop0          7:0    0 48.5M  1 loop /snap/core18/1883
    loop1          7:8    0 63.6M  1 loop /snap/lxd/16103
    loop2          7:16   0   26M  1 loop /snap/snapd/8543
    loop3          7:24   0 37.6M  1 loop /snap/snapd/14553
    loop4          7:32   0   49M  1 loop /snap/core18/2289
    loop5          7:40   0 57.5M  1 loop /snap/core20/1332
    loop6          7:48   0 60.7M  1 loop /snap/lxd/21843
    loop7          7:56   0        0 loop 
    sda            8:0    1  7.5G  0 disk <- USB-флешка
    └─sda1         8:1    1  7.5G  0 part 
    mmcblk0      179:0    0 14.6G  0 disk <- встроенный накопитель
    mmcblk0boot0 179:32   0    4M  0 disk 
    mmcblk0boot1 179:64   0    4M  0 disk 
    mmcblk0rpmb  179:96   0    4M  0 disk 
    mmcblk1      179:128  0 29.7G  0 disk <- microSD
    ├─mmcblk1p1  179:129  0  256M  0 part /boot/firmware
    └─mmcblk1p2  179:130  0 29.4G  0 part /
                    
    Создаем точку монтирования (каталог):
    pi@ubuntu:~$ ls /media/
    pi@ubuntu:~$ sudo mkdir /media/usb-flash
    Монтируем USB-флешку. Проверяем, что архив образа ОС на месте.
    pi@ubuntu:~$ sudo mount /dev/sda1 /media/usb-flash/
    pi@ubuntu:~$ ls /media/usb-flash/
    2021-06-21-ubuntu-20.04-server-bpi-m5-m2pro-aarch64-sd-emmc.img.zip
  3. Ставим нужные приложения
    pi@ubuntu:~$ sudo apt install unzip pv
  4. Переходим в root'a. Конвейером распаковываем архив и записываем его содержимое на внутренний накопитель:
    pi@ubuntu:/media/usb-flash$ sudo su
    root@ubuntu:/media/usb-flash# unzip -p ./2021-06-21-ubuntu-20.04-server-bpi-m5-m2pro-aarch64-sd-emmc.img.zip | pv |dd of=/dev/mmcblk0 bs=10M status=noxfer
    ^[[C6.55GiB 0:02:27 [53.6MiB/s] [                                                                                        <=>   7.12GiB 0:02:37 [46.2MiB/s] [                                                                              <=>                ]
    0+112926 records in
    0+112926 records out
    
  5. Гасим плату, вынимаем из нее USB-флешку и microSD.
    root@ubuntu:/media/usb-flash# shutdown -h now
  6. Включаем плату. Должна пойти загрузка с внутреннего накопителя с долгой остановкой на Amlogic A/V streaming port init. Красная лампочка горит постоянно, а синяя мигает с частотой 1 Гц.
  7. После входа в систему, удаляем unattended-upgrades (см. выше) и обновляем ОС.
    pi@ubuntu:~$ sudo apt update
    pi@ubuntu:~$ sudo apt dist-upgrade

Готово!

Комментариев нет: