Arm boards with linux

Заводим 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. Ядро загружает всю остальную ОС.

Для моей задачи хватает такого уровня детализации, подробности можете прочесть в другой статье. Упомянутые выше «некоторые» области отличаются от платы к плате, что и создаёт некоторые сложности с установкой. Загрузку серверных ARM-платформ пытаются стандартизовать с помощью UEFI, но покуда это доступно не для всех, придётся собирать всё по отдельности.

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

Для начала нужно подготовить разделы. 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

Отлично, теперь можно её заполнять. Для этого дополнительно потребуется debootstrap , утилита для создания корневых ФС Debian-подобных операционных систем: apt install debootstrap .

  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/ .

Загружать буду в соответствии с созданными ранее метками, поэтому содержимое будет таким:

LABEL=ROOTFS / auto errors=remount-ro 0 1
LABEL=BOOT /boot auto defaults 0 0

Наконец, можно примонтировать загрузочный раздел, он нам понадобится для ядра: `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

Ядро готово. Можно всё отмонтировать: umount /mnt/boot/ /mnt/

Das U-Boot

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

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

Cобираем сам загрузчик:

  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
Читайте также:  Депин линукс 20 1

В результате мы получаем файл u-boot.imx , это готовый образ, который можно записывать на флешку. Записываем на SD-карту, пропустив первые 1024 байта. Почему я выбрал таргет u-boot.imx ? Почему пропустил именно 1024 байта? Так предлагают сделать в документации. Для других плат процесс сборки образа и записи может немного отличаться.

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

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

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

Источник

Установка Linux на ARM. Подробная пошаговая инструкция и советы

Установка Linux на ARM — это довольно интересная тема. Даже принимая только то, что это довольно-таки необычно. Почему необычно? П отому что в ARM-процессорах совсем другая архитектура, чем у тех, для которых рассчитано большинство дистрибутивов Линукс.

Для тех , кто не знает, ARM — архитектура маленьких микр оп роцессоров. Если простым языком, то это архитектура процессора у маленьких компьютеров или мобильных телефонов. Поэтому вопрос : вы часто видели Linux на смартфоне (процессоре ARM)?

Основная масса больших и привычных ПК имеют архитектуру х86 или AMD64. Данные процессоры рассчитаны на трудо- и ресурсоемкие задачи:

  • редактирование фотографий;
  • редактирование музыки или видео;
  • работа с базой данных;
  • программирование и т.д .

Но в т о ж е время ARMка имеет более низкое энергопотребление при должной производительности, а это как раз очень важно для небольших устройств. И поэтому она распространена в «маленьких» устройствах.

Какие операционные системы подходят для ARM?

В принципе на ARM — устройствах можно запустить любую операционную систему, которая была скомпилирована под данную архитектуру. Поэтому обычные Линукс версии, которые мы уже привыкли наблюдать на своих ПК , просто не подойдут , д аже если они легковесны и подходят по другим параметрам. Но в т о ж е время в сети можно найти приличное количество уже «готовых» дистрибутивов Linux для ARM — процессоров. Ярким представителем является известный всем Android, из менее известных, но популярных — Kali Linux.

Кстати, а вы знали, что популярный Android мегакорпорации Google — это всего лишь «операционка» на основе ядра Linux ? Пр ит ом, что Андроид является самой популярной операционной системой для мобильных телефонов — этот факт, как видите, малоизвестен. Но вообще нужно понимать, что Linux здесь является всего лишь «ядром». А ядро — это всего лишь основной функционал, предполагающий использование устройствами опций аппаратной системы, драйверов, управления, утилиты для командной строки и др. Семейство Linux подразумевает совокупность всех операционных систем, использующих его ядро, но это не есть самостоятельное ядро. Различие всем системам «семейства» придает графическая оболочка, но это совсем другая история. Однако возможность использовать эти ОС без графической оболочки, а только через текстовую командную строку, расширяют сферу их применения. Именно поэтому их можно «заметить» в необычных местах:

  • в сетевом оборудовании;
  • в производственных станках;
  • в начинке самолета или автомобиля;
  • даже в современных стиральных машинах.

Итак, из семейства Linux для ARM можно подобрать конфигурации у следующих дистрибутивов:

  1. Debian. Это одна из самых старых версии Линукса, большое сообщество, много программ , написанных для этой системы, стабильность работы и мн.др. Его можно «найти» практически везде, также и в ARM — процессорах.
  2. Ubuntu. Кто не слышал о б Убунту, тот не слышал о Линукс. С читается , что у него бо л ее продвинутое интерфейсное оформление, чем у Дебиан, да и вообще он сам более продвинутый. Встречается в ARM — процессорах, но совсем недавно анонсирована Ubuntu Phone — специальная ОС для смартфонов, которая будет призвана конкурировать с Android. Проект анонсирован, но пока должного «движения» не замечено.
  3. Kali, Arch, Gentoo и др. , и каждый со своей отличительной особенностью , и каждый используется в ARM — системах.

На самом деле , этот список можно продолжать очень долго, потому что прогресс не стоит на месте, а земля наша слави тся умельцами. И многие разработчики «подтачивают» тот или иной дистрибутив Linux под ARM — процессор.

Установка Linux на ARM — устройство

Как правило, приобретая какое-либо устройство на ARM — процессоре, вы его получаете уже с предустановленной ОС. Чаще всего на таких устройствах идет Android. Допустим, вы все равно хотите установить Linux на это ARM — устройство. Тогда у вас есть 2 пути:

  1. Полноценная «перепрошивка» на «чистое железо» ;
  2. Установка «внутри» или «рядом» с Android (или другой системы, суть от этого не меняется).

При полной «перепрошивке» вы потеряете весь предустановленный производителем функционал. Вряд ли это будет то, чего вы добиваетесь. Поэтому тут можно воспользоваться вторым способом и установить Linux, не удаляя основную операционную систему вашего устройства. Для этого нужно будет настроить запуск chroot-окружения внутри Андроид. Но зато на выходе вы получите 2 параллельно установленные операционные системы и сможете использовать то одну, то другую. С т ак им подход ом можно поэкспериментировать на смартфонах или планшетах, где есть экран. А на простых безэкранных устройствах с таким способом могут возникнуть трудности.

Советы при установки Linux на ARM — устройство

На самом деле , совет будет один. Подумайте , прежде чем устанавливать Linux на свое ARM — устройство, тем более если на нем уже предустановлена производителем ОС. Потому что это не что иное , как хакинг — то есть преднамеренно е вмешательство в работу операционной системы. И никто , кроме вас , разделять риски работы устройства не будет.

Сама технология установки Linux на ARM еще в довольно «сырой» форме. Да, есть какие-то наработки и отдельные дистрибутивы. Есть умельцы, которые делают это и говорят, что это круто. Но в целом материала и стабильности в этом мало. Это не касается тех устройств, в которых Linux предустановлен производителем!

Читайте также:  Bluetooth hid устройство драйвер windows

Но в т о ж е время четко вырисовывается тенденция, что за ARM — процессорами будущее. Этому свидетельствует даже тот факт, что первое место в рейтинге суперкомпьютеров ТОП — 500 в 2021 году с большим отрывом по производительности от конкурентов занимает машина на ARM — процессорах!

У ARM — процессоров масса преимуществ , поэтому, скорее всего , в обозримом будущем они будут стоять на наших персональных компьютерах. А это значит, что Linux на ARM — устройстве не будет диковинкой! А нужно ли вам это сейчас — решать вам.

Мы будем очень благодарны

если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.

Источник

x86 & Arm Linux Development Boards

This list of Android/Linux development board lists does not intend to be exhaustive. On the contrary, I only plan to list the boards that I find remarkable either by the level of community support, price or features, and I plan to keep the list shorter than 10 boards/vendors.

I’ll also focus on the cheaper boards (less than $100, or slightly above) as those sell in larger quantities than more expensive boards. If you are interested in the latter, I have a list of the top 5 most powerful Arm boards (in 2017/early 2018).

Click to Enlarge

Raspberry Pi Boards

The Raspberry Pi Foundation has sold close to 20 millions boards as of Q2 2018, and the Raspberry Pi boards are a step above the competition in terms of sales thanks to the relatively low cost and excellent software support of the platform.

There are several models, but the two most popular right now should be:

  • Raspberry Pi 3 Model B+ – Based on Broadcom BCM2837 quad core Cortex A53 processor with 1GB RAM, HDMI output, 4x USB ports, Gigabit Ethernet (up to 330 MB/s), WiFi + Bluetooth LE, and interfaces for camera and display.
  • Raspberry Pi Zero W – Tiny board features BCM2835 Armv11 processor with 512MB RAM, HDMI, a camera interface, WiFi and Bluetooth.

This board currently supports a vast number of Linux distributions such as Debian (Called Raspbian) and Arch Linux Arm, Windows 10 IoT, and other OS. If you run into any problem the huge community behind the board will likely already have a solution to your problem. The boards I/O headers allow hardware prototyping.

Price: Raspberry Pi 3 Model B+: $35, Raspberry Pi Zero W: $10; You’ll need to add tax and shipping.

Texas Instruments BeagleBone Black

The BeagleBone Black comes with a Texas Instruments TI Sitara AM335x Cortex A8 processor @ 1GHz with 512MB RAM, 4GB eMMC flash, Ethernet and HMDI output. The processor is fairly low-end in 2018, but the board is still popular as it exposes a large number I/Os controllable with its PRU (Programmable Real-time Unit). People who don’t need Ethernet nor HDMI may prefer the smaller and cheaper ($25) PocketBeagle announced in 2017.

The board ships with Debian with Cloud9 IDE, but other Linux distributions and Android are supported. The community around the BeagleBone is not as large as the Raspberry Pi, but more developer centric, and there is excellent documentation, and plenty of projects.

$55 + tax + shipping

Hardkernel ODROID Boards

Korea based Hardkernel ODROID development boards have been fairly popular over the year, with good features sets, reasonable prices, and an active community, which also publishes ODROID magazine monthly.

The most popular boards should still be ODROID-C2 based on Amlogic S905 processor, and the more powerful ODROID-XU4 / XU4Q boards powered by Samsung Exynos 5422 processor.

The company usually provides support for Ubuntu with graphics acceleration and hardware decoding, and Android for their boards, but other community supported operating systems are also available.

  • ODROID-C2: $46 + shipping
  • ODROID-XU4 (with fan) / XU4Q (fanless): $59 + shipping

Where to Buy: On Hardkernel website, and other distributors like Ameridroid (US) and Pollin (Germany/Europe)

Shenzhen Xunlong Orange Pi Boards

If you are looking for the best price/features ratio, Shenzhen Xunlong Software Orange Pi boards are unbeatable with unbelievable prices apparently made possible thanks to government subsidies.

Those ultra-low prices, however, come at the cost of limited documentation and software support. The company will normally release schematics for their boards, some very basic documentation, and firmware images that are good enough for testing during mass production. Their boards should be harder to use for projects however, and better suited to people with good Linux experience, although Armbian community that releases optimized Debian or Ubuntu images helps a lot, and RetrOrangePi is a popular firmware for retro gaming for the boards. You can also try to get help on Orange Pi forums or a dedicated Facebook Group.

The company launched many boards with Allwinner processors, and others. The most popular include Orange Pi One (Allwinner H3, 512MB RAM, Ethernet, HDMI), Orange Pi Lite (Allwinner H3, 512MB RAM, HDMI, WiFi), Orange Pi PC (Allwinner H3, 1GB RAM, HDMI, Ethernet).

  • Orange Pi One: $9.99 + shipping
  • Orange Pi Lite: $12 + shipping
  • Orange Pi PC: $15 + shipping

FriendlyELEC NanoPi Boards

If you’re feeling uneasy by the lack of documentation for Orange Pi boards, and don’t mind paying a few dollars more, FriendlyELEC NanoPi boards should definitely be a good option. The boards are based on Allwinner, Amlogic, or Samsung S5P processors, and come with pretty good documentation, and usable firmware images, although again Armbian is an option for some of the boards. Support forums are also available, but only moderately active.

Читайте также:  Intel ich10r sata ahci controller windows 10

There are also many models, but some of my favorite are the tiny NanoPi NEO 2 with Allwinner H5 processor, 512MB RAM, Gigabit Ethernet, USB, and I/Os for headless applications, the breadboard-friendly NanoPi Duo based on Allwinner H2+ with 256 or 512MB RAM, WiFI, and I/O headers, as well as NanoPi K2 based on Amlogic S905 processor with 2GB RAM, and better suited for multimedia applications, and support Linux distributions (e.g. Ubuntu 16.04) or Android. The company also provide kits that make it really easy to get started with all sort of projects such as their NAS Kit or Bakebit Kit with sensors and modules.

  • NanoPi NEO 2: $19.99 and up + shipping
  • NanoPi Duo: $7.99 and up + shipping
  • NanoPi K2: $45 + shipping (Kit with remote control, enclosure, etc…)

LeMaker Hikey & Hikey960 Boards

Are you an Android app developer wanting to test your app with the latest Android operating systems? Then LeMaker Hikey, and its more powerful successor – Hikey 960 – might be what you are looking for, since both are officially supported by the Android Open Source Project (AOSP).

This means they should get the latest Android OS as it is released. Both boards follow 96Boards CE specifications, meaning you can also leverage the ecosystem of add-on boards (mezzanines) such as Neonkey SensorHub.

Hikey board is powered by a Huawei/Hisilicon Kirin 620 octa core Cortex A53 processor coupled with 1 or 2 GB RAM, while Hikey 960 comes with Kirin 960 octa-core Cortex A73/ A53 processor with 3GB or 4GB RAM, and both equipped with HDMI, USB, WiFi + Bluetooth, and low speed/ high speed 96boards expansion headers.

  • Hikey: $75 (1GB RAM); $119 (2GB RAM)
  • Hikey 960: $239 and up

Pine64 Rock64 Board

Pine64 Rock64 is a board equipped with Rockchip RK3328 SoC designed for 4K OTT TV boxes, but the platform is know also know for it’s good performance for network storage applications thanks to well implemented Gigabit Ethernet and USB 3.0 interfaces. Three versions are sold with 1, 2 or 4GB RAM.

Documentation is pretty good, and supported operating systems include Android, Debian, Ubuntu Mate, LibreELEC, OpenMediaVault, and others. An active community provides support through the forums, and #rock64 IRC channel on freenode.

The board also follows Raspberry Pi form factor, so you can use enclosures, and some of the many add-on board available for Raspberry Pi boards.

Official URL: https://www.pine64.org/?page_id=7147

Price: $24.95 (1GB RAM), $34.95 (2GB RAM), $44.95 (4GB RAM)

Dragonboard 410c (96Boards CE SBC)

96boards is an initiative by Linaro to provide various Arm development boards with specific form factors defined by 96Boards specifications, and in theory, some software / firmware requirements, but the latter is not always followed through.

We’ve also seen Hikey board above, but another one of the most popular 96Boards compliant boards is Qualcomm Snapdragon 410E based DragonBoard 410c also equipped with 1GB RAM, 8GB internal storage, HDMI output, two USB ports, WiFI and Bluetooth connectivity, and the low & high speed connectors defined by 96Boards specifications.

The board is well supported by Linaro (and partners) with Android, Debian, and OpenEmbedded, as well as third parties OS such as Windows 10 IoT and Ubuntu core. The board can also be easily integrates with services like AWS IoT SDK , IBM Watson IoT Platform , AT&T M2X , or Microsoft Azure IoT Suite.

Price: $75 + shipping

LattePanda

The page you are reading now – and congratulation if you’ve read so far – used to be called “Arm Linux Development Boards”, but Intel launched some low cost Atom processors, and affordable x86 board like UDOO x86 and LattePanda came to market.

UDOO appears to have dropped their cheapest models, so I’ll focus on LattePanda board powered by an Intel Atom x5-Z8350 Bay Trail with 2 to 4GB RAM, and 32 to 64 GB flash.

The board supports either Windows 10 Home/Enterprise or Ubuntu 16.04, and documentation is available in the dedicated Wiki, with support provided in the forums.

  • $89 with 2GB/32GB configuration non-activated Windows 10
  • $119 with 2GB/32GB config + Windows 10 Home license
  • $149 with 4GB/64GB configuration non-activated Windows 10
  • $209 with 4GB/64 config + Windows 10 Enterprise

WandPi 8M Boards

This last family of boards has not launched yet (as of mid April 2018), but promises to be relatively popular because NXP i.MX 8M processors will be launched in open source products such as MNT Reform portable computer or Librem 5 smartphone, and Freescale (now NXP) gave really detailed public documentation for their previous generation i.MX 6 family. They’ve already done pretty well on i.MX 8M processor with a 6,801 pages reference manual.

Several platforms based on NXP i.MX 8M have already been announced, but WandPi 8M is the most affordable with pricing starting at $89.

Yocto Project, Ubuntu, Android, Kodi, and Debian will be supported by the board.

Price for the three variants of the board:

  • WANDPI-8M-LITE – 1GB DDR4 + 4GB eMMC flash – $89
  • WANDPI-8M-PRO – 2GB DDR4 + 8GB eMMC flash + Dual Band WiFI and BLE – $99
  • WANDPI-8M-DELUXE – 2GB DDR4 + 16GB eMMC flash + Dual band WiFi and BLE – $119

Where to buy: See official URL above.

[Quick update based on Social media comments: Olimex OlinuXino open source hardware Allwinner based boards and Marvell ESPRESSOBin ($49 board for networking) also deserve a mention]

For an historical perspective, you may be interested in checking out what the Linux development boards list looked like in 2013.

Источник

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