Linux on arm cpu

Заводим 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

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

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

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

Источник

Установка Ubuntu Desktop 22.10 (Kinetic Kudu) на ARM CPU

[linux ubuntu]

Ubuntu — одна из популярных Linux систем и достаточно много обзоров по установке Ubuntu. В этой статье мы будем устанавливать образ Ubuntu для ARM процессора на виртуальную машину UTM. Вся установка будет проходить на Mac OS.

Читайте также:  Linux froze what to do

Загрузка установочного образа

На сайте Ubuntu доступен для скачивания только образ Ubuntu Server ARM версии 22.04 — без графического интерфейса. Но можно скачать обновленный релиз Ubuntu Desktop для ARM — Daily Build по ссылке.

Находим 64-bit ARM (ARMv8/AArch64) desktop image и скачиваем

Виртуальная машина

В качестве виртуальной машины для установки RHEL 9 использую бесплатную виртуальную машину UTM. Установить можно с помощью Homebrew, выполнив команду brew install —cask utm .

Установка Ubuntu Desktop

Настройка виртуальной машины UTM

В UTM нажимаем Create a New Virtual Machine -> Virtualize

Настройка виртуальной машины UTM

Выбираем скачанный образ и нажимаем Continue , далее оставляем опции по умолчанию

Запуск Live версии

Выбираем Try or Install Ubuntu. Запустится live образ Ubuntu. Такой образ не сохраняет свое состояние после перезагрузки.

Входим под пользователем ubuntu:

Видим рабочий стол и можем пользоваться.

Установка

Внизу справа есть ярлык для стандартной установки Ubuntu. Нажимаем и запускаем обычную установку на диск.

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

Оставляем по умолчанию стирание виртуального диска перед установкой

Создаем пользователя, под которым будем входить в систему.

Как только установка закончится, нажимаем Restart.

У меня после перезагрузки черный экран. Поэтому я просто закрываю и снова запускаю вирутальную машину.

Вход в систему

После запуска системы выбираем *Boot from next volume. Первым по умолчанию будет запуск с вирутального образа, но у нас уже есть система на диске, поэтому выбираем запуск со следующего по очереди диска.

Входим под своим пользователем

Система предлагает скачать обновления для системы. Нажимаю установить.

Теперь можно пользоваться системой и все данные будут сохраняться после перезагрузки.

Kinetic Kudu 22.10

Ссылки

Источник

4 of the Best Linux Distributions You Can Run on ARM Devices

Day by day, ARM devices get more and more popular, especially in the world of Linux. Years ago ARM just meant the Raspberry Pi. Now it means a host of devices: hobby boards like the Pi, servers, compact desktop computers and even laptops!

That is why we have decided to make a list and discuss what the best Linux operating systems for ARM devices are. Each operating system has its negatives and positives. Which one should you use? Let’s find out!

1. Arch Linux ARM

linux-arm-arch-linux-arm

Perhaps the most dedicated ARM Linux distribution project out there, Arch Linux ARM, aims to bring Linux to all sorts of ARM-based devices. Arch for ARM supports multiple different ARM releases, from ARM v5 to v8 with dozens of device-specific images.

The real benefit of using Arch Linux for ARM circles back to the reason Arch Linux proper is such a good choice: the Arch Linux User Repository. This is because a lot of programs in the AUR are set up to compile from scratch, meaning that for a lot of situations users will not need to rely on packages being ported, as most AUR programs can be ported to ARM by themselves easily.

Читайте также:  Linux посмотреть cron пользователя

2. Debian on ARM

linux-arm-debian-on-arm

Out of all the different types of Linux out there, you’ll find few reliable. This is why Debian has a home on many Linux servers, desktops, laptops and now even your favorite ARM computer, and comes with three separate releases: ARM EABI for old 32-bit devices, ARM hard-float for newer 32-bit devices, and a 64-bit ARM port for modern devices.

For those looking for a stable and reliable basis for a Raspberry Pi 3-powered home theater or Beaglebone Black ARM desktop, the Debian project may be a good place to start!

3. Manjaro ARM

linux-arm-manjaro-arm

Those who are unfamiliar with Manjaro, listen up: it’s a Linux distribution that takes the technological strength of Arch Linux and combines it with steady and stable updates, effectively turning Manjaro into a Ubuntu or Debian distro based on Arch Linux.

On ARM Manjaro’s mission is the same. Bring great Arch Linux features, but add in stability. The Manjaro ARM project does a good job at this, though at this time only supports the Raspberry Pi3 and 2. More devices like the Pi Zero and Odroid C1 (and 2) are under development.

4. Chromium OS

linux-arm-chromium-os

The best Linux distribution for ARM-based Laptops and ARM-based microcomputers doesn’t come from the Linux community. Instead, it comes (in part) from Google. Chromium OS is the open-source implementation of Google’s Chrome OS for Laptops, dongles and desktops.

Chromium OS isn’t full Linux, and when users log into it they’ll find out that the experience is essentially what users can expect on a Chromebook: a web browser, support for Chrome-based apps, and other basic tools like MP3 and video playback.

In a world where most of the technology on the Web is moving away from flash, this open-source operating makes sense, even on ARM devices. Chromium OS doesn’t have any specific builds for specific devices, but images exist for use on ARM devices here.

Conclusion

ARM is a growing competitor to the standard PC architecture and is here to stay. As more and more people go mobile or decide to indulge in small, hobbyist boards, ARM will continue to flourish. As this trend continues, we can only hope that development for high-class Linux distributions will continue as well. For now, the choices on this list are a great start.

Derrik Diener is a freelance technology blogger.

Источник

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