Debian+Proxmox 7 на Orange Pi 5

Купил я себе пару Orange PI 5B. Показалось, что вайфай это очень хорошо. Памяти много, хочу на них накатить разного. Но не хочется постоянно все переставлять и вообще жажду удобства. В итоге поискал и нашел, что Proxmox позволяет сделать фермочку с виртуалками и потом их сносить. Мне идея сразу понравилась, памяти на девайсе много, можно порезать на виртуалки и куда поставить k3s, куда еще что. Собственно порядок установки я и опишу.

Для начала на этой версия железки нет m2 слота для подключения ssd, так что он подключен снаружи в usb3 порт. Просто купил портативный ссд диск, попутно пожалев, что не дождался выхода версии где и вафля есть и m2, но пойдет для моих скромных задачек. То есть мне нужно что бы загрузка была с emmc (впаян в плату), там должен загрузчик стоять, а ОС должна быть на SSD, который воткнут в USB3 порт. Потому как износить emmc впаянный не хотелось бы.

Поставить ОС на SD карточку и грузить, и даже поставить на SD карту и грузить с USB-SSD не сложно вроде бы, это дефолтные установщики умеют (не вышло, но я не старался), мы не ищем легких путей. Значит надо поставить загрузчик, который умеет сразу с emmc зацепить USB-SSD. Такой загрузчик называется EDK II (мне он понравился среди альтернатив тем, что позволяет свободно грузится откуда угодно). Далее порядок установки загрузкичка, который из всех сработал. На основе вот этой доки https://wiki.radxa.com/Rock5/install/rockchip-flash-tools я собрал rkdeveloptool это прошивалка emmc, который распаян на борту orangepi 5b.

sudo apt-get install libudev-dev libusb-1.0-0-dev dh-autoreconf
может еще (см. доку) sudo apt-get install pkg-config libusb-1.0 

git clone https://github.com/radxa/rkdeveloptool.git
 cd rkdeveloptool
 autoreconf -i
 ./configure
 make
sudo cp rkdeveloptool /usr/local/bin/
sudo ldconfig
rkdeveloptool -vй 

Далее у нас есть тула, которая прямо с линукса может шить emmc без винды, что приятно. Далее на основе этой доки https://wiki.radxa.com/Rock5/install/spi я скачал загрузчик EDK2
отсюда зачиналку загрузки
https://dl.radxa.com/rock5/sw/images/loader/rock-5b/rk3588_spl_loader_v1.08.111.bin
Далее сам UEFI загрузчик
https://github.com/edk2-porting/edk2-rk3588/releases
Там для Orange 5b надо выбрать версию для Orange 5 просто.
https://github.com/edk2-porting/edk2-rk3588/releases/download/v0.9.1/orangepi-5_UEFI_Release_v0.9.1.img

Эти файлы нужно зашить в сам девайс после чего EDK2 умеет грузить и ОС и другие загрузчики откуда угодно. Мне надо что бы GRUB грузился, так привычнее. Перед шитьем надо перевести девайс в спец режим. Это делается по инструкции производителя (Orange Pi 5 User Manual) отсюда http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5B-32GB.html

Порядок действий таков:

  1. Нужно все отключить от девайса. И питание.

  2. Подключить только один usb порт. Причем строго определенный, к компу (см инструкцию пользователя стр. 41). Тот, который НЕ подает питания.
    55fe28614b38061a7f07d4c367678a28.png

  3. Нажать спец кнопку на нем недалеко от порта (см инструкцию пользователя стр. 41)
    03c03b99b8655aa208a8b532452d901a.png

  4. Далее подключить питание, у меня это тоже usb порт.

  5. Отпустить спец кнопку.

Я взял салфетку, через нее взял плату и довольно легко все сделал умудрившись ее не спалить. Эквилибрист хренов, подумал я в этот момент.

Когда девайс подключен к компу таким образом, он в режиме maskrom. Можно шить ранее скачанный файлы такими командами. Дока тут https://wiki.radxa.com/Rock5/install/spi

посмотреть на список девайсов подключенных и их maskmode режим проверить
sudo rkdeveloptool ld
sudo rkdeveloptool db /путь к файлу/orange/rk3588_spl_loader_v1.08.111.bin
sudo rkdeveloptool wl 0 /путь к файлу/orange/orangepi-5_UEFI_Release_v0.9.1.img 
rkdeveloptool rd

В итоге у вас на emmc окажется EDK II UEFI загрузчик, который при старте и подключенной клавиатуре позволяет в меню всякое крутить и надо будет накрутить. Нужно зайти в меню Device manager→Rockchip platform configuration→ACPI/Device tree и выбрать режим Device tree. Без этого дистры грузится не будут далее.

Следующим шагом нам надо достать дистр, который мы бы хотели поставить на SSD. Причем тут будет два этапа. Первый это базовый дистр, а второй установка на него Proxmox, который собран под arm64. Нашел самое простое. Официальный дистр от авторов Orange PI5. Причем для Proxmox 7 надо Debian Bullseye потому, что я выбрал самый простой способ установки скриптом Proxmox 7 отсюда https://github.com/pimox/pimox7

Итак дистр берем отсюда http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5B-32GB.html
После чего надо его залить на ssd диск. Проблема в том, что на этом дистре нет файлов, которые нужны что бы грузить его с UEFI загрузчика, нужен GRUB (мне, очень). Потому можно взять официальны Debian например debian-bookworm-live-arm64.hybrid.iso и с него взять две папки. Первая это папка EFI, собственно это загрузчик. Эту папку копируем на первый раздел SSD диска, который там после заливки на него официального образа будет. На компе своем я сделал

sudo mount /dev/sdX1 /mnt
и скопировал папку в /mnt с помощью 
sudo mc

Вторая папка, что нам нужна содержит файлы GRUB. Это папка /boot/grub, ее копируем на второй раздел, там папка boot уже есть, вот прям в нее. Этот раздел монтируется прямо в nautilus так что там я все и сделал. После чего надо отредактировать меню grub. Мудрить я не стал и просто в папке на SSD куда мы скопировали файлы отредактировал /boot/grub/grub.cfg руками. Нужно там написать следущее

set root=(hd0,gpt1)
linux /vmlinuz-5.10.160-rockchip-rk3588 root=/dev/sda2
initrd /initrd.img-5.10.160-rockchip-rk3588
boot

Это скажет GRUB где взять ядро и как его грузануть. Далее можно подключить по USB3 наш SSD к Orange PI5 и включить все это. Мы увидим загрузчик EDK2 (напомню мы уже настроили Device tree mode или можно это сделать теперь в EDK2). В нем надо в меню Boot Maintenace manager поставить вместо NONE наш SSD диск, что бы загрузка по умолчанию с него шла. Вообще можно без GRUB обойтись, но мне так привычнее. В итоге EDK2 будет искать на первом разделе в папке /EFI файлы GRUB, передаст им управление, а GRUB на втором разделе в папке /boot/grub найдет свои файлы и конфиги, стартанет ядро линукса. Можно в загрузчике выйти в корневое меню сказав да на все его вопросы сохранять ли изменения и нажать reset. Стартанет официальный Debian от авторов железки.

При первом старте надо будет подождать, так как дистр официальный поймет, что он на большом диске и свою файловую систему растянет на весь диск целиком, так что руками это делать не придется. Все, мы в консоли, пароль по умолчанию orangepi. Нам надо запустить скрипт установки Proxmox7

sudo -s
curl https://raw.githubusercontent.com/pimox/pimox7/master/RPiOS64-IA-Install.sh > RPiOS64-IA-Install.sh
chmod +x RPiOS64-IA-Install.sh
./RPiOS64-IA-Install.sh

Далее следуем инструкциям скрипта. Но есть одно но. После рестарта, когда скрипт доработает надо еще выполнить

systemctl restart networking

Без этого у меня сеть не стартанула. Обратите внимание, что вашей железке теперь выдан статический IP адрес. То есть на роутере вероятно надо его за ней закрепить. С момента рестарта я взял ноут, который подключен к той же сети и зашел на веб интерфейс Proxmox7
https://192.168.1.130:8006

Сами виртуалки я пока не крутил, пока не забыл решил записать как таки до консоли добраться этого Proxmox7. Но подозреваю работать все будет, как принято на arm пока что, так себе и гемор еще будет. Потому оставлю тут еще https://github.com/jiangcuo/Proxmox-Port/wiki/Install-Proxmox-VE-on-Debian-bullseye
там есть заметки для того что бы конкретно для Rockchip прошивки долить. Это я сделаю попозже тоже, так как сходу qemu что то не запахал, но я пока две кнопки нажал и ничего не пробовал.
Да, более новую версию Proxmox можно поставить отсюда https://github.com/jiangcuo/Proxmox-Port/wiki/Install-Proxmox-VE-on-Debian-bookworm, но я возиться не стал так как скрипт-автомат сделан под старую. И без того море времени ушло на то что бы найти все это. Может потом. Так же для желающих может быть полезна статья https://medium.com/@aj.abdelwahed/openwrt-on-proxmox-ve-turn-your-raspberry-pi-into-a-networking-powerhouse-ee61bd2f342c
там парень вроде как собирает iso готовые для Proxmox со всем установленным, не пробовал, но в целом изложенного выше хватит, что бы и их, как и любой дистр завести.

© Habrahabr.ru