- Orange Pi (Русский)
- Contents
- Установка
- Использование оригинального архива ArchLinuxARM
- Установить базовую систему на SD-карту
- Скомпилируйте и скопируйте загрузчик U-Boot
- Использование предварительно скомпилированных бинарных файлов U-Boot
- Логин / SSH
- Дополнительный шаг, Wi-Fi Driver (RTL8189ES / ETV)
- Orange Pi PC2
- UBoot
- Kernel
- Orange PI
- Orange Pi One
- Характеристики
- Мониторинг
- Удалённый рабочий стол
- Banana Pi: через U-Boot к Arch Linux
- Предыстория
- Постановка задачи
- Матчасть
- От теории к практике
- Для ленивых
- Источники
Orange Pi (Русский)
Orange Pi (One) — это миниатюрный компьютер, созданный для ARMv7-A архитектуры. Подробнее об этом проекте.
Эта статья основана на Banana Pi. Более того, эта статья не является исчерпывающим руководством по установке и предполагает, что читатель уже настраивал систему Arch ранее.
Contents
Установка
Использование оригинального архива ArchLinuxARM
Этот метод установит неизмененную базовую систему ArchLinuxARM armv7 на ваш Orange Pi One, что означает, что у вас будет запущено последнее ядро mainline. Вероятно, это также будет работать и для других H3 Orange Pi с поддержкой mainline.
Установить базовую систему на SD-карту
Запись нолей в начало SD-карты:
Используйте fdisk для создания разделов на SD-карте и форматирование с помощью mkfs.ext4 -O ^metadata_csum,^64bit /dev/sdX1 .
Смонтируйте файловую систему ext4, заменив sdX1 на отформатированный раздел:
Загрузка и извлечение корневой файловой системы:
Создайте файл со следующим содержимым загрузочного скрипта:
Скомпилируйте его и запишите на SD-карту, используя пакет uboot-tools
Скомпилируйте и скопируйте загрузчик U-Boot
Следующим шаг это создание образа загрузки. Убедитесь, что у вас arm-none-eabi-gcc , dtc , git , swig и uboot-tools установлены в вашей системе. Если вы компилируете H3 Orange Pi, отличный от One, замените orangepi_one_config соответственно. Затем клонируйте исходный код u-boot и скомпилируйте образ Orange Pi:
Если все прошло нормально, у вас должен быть создан образ U-Boot: u-boot-sunxi-with-spl.bin. Теперь добавьте образ на вашу SD-карту, где /dev/sdX — ваша SD-карта.
Использование предварительно скомпилированных бинарных файлов U-Boot
Если вы не можете скомпилировать их на своем компьютере AMD64, просто возьмите их отсюда: https://gitlab.com/vinibali/orangepi_uboot
Используйте ту же команду для размещения ее на SDCard:
Логин / SSH
Вход по SSH для пользователя root по умолчанию отключен. Войдите в систему с учетной записью пользователя по умолчанию и используйте su.
Тип | Имя пользователя | Пароль |
---|---|---|
Root | root | root |
User | alarm | alarm |
Дополнительный шаг, Wi-Fi Driver (RTL8189ES / ETV)
Этот драйвер потребуется для Orange Pi Plus / Plus 2.
Сначала установите утилиты и заголовки ядра.
Затем соберите драйвер из исходников.
И установить вручную.
Orange Pi PC2
Allwinner H5 @ 1.20Ghz 64bit system AArch64
Следуйте общей инструкции по установке выше. Отличия:
UBoot
Kernel
Для AARCH64 вам понадобится еще один rootfs
Вам нужно скомпилировать собственное ядро. Загрузите последний основной выпуск с:
или загрузите этот репозиторий ядра с уже включенными новыми патчами:
Вот базовый конфигурационный файл для начала:
Источник
Orange PI
Ну вот пришёл мне долгожданный Orange PI. Тот магазин, который продавал их подешёвке, оказался не разводом. Теперь с ним, очевидно, надо что-то делать. А для этого надо поставить туда ОС.
Раньше имел дело с CubieBoard2 и BananaPI. Легко нагугливались образы ArchLinux SD-карт для них. А тут не так. Хотя на официальном сайте пишут, что подойдёт образ Bananian (Debian для BananaPI) последней версии, арча в списке нет печаль-беда. А ещё я вспоминаю, что на armlinuxarm инструкции содержат загрузку универсальной (в рамках одной линейки Cortex) rootfs и загрузчика специфичного для платы.
И тут я понимаю, что ничего не понимаю в Linux на ARM. Просвятите меня пожалуйста. Вот на обычном компьютере всё просто. Берётся универсальный образ и ставится (точнее обычно это не готовый образ, а он формируется пакетным менеджером с LiveCD, тем неменее набор устанавливаемых по дефолту пакетов не зависит от компьютера). Он внутри себя содержит драйвера для всего железа (в первую очередь в виде KO-файлов в /lib/modules), которые udev подгружает, если такое железо имеется. Юзер впоследствии может доставить какие-то особенные пакеты (например, xf86-video-nouveau, если у него видео от NVidia) для своего железа, чтобы оно лучше работало (программный рендеринг графики будет работать из коробки, но некоторым не нравится), но база у всех одна.
А как это дело обстоит под ARM? Какие-то дистрибутивы делают как арч (универсальная root-fs + разные загрузчики), какие-то выпускают полностью разные образы для разных одноплатников, Bananian каким-то образом поддерживает сразу несколько плат в одном образе (хотя у OrangePI другой процессор — H3 вместо A20, хоть и оба Allwinner). Что тут вообще происходит, господа?
Это первый вопрос, который меня интересует. Расскажите всё, что знаете об установке Linux на ARM-одноплатники и чем она так отличается от Linux на x86. Однако моя тема находится в Linux-install, а не Talks. А всё потому что у меня есть второй вопрос. Быть может кто-то уже ставил Linux на Orange PI? Каково оно? Что работает, а что нет? А может кто-то даже уже ставил туда арч и готов поделиться инструкцией?
Источник
Orange Pi One
Не смог удержаться и заказал за 9.9$ одноплатный ПК.
Очень и очень интересная железка. Размер чуть меньше кредитной карты.
Характеристики
- CPU- Cortex-A7, 1.2 GHz
- GPU- Mali400MP2 GPU @ 600 MHz
- 512 МБ DDR3
- HDMI, USB, microUSB, CSI
- 40 GPIO
- UART
Доставка до РФ достаточно быстро прошла, а вот в самой РФ- картина иная.
Образ системы взял отсюда.
Скопируем образ на флешку:
Подключимся по последовательному порту к сериальной консоли одноплатника и подключим питание:
Теперь можно подключить сеть и подцепиться по SSH:
Меня поразило, что всё завелось с пол-пинка.
Мониторинг
Теперь можно посмотреть на состояние платы из браузера по этому адресу http://192.168.100.10:8888/ :
Удалённый рабочий стол
Сначала нужно установить DE. Я установил XFCE.
Подключимся с хоста:
Работает!
Платка мне очень понравилась. Уже пробовал подключать камеру и стримить видео с неё. Всё работает, софт взлетает, как надо.
Прошлый раз с такими платами я ковырялся год назад — качество было похуже. Кстати, теперь они греются не так сильно, как раньше было.
Ну и, само собою, цена такая, что не ударит по карману даже студенту.
Источник
Banana Pi: через U-Boot к Arch Linux
Уже четвёртый год подряд, с момента выпуска Raspberry Pi, на рынки всего мира поставляются различные микрокомпьютеры на отличных от x86 архитектурах, которые выполняют роль медиацентров, контроллеров умных домов, веб-серверов и чего только душа гика не пожелает!
К 2014-2015 году не все были довольны вычислительными возможностями «малинки» и начался выпуск десятков его клонов с более мощным железом. У большинства из них есть недостатки: фиксированная устаревшая версия ядра и загрузчика, небольшой выбор дистрибутивов. Под катом расскажу о том, как сбросить оковы вендора на примере Banana Pi.
Предыстория
Во второй половине 2014 года захотелось иметь домашний сервер, выбор встал между классическим на архитектуре x86 с процессором серии Intel Atom и чем-то новым для меня — микрокомпьютером на базе ARM.
После оценки соотношений цены/производительности/возможностей выбор пал на Banana Pi — кроху с двухъядерным Allwinner A20, 1 гигабайтом DDR3, гигабитным LAN’ом, SATA разъёмом и прочими прелестями подобных устройств. Наигравшись пару дней, я смастерил из пластмассовых деталей корпус, в который Banana и была заточена и долго служила для всяких мелких задач.
Дистрибутив стоял Bananian — это Debian 7 Wheezy урезанный во многом для экономии ресурсов. Более нового Debian 8.x нет и по сей день, можете сами представить насколько там старый софт, который получает лишь заплатки безопасности. Всё это безобразие продолжалось до середины лета…
Наконец в июле возникла необходимость поднять веб-сервер и сопутствующие ему сервисы для своего pet project. Пора было сменить старый Debian на что-то менее консервативное и более удобное для меня.
Постановка задачи
К дистрибутиву было поставлено несколько требований: должен «из коробки» иметь репозитории покрывающие все нужды, программы в них должны быть наиболее приближённые к последним доступным версиям. Я слежу за развитием дистрибутивов и входящих в них программ, но при этом ленюсь компилировать всё из сорцов, поэтому очевидным выбором стал Arch Linux.
На сайте производителя в разделе загрузок меня ждал просроченный на год образ с зашитым необновляемым ядром (3.4.100), загрузчиком такой же давности причём от другого устройства (Cubieboard 2). На сайте Arch Linux’а поддержки Banana Pi не было заявлено. Исходя из всего этого оставалось только одно: скомпоновать и запустить дистрибутив самому.
Матчасть
Das U-Boot (происхождение названия как-то связано с субмаринами и игрой слов на немецком и английском языках, см. U-boat)
Это загрузчик операционной системы, ориентированный на устройства c архитектурами MIPS, PowerPC, ARM и другими. Умеет он многое: загружает систему с NAND, NOR, SPI, MMC, SATA, USB, TFTP, NFS, может сам храниться в ПЗУ устройства или внешней памяти, имеет встроенный dhcp клиент и shell, принимает сигналы с клавиатуры, выводит на UART, HDMI, VGA, аналоговое видео. Естественно для поддержки всего этого нужно иметь драйверы.
Тут и начинается отличие от x86 платформ — ARM не имеет ACPI (усовершенствованного интерфейса управления конфигурацией и питанием) и UEFI (интерфейса взаимодействия между операционной системой и «прошивкой» устройства) и именно поэтому не существует как таковых унифицированных дистрибутивов для ARM компьютеров, но движение в сторону UEFI и ACPI идёт уже несколько лет. А пока это движение идёт мы находимся в реальном суровом мире и загрузчик нужно компилировать самостоятельно для разного железа. Железо это описывается в структуре данных под названием Device Tree (dt). Подробнее о DT можно узнать на посвящённом ему сайте: devicetree.org.
В комплекте с исходными кодами загрузчика поставляется набор конфигурационных файлов для компиляции, а также Device Tree для 1089 устройств. Гугл, к сожалению, не находит этот список, поэтому он доступен по ссылке: U-boot supported devices.
О нём много писано, много сказано, а сейчас пригодится лишь несколько фактов:
- Встреченные мною дистрибутивы хранят ядро в нескольких формах:
- Image — не сжатый образ.
- zImage — сжатый самораспаковываяющийся образ.
- uImage — образ, который имеет обёртку, включающую некоторую информацию для U-Boot’а.
Ранее uImage использовались обширно для устройств с U-Boot, но за последние года разработчики научили загрузчик работать с zImage, который стал общепринятой практикой хранения образа ядра в дистрибутиве Arch Linux ARM.
- Радостная новость! Ядро в пределах одной архитектуры(ARMv5, ARMv6, ARMv7, ARMv8) с большой вероятностью не придётся компилировать для каждого устройства. Оно использует свою версию Device Tree, называемую Device Tree Binary (dtb). Это небольшие по объёму файлы, указывающие ядру какие модули нужно подгружать. Больше информации о dtb можно узнать тут.
От теории к практике
Наиболее простым способом я считаю следующий:
- Скачать готовый тулчейн для своей платформы с сайта Linaro.
Для Banana Pi нужен linaro-toolchain-binaries (little-endian). - Добавить папку bin тулчейна в PATH:
Скачаем и распакуем исходные коды последней версии U-Boot:
Находим в появившемся каталоге u-boot-2015.07/configs свою «железку» и запоминаем название файла. Для Banana Pi конфигурационный файл называется Bananapi_defconfig.
Ещё помните, что ядро Arch Linux ARM дистрибутиве хранится в zImage? Об этом нужно позаботиться заранее и перед компиляцией добавить возможность загружать самораспаковывающиеся ядра. Точной информации о том уже включено ли это по умолчанию у меня нет, поэтому в каталоге u-boot-2015.07/include/configs/ нужно найти заголовочный файл для платформы Вашего микрокомпьютера (для Banana Pi это sun7i.h) и написать внутри:
Это добавит возможность использовать в загрузчике команду bootz для запуска самораспаковывающихся сжатых программ. Источник
Теперь этап компиляции. Все операции происходят в каталоге u-boot-2015.07.
Непосредственно компиляция загрузчика:
В итоге в нашей рабочей папке должно появиться много файлов с префиксом u-boot. u-boot.bin содержит исполняемый файл загрузчика, но нужен нам файл с постфиксом «with-spl». SPL — небольшая программа, которая располагается непосредственно перед загрузчиком и загружает сам U-Boot в оперативную память. Для Banana Pi это файл u-boot-sunxi-with-spl.bin. Сохраним его, он пригодится чуть позже.
Следующий шаг — подготовка флеш-карты с которой будет загружаться система. Как должна выглядеть её разметка:
Подключим флеш-карту через кард-ридер и запустим утилиту fdisk:
Добавим MBR разметку:
И обязательно как минимум два раздела:
- 50-100 Мб
После всего этого ввести «w», тем самым записать изменения на диск.
Почему именно такие разделы? U-Boot’ом можно управлять с помощью скриптов, он читает их только из первого раздела накопителя, причём раздел этот должен быть с файловой системой FAT. В этот же раздел будет смонтирован каталог /boot будущего Arch Linux’а для удобного доступа к ядрам как из U-Boot скриптов, так и для быстрой подмены ядер с любого попавшегося компьютера. Второй раздел предназначен для корня системы. Остальные по желанию.
После разметки нужно очистить место для загрузчика. Крайне важно не затереть первые 512 байт(MBR) и не затронуть 1024 секторы и далее (исходя из таблицы выше):
Теперь уже можно вставить флешку в устройство назначения, включить его и посмотреть как оно весело мигает LED’ами, подхватывает ip-адрес через dhcp, пытается достучаться до tftp сервера чтобы загрузиться и дружелюбно приглашает Вас в свой Shell показывая его через выдеовыход или UART.
Но одного загрузчика мало, остаётся ещё несколько компонентов: скрипт для управления U-Boot’ом и сам дистрибутив Arch Linux.
Отправляемся на os.archlinuxarm.org и скачиваем архив с подходящим нашей архитектуре дистрибутивом. Для Banana это ArchLinuxARM-armv7-latest.tar.gz. Распаковываем в отдельную директорию и продолжаем манипуляции с флеш-картой.
Создадим файловые системы и примонтируем их в заданном порядке:
Скопируем всё содержимое распакованного архива в /mnt:
Заглянем в первый раздел флешки (/mnt/boot). Внутри нас ждёт папка dtbs и сжатый образ ядра — zImage. dtbs — это именно те Device Tree Binary, о которых шла речь выше.
Для ARMv7 есть целых 301 dtb. Список можно увидеть здесь или непосредственно открыв директорию boot/dtbs дистрибутива на своём компьютере. Если dtb есть, то ядро заведётся с почти 100% вероятностью. Для Banana Pi нужный файл — sun7i-a20-bananapi.dtb. Он нужен нам для последнего и завершающего этапа — написания скрипта для U-Boot’а и, естественно, запуска всей полученной системы.
Приступим. Создадим прямо на месте (в /mnt/boot) файл boot.cmd и начнём писать.
Первым делом прикажем U-Boot’у загружать в RAM образ ядра:
Затем dtb для нужного девайса:
Установим параметры для запуска ядра:
И скажем ему загружаться из этой области памяти, тем самым передавая управление уже ядру Linux.
Области памяти доступные для загрузки у каждой модели свои и к сожалению я не знаю как определять их самостоятельно. Буду очень рад, если кто-то расскажет об этом простыми словами в комментариях.
Написанный нами скрипт остаётся только скомпилировать. Для этого в пакете uboot-tools есть утилита mkimage, воспользуемся ей:
boot.cmd при желании можно удалить, загрузчику нужен лишь boot.scr.
И последний штрих — добавляем в etc/fstab новой системы разделы, которые будут подключаться при запуске:
Флешку можно вставлять в девайс и радоваться свежей системе. Демон dhcpd сам подхватит адрес если в Вашей сети есть DHCP сервер. SSH сервер по умолчанию добавлен в автозагрузку. Аккаунт на дефолтных образах Arch Linux ARM изначально всегда один: root/root. Обязательно смените пароль и добавьте юзера с ограниченными полномочиями.
Что получили? Звёзды так сошлись, что поддержка моего микрокомпьютера есть в списке из 1089 устройств поддерживаемых U-Boot и среди 301-го среди поддерживаемых mainline ядром для ARMv7. Поэтому получили именно то, что и хотели: систему с самым свежим программым обеспечением, которое стабильно обновляется из репозиториев, включая ядро системы (на данный момент уже 4.1.4). Стабильная ветка загрузчика обновляется раз в 3 месяца и требуется лишь скомпилировать его и повторить процедуру установки, как сделано выше.
Для ленивых
Подготовил образ для Banana Pi:
Ссылка, Зеркало #1, Зеркало #2.
md5 образа в архиве: f36d707c4c1fd857b50d37501b4a3d7a
Записать образ на флеш-карту можно с помощью утилиты dd, либо win32diskimager (для Windows пользователей).
Источники
Желаю удачи тем, кто захочет повторить это у себя дома и буду рад справедливой критике.
Источник