Создаём загрузочную SD-карту для Orange Pi PC Plus при помощи Orange Pi Build System

Введение
Решил создать загрузочную SD-карту для Orange Pi PC Plus при помощи OrangePi Build System. Не нашёл в рунете подходящей инструкции, поэтому написал этот пост. Все описываемые действия выполнял на Ubuntu 16.04.

Подготовка к сборке образа для SD-карты
Я скачал исходный код OrangePi Build System из репозитория на GitHub.

it clone https://github.com/orangepi-xunlong/OrangePi_Build.git

Скрипт OrangePi_Build/Build_OrangePi.sh загружает исходные коды компонентов, необходимых для создания загрузочной SD-карты. Я изменил директорию на OrangePi_Build и запустил Build_OrangePi.sh от имени обычного пользователя.
Внимание! Не запускайте Build_OrangePi.sh от имени суперпользователя.

cd OrangePi_Build
./Build_OrangePi.sh

В появившемся диалоге я ввёл свой пароль суперпользователя и нажал Enter.



Дальнейший диалог привёл меня в небольшое замешательство. Интуитивно я чувствовал, что необходимо выбрать модель платы.



Я нажал Enter и появился тот самый диалог выбора модели платы, который я ожидал увидеть.



Я выбрал «orangepi PC Plus», после этого появился диалог выбора версии ядра.



Я выбрал более свежую версию «linux4.14» и нажал Enter. Началась загрузка тулчейна, исходников ядра Linux, исходников загрузчика U-Boot, различных патчей и скриптов для создания загрузочной SD-карты. Скрипт OrangePi_Build/Build_OrangePi.sh создал новую директорию OrangePiH3_mainline и поместил в неё загруженные файлы.



OrangePiH3_mainline/scripts - скрипты сборки
OrangePiH3_mainline/toolchain - тулчейн для сборки под ARM
OrangePiH3_mainline/kernel - исходный код ядра linux
OrangePiH3_mainline/uboot - исходный код загрузчика U-Boot
OrangePiH3_mainline/external - различные патчи, конфиги и вспомогательные файлы
OrangePiH3_mainline/build.sh - символьная ссылка на OrangePiH3_mainline/scripts/build.sh

Сборка образа для SD-карты
Я изменил директорию с OrangePi_Build на OrangePiH3_mainline и запустил build.sh.

cd ../OrangePiH3_mainline/
./build.sh

В появившемся диалоге снова выбрал «OrangePi PC Plus».



Затем «Build Release Image».



Затем «Ubuntu Xenial», т.к. других вариантов не было.



И наконец появился диалог выбора установки Ubuntu с графической оболочкой или без. Я выбрал «Server».



Сборка началась с компиляции ядра Linux 4.14.



Через некоторое время, довольно неожиданно, появилось сообщение о том, что сборка ядра завершена. Всё хорошо, но только для продолжения необходимо нажать Enter. Имейте ввиду, что нельзя далеко отходить от компьютера во время сборки :)



А дальше я напоролся на баг в скрипте сборки образа.



Разобравшись в проблеме, я отправил Pull Request разработчикам, надеюсь его примут. А пока его не приняли, чтобы исправить скрипт и продолжить сборку нужно в файле OrangePiH3_mainline/scripts/build.sh найти строки:

if [ ! -f $ROOT/output/uboot/u-boot-sunxi-with-spl.bin-$PLATFORM ]; then
cd $SCRIPTS
./uboot_compile.sh
cd -
fi

И добавить параметр $PLATFORM в вызов скрипта компиляции U-Boot:

if [ ! -f $ROOT/output/uboot/u-boot-sunxi-with-spl.bin-$PLATFORM ]; then
cd $SCRIPTS
./uboot_compile.sh $PLATFORM
cd -
fi

После этого заново запустить OrangePiH3_mainline//build.sh. Скрипт опять попросит ввести пароль суперпользователя, выбрать модель платы и т.д. Но после этого скрипт пропустит компиляцию ядра и начнёт компилировать U-Boot.

После компиляции U-Boot сборка опять прервалась, пока я не нажал Enter.



После компиляции ядра и загрузчика, скрипт переключился на создание корневой файловой системы, но, через некоторое время, сборка опять прервалась и потребовалось ввести пароль суперпользователя.



Скрипт сборки создал файл OrangePiH3_mainline/output/images/OrangePi_pc-plus_xenial_server_v1.0.img и поместил туда корневую файловую систему, загрузчик и ядро. Размер образа 1.5 Гб.



Заключение
Разработчики Orange Pi оправдали ожидания, в том смысле, что во время сборки я столкнулся с затруднениями. Не понравилось отсутствие возможности что-либо кастомизировать без внесения изменений в исходный код скриптов сборки. Не понравилось, что сборка прерывалась несколько раз в ожидании ввода Enter для продолжения.

На мой взгляд OrangePI Build System можно использовать, чтобы подсмотреть некоторые вещи, но сборку образов для различных моделей Orange Pi лучше доверить другим инструментам, например Pieman или CusDeb.

Денис Мосолов, разработчик CusDeb.

02.05.2019 в 20:59, Просмотров: 1141

cusdeb


Поиск



По всему сайту
По тэгам
По тэгам и заголовкам

Боковое меню

  • Карта сайта
  • RSS-каналы
  • Обратная связь
  • Пользователи



    Рейтинг@Mail.ru