Дистрибутив linux для arm

Какой дистрибутив лучше использовать для вашей embedded системы?

Какой дистрибутив лучше использовать для embedded систем. Этот вопрос является актуальным на сегодняшний день.

Существует три актуальных подхода для решения этой задачи:

  1. Использовать готовый дистрибутив для вашего одноплатного компьютера(Armbian, Openwrt и т.д.)
  2. Собрать и настроить свой дистрибутив с помощью систем сборок(Buildroot/Yocto и т.д.).
  3. Использовать свою связку bootloader (u-boot) + ядро(kernel) + rootfs (busybox).

Готовые дистрибутивы

Я считаю использовать готовый дистрибутив это самый простой и легкий путь. Вы можете скачать готовый образ или сбилдить свой. Сборка своего образа Armbain не всегда является гибкой, т.к вы не можете выбрать любую версия ядра Linux, а использовать только предоставленные.

Следует также ответить главное достоинство готовых дистрибутивов — это их стабильность.
Для начинающих, я бы рекомендовал данные дистрибутивы.

Armbian — это популярный дистрибутив Linux, доступный для самых разных устройств ARM: Orange Pi, Banana Pi, Odroid и т.д … Он основан на Ubuntu и/или Debian.

OpenWrt — встроенная операционная система, основанная на ядре Linux, и предназначенная, в первую очередь, для домашних маршрутизаторов. Основные компоненты включают в себя ядро Linux, util-linux, uClibc или musl и BusyBox. Размер всех компонентов оптимизирован в связи с тем, что в большинстве домашних маршрутизаторов сильно ограничен объём памяти.

От себя добавлю, хорошо подойдет для плат с wi-fi на борту (Например Orange Pi Zero).

Системы сборки

Гланым достоинством систем сборок является, то что вы можете собрать минимальный и гибкий Linux для встраиваемых (embedded) систем.

Buildroot — это система сборки дистрибутивов для встраиваемых систем. Она поддерживает кучу плат и результатом ее работы становятся собранные загрузчик, ядро и образ
файловой системы.

Что оно позволяет собрать buildroot для вашей системы:

  • образ системы;
  • данная система позволяет выбрать версию ядра — любую.
  • можете добавить любые патчи и установить любые программы.
  • гибкая конфигурация утилит ( например, busyBox, bash и т.д.)

Отличая такой сборки, например, от сборки Armbian:

  • собирается дистрибутив не на основе (Debian или Ubuntu), а пользовательский гибко настроенный Linux.
  • минимального размер сборки.
  • выбор любой версии ядра.

3. Использование свой связки:

  • Cross compiler (Например, Linaro);
  • Bootloader (Например, U-boot);
  • Kernel;
  • RootFs (Например, Busybox).

Далее необходимо собрать bootloader.

Bootloader (U-Boot) — самый популярный bootloader для ARM, является U-boot. Главной задачей bootloader является загрузка ядра Linux Kernel. Так же вы можете использовать, например barebox или другой.

Читайте также:  Загрузочная флешка виндовс linux

Далее. Нужно собрать ядро, на выходе мы должны получить образ ядра и device tree для нашей целевой платформы.

RootFs — это корневая файловая система которую примонтирует Kernel после загрузки. Рекомендую использовать Busybox.

Заключение

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

Источник

Заводим GNU/Linux на ARM-плате с нуля (на примере Kali и iMX.6)

tl;dr: собираю образ Kali Linux для ARM-компьютера, в программе debootstrap , linux и u-boot .

Если вы покупали какой-нибудь не очень популярный одноплатник, то могли столкнуться с отсутствием для него образа любимого дистрибутива. Приблизительно то же самое случилось с планируемым Flipper One. Kali Linux под IMX6 просто нету (я готовлю), поэтому собирать приходится самостоятельно.

Процесс загрузки достаточно простой:

  1. Инициализируется железо.
  2. Из некоторой области на запоминающем устройства (SD-карта/eMMC/etc) считывается и выполняется загрузчик.
  3. Загрузчик ищет ядро операционной системы и загружает его в некоторую область памяти и выполняет.
  4. Ядро загружает всю остальную ОС.

Сборка корневой файловой системы

Для начала нужно подготовить разделы. Das U-Boot поддерживает разные ФС, я выбрал FAT32 для /boot и ext3 для корня, это стандартная разметка образов для Kali под ARM. Я воспользуюсь GNU Parted, но вы можете сделать то же самое более привычным fdisk . Также понадобятся dosfstools и e2fsprogs для создания ФС: apt install parted dosfstools e2fsprogs .

  1. Отмечаем SD-карту как использующую MBR-разметку: parted -s /dev/mmcblk0 mklabel msdos
  2. Создаём раздел под /boot на 128 мегабайт: parted -s /dev/mmcblk0 mkpart primary fat32 1MiB 128MiB . Первый пропущенный мегабайт необходимо оставить под саму разметку и под загрузчик.
  3. Создаём корневую ФС на всю оставшуюся ёмкость: parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100%
  4. Если вдруг у вас не создались или не изменились файлы разделов, надо выполнить `partprobe`, тогда таблица разделов будет перечитана.
  5. Создаём файловую систему загрузочного раздела с меткой BOOT : mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1
  6. Создаём корневую ФС с меткой ROOTFS : mkfs.ext3 -L ROOTFS /dev/mmcblk0p2
  1. Монтируем раздел в /mnt/ (используйте более удобную для себя точку монтирования): mount /dev/mmcblk0p2 /mnt
  2. Собственно заполняем файловую систему: debootstrap —foreign —include=qemu-user-static —arch armhf kali-rolling /mnt/ http://http.kali.org/kali . Параметр —include указывает дополнительно установить некоторые пакеты, я указал статически собранный эмулятор QEMU. Он позволяет выполнять chroot в ARM-окружение. Смысл остальных опций можно посмотреть в man debootstrap . Не забудьте, что не любая ARM-плата поддерживает архитектуру armhf .
  3. Из-за разницы архитектур debootstrap выполняется в два этапа, второй выполняется так: chroot /mnt/ /debootstrap/debootstrap —second-stage
  4. Теперь нужно зачрутиться: chroot /mnt /bin/bash
  5. Заполняем /etc/hosts и /etc/hostname целевой ФС. Заполните по аналогии с содержимым на вашем локальном компьютере, не забудьте только заменить имя хоста.
  6. Можно донастроить всё остальное. В частности я доустанавливаю locales (ключи репозитория), перенастраиваю локали и часовой пояс ( dpkg-reconfigure locales tzdata ). Не забудьте задать пароль командой passwd .
  7. Задаём пароль для root командой passwd .
  8. Приготовления образа для меня завершаются заполнением /etc/fstab внутри /mnt/ .
Читайте также:  Проверить порт удаленного компьютера linux

Наконец, можно примонтировать загрузочный раздел, он нам понадобится для ядра: `mount /dev/mmcblk0p1 /mnt/boot/`

Сборка Linux

Для сборки ядра (и загрузчика потом) на Debian Testing надо установить стандартный набор из GCC, GNU Make и заголовочных файлов GNU C Library для целевой архитектуры (у меня armhf ), а также заголовки OpenSSL, консольный калькулятор bc , bison и flex : apt install crossbuild-essential-armhf bison flex libssl-dev bc . Так как загрузчик по умолчанию ищет файл zImage на файловой системе загрузочного раздела, пора разбивать флешку.

  1. Клонировать ядро слишком долго, поэтому просто скачаю: wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.9.1.tar.xz . Распакуем и перейдём в директорию с исходниками: tar -xf linux-5.9.1.tar.xz && cd linux-5.9.1
  2. Конфигурируем перед компиляцией: make ARCH=arm KBUILD_DEFCONFIG=imx_v6_v7_defconfig defconfig . Конфиг находится в директории arch/arm/configs/ . Если такового нет, вы можете попробовать найти и скачать готовый и передать название файла в этой директории в параметр KBUILD_DEFCONFIG . В крайнем случае сразу переходите к следующему пункту.
  3. Опционально можно докрутить настройки: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
  4. И кроскомпилируем образ: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
  5. Теперь можно скопировать файлик с ядром: cp arch/arm/boot/zImage /mnt/boot/
  6. И файлы с DeviceTree (описание имеющегося на плате железа): cp arch/arm/boot/dts/*.dtb /mnt/boot/
  7. И доустановить собранные в виде отдельных файлов модули: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=/mnt/ modules_install

Das U-Boot

Так как загрузчик интерактивный, для проверки его работы достаточно самой платы, запоминающего устройства и опционально устройства USB-to-UART. То есть, можно ядро и ОС отложить на потом.

Абсолютное большинство производителей предлагают использовать Das U-Boot для первичной загрузки. Полноценная поддержка обычно обеспечивается в собственном форке, но и в апстрим контрибьютить не забывают. В моём случае плата поддерживается в мейнлайне, поэтому форк я проигнорировал.

  1. Клонируем стабильную ветку репозитория: git clone https://gitlab.denx.de/u-boot/u-boot.git -b v2020.10
  2. Переходим в саму директорию: cd u-boot
  3. Готовим конфигурацию сборки: make mx6ull_14x14_evk_defconfig . Это работает только если конфигурация есть в самом Das U-Boot, в ином случае вам потребуется найти конфиг производителя и положить его в корень репозитория в файл .config , или собрать иным рекомендованным производителем образом.
  4. Собираем сам образ загрузчика кросс-компилятором armhf : make CROSS_COMPILE=arm-linux-gnueabihf- u-boot.imx

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

Читайте также:  Red hat linux kickstart

Вместо заключения

А вы знали, что лоб у дельфина не костистый? Это буквально третий глаз, жировая линза для эхолокации!

Источник

Armbian — самая популярная ОС для одноплатных компьютеров на базе ARM — процессоров

Armbian — это дистрибутив Linux, доступный для самых разных устройств ARM: Orange Pi, Banana Pi, Odroid, Olimex, Cubieboard, Roseapple Pi, Pine64, NanoPi и др… Он основан на Ubuntu и/или Debian.

Мы должны четко указать, какой образ Armbian мы должны загрузить, хотим ли мы сервер или рабочий стол [1], будет ли он из ветки, которая использует стабильное ядро ​​(Legacy) или самое современное и нестабильное (Mainline) [2] и, наконец, если он будет основан на Debian или Ubuntu [3].

Armbian - самая популярная ОС для одноплатных компьютеров на базе ARM - процессоров

Записать образ Armbian на microSD

Записать .img образ Armbian очень легко с утилитой Etcher , она доступна для Windows, Linux и Mac.

  1. Запустите программу Etcher; Armbian - самая популярная ОС для одноплатных компьютеров на базе ARM - процессоров
  2. Нажмите на Select image и выберите файл образ; Armbian - самая популярная ОС для одноплатных компьютеров на базе ARM - процессоров
  3. Указать файл, выбрать накопитель, создать диск.
  4. Нажмите на Flash! и ждите окончания процесса записи;
  5. После завершения процесса появится сообщение: Flash Complete! Safely ejected and ready for use, означающее, что запись прошла успешно и можете вставить СД-карту в ваш мини-компьютер.

Первый запуск ОС Armbian

Вставьте SD-карту в слот и питание платы. Первая загрузка занимает около 3 минут, после чего компьютер может перезагрузиться и вам нужно будет подождать еще одну минуту, чтобы войти в систему. Эта задержка происходит потому, что система создает 128Mb аварийный SWAP и расширяет SD-карту до полной емкости.

Как войти в систему

Войдите в систему как root через HDMI/последовательную консоль или через SSH и используйте пароль 1234. Вам будет предложено изменить этот пароль при первом входе в систему. При первом запуске должна создаваться учетная запись пользователя.

Настройки экрана

После создания учётной записи вам вам нужно будет настроить экран с помощью утилиты h3disp.

Настроить можно при первом запуске, в таком случае нажмите Y, или потом — нажмите n. После того, как нажали Y, появится список доступных конфигураций;

Armbian - самая популярная ОС для одноплатных компьютеров на базе ARM - процессоров

Если у вас HDMI монитор на 720p и 60Гц, тогда выполняйте следующую команду:

а если монитор с DVI, добавьте и параметр -d:

Armbian - самая популярная ОС для одноплатных компьютеров на базе ARM - процессоров

После запуска вы увидите чистый рабочий стол: Версия системы

Armbian - самая популярная ОС для одноплатных компьютеров на базе ARM - процессоров

Как подключиться к Wi-Fi роутеру

Если у вас плата со встроенным модулем Wi-Fi или USB адаптером, тогда подключиться к сети можно с помощью nmtui-connect.

ROUTER_SSID — это идентификатор сети, или, проще говоря, её название.

Источник

Оцените статью
Adblock
detector