Как стать автором
Обновить

EDK II UEFI + Debian + Proxmox 7 на Orange Pi 5

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров7.9K

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


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

Поставить ОС на SD карточку и грузить, и даже поставить на SD карту и грузить с USB-SSD не сложно вроде бы, это дефолтные установщики умеют (не вышло, но я не старался), мы не ищем легких путей. Значит надо поставить загрузчик, который умеет сразу с emmc зацепить USB-SSD. Такой загрузчик называется EDK II (мне он понравился среди альтернатив тем, что позволяет свободно грузится откуда угодно). Далее порядок установки загрузкичка, который из всех сработал. На основе вот этой доки я собрал 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 без винды, что приятно. Далее на основе этой доки я скачал загрузчик EDK2, отсюда зачиналку загрузки.

Далее сам UEFI загрузчик.

Там для Orange 5b надо выбрать версию для Orange 5 просто.

Эти файлы нужно зашить в сам девайс после чего EDK2 умеет грузить и ОС, и другие загрузчики откуда угодно. Мне надо что бы GRUB грузился, так привычнее. Перед шитьем надо перевести девайс в спец режим. Это делается по инструкции производителя (Orange Pi 5 User Manual) отсюда.

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

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

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

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

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

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

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

Когда девайс подключен к компу таким образом, он в режиме maskrom. Можно шить ранее скачанный файлы такими командами. Дока тут.

посмотреть на список девайсов подключенных и их 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. Без этого дистры грузится не будут далее. Вариант нужен both с разрешенным override, а так же выбрать включить USB2.0.

UPD: далее можно в принципе не читать, так как описанное ниже ставит Proxmox 7 да еще до состояния "что бы включился". Я написал другую статью с подробной настройкой Proxmox 8 https://habr.com/ru/articles/794508/ и там все доведено до работающих виртуалок.

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

Итак дистр берем отсюда.

После чего надо его залить на ssd диск. Проблема в том, что на этом дистре нет файлов, которые нужны что бы грузить его с UEFI загрузчика, нужен GRUB (мне, очень). Потому можно взять официальный Debian например debian-bookworm-live-arm64.hybrid.iso и с него взять две папки, /EFI и /boot/grub, собственно это загрузчик. Эти папки копируем на первый раздел SSD диска, который там после заливки на него официального образа будет. На компе своем я сделал

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

После чего надо отредактировать меню 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 пока что, так себе и гемор еще будет. Потому оставлю тут еще Install Proxmox VE on Debian bullseye,
там есть заметки для того что бы конкретно для Rockchip прошивки долить. Это я сделаю попозже тоже, так как сходу qemu что то не запахал, но я пока две кнопки нажал и ничего не пробовал.

Да, более новую версию Proxmox можно поставить отсюда, но я возиться не стал так как скрипт-автомат сделан под старую. И без того море времени ушло на то что бы найти все это. Может потом. Так же для желающих может быть полезна статья, там парень вроде как собирает iso готовые для Proxmox со всем установленным, не пробовал, но в целом изложенного выше хватит, что бы и их, как и любой дистр завести.

UPD: оказалось виртуалки поднимаются если убрать CD/DVD девайс из них, не нравится ему чем то ide. Надо создавать Cd/DVD на scsi просто. Правда я еще обновил пакеты и прочее, что отсюда Install Proxmox VE on Debian bullseye

Теги:
Хабы:
Всего голосов 6: ↑5 и ↓1+5
Комментарии3

Публикации

Истории

Ближайшие события

22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
2 – 18 декабря
Yandex DataLens Festival 2024
МоскваОнлайн
11 – 13 декабря
Международная конференция по AI/ML «AI Journey»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань