линукс для arm процессора

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

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

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

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

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

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

Сборка Linux

Das U-Boot

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

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

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

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

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

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

Источник

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 на microSD

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

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

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

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

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

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

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

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

Источник

Как собрать ядро linux под arm

Операционная система linux часто используется для встраиваемых (они же embedded) устройств, которые в свою очередь часто построены на основе контроллеров с архитектурой ARM.

Исходный код

Скачать исходный код ядра linux можно с http://git.kernel.org

Например, если использовать код из проекта project:

После того как исходники будут скачаны, заходим в директорию с исходным кодом ядра linux.

Для того что бы отделить результат компиляции от исходного кода, создаем директорию build

Компилятор

Распаковываем ( например в /home/user ):

И устанавливаем переменную PATH:

Задаем переменные окружения для компиляции:

Конфигурирование ядра linux

Если нужная конфигурация уже существует ( например arch/arm/configs/colibri_pxa320_defconfig ), то выполняем:

Если необходимо создать свою конфигурацию ядра linux, или изменить существующую то запускаем:

Компиляция ядра linux

Что бы скомпилировать ядро надо выполнить команду:

Когда сборка ядра linux будет закончена, оно будет лежать в ../build/arch/arm/boot/uImage

Сброка модулей ядра linux

Если какие-то опции ядра были включены как модули, то их тоже надо скомпилировать

Что бы изменить директорию (папку) в которую modules_install установит модули, указываем путь, используя переменную INSTALL_MOD_PATH.

В дальнейшем, что бы положить модули ядра на устройство, надо просто скопировать, все что лежит в директории /home/user/tmp/modules в корень файловой системы устройства. При этом важно сохранить структуру каталогов, самый просто способ — упаковать папку, а затем разархивировать ее на приборе.

Очистка проекта

Что бы удалить все файлы, созданные при компиляции:

Если же необходимо удалить файлы, полученные при конфигурации ядра linux, нам поможет Мистер Пропер :)

Источник

Linux для ARM в эмуляторе qemu

Вывести что-нибудь на экран эмулируемого устройства VersatilePB не так-то просто. Все примеры простых ядер для ARM, которые удалось найти на момент написания статьи, ограничиваются работой с последовательным портом.

Этот пост — начало серии, рассказывающей о том, как собиралось простое ядро для вывода на экран эмулируемого устройства.

На примере 2-х с небольшим тысяч строк кода будет подробно рассказано об инициализации памяти, зонах памяти, slab-аллокаторе применяемых в Linux.

Сборка ядра для архитектуры ARM (на примере linux-2.6.32.3)

Команды, приводимые далее взяты из файлов *.cmd. Эти файлы формируются автоматически системой сборки ядра, но никто не запрещает использовать команды непосредственно.

Ядро запускаемое в qemu ./arch/arm/boot/zImage получается отсечением ненужных секций от скомпилированного кода распаковки:

Этот код собирается из библиотеки(libgcc.a), файла содержащего точку входа (head.o), файла в который включены двоичные данные упакованного ядра (piggy.o) и кода на Си выполняющего распаковку (misc.o):

Упакованное ядро добавляется в piggy.S строкой:

piggy.o компилируется командой:

Файл piggy.gz получается командой:

Обратите внимание на две точки между директориями compressed и Image. Они означают переход на один уровень вверх в дереве файловой системы, т.е. Image расположен в arch/arm/boot/.
Такие сложности обусловлены автоматической генерацией команд сборки.

Image получается отсечением ненужных секций от скомпилированного ядра.:

Не упакованое ядро (vmlinux) получается так:

И наконец файл main.c, который мы будем рассматривать входит в состав init/built-in.o:

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

user/arm-2011.09/bin/ — путь начинающийся от домашнего каталога автора до директории, содержащий тулчейн. Если вы скопируете тулчейн для ARM в свой домашний каталог и измените «user», на имя пользователя, то у Вас всё должно получиться.

Команды объединены в исполняемый файл make (не путайте с одноименной утилитой).

Код непосредственно после отделения от дерева исходников ядра, включая всё, о чем пойдет речь в следующих постах arm_qemu_max.

Сокращенный вариант, без инициализации памяти и slab-аллокатора (только вывод на экран) arm_qemu_min.

Текст остальных статей написан. Остается только опубликовать.

Источник

Создание образа Ubuntu для ARM «from scratch»

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

Иными словами хвататься за LFS, buildroot или yocto (или еще что-то) еще рано, а начинать уже нужно. Для богатых (у меня на пилотных образцах 4GB eMMC) есть выход раздать разработчикам дистрибутив, который позволит оперативно доставить что-то чего не хватает в данный момент, а затем мы всегда можем собрать списки пакетов и сформировать список для целевой rootfs.

Данная статья не несет в себе новизны и представляет из себя простую copy-paste инструкцию.

Цель статьи сборка Ubuntu rootfs для ARM борды (в моем случае на базе Colibri imx7d).

Сборка образа

Собираем целевой rootfs для тиражирования.

Распаковываем Ubuntu Base

Релиз выбираем сами исходя из необходимости и собственных предпочтений. Здесь я привел 20.

Проверка поддержки BINFMT в ядре

Если у вас распространенный дистрибутив, то поддержка BINFMT_MISC есть и все настроено, если нет — то я уверен, что вы знаете как включить поддержку BINFMT в ядре.

Убедитесь, что BINFMT_MISC включено в ядре:

Теперь надо проверить настройки:

Зарегистрировать вручную можно с помощью, например, вот этой инструкции.

Настройка qemu static arm

Теперь нам понадобится экземпляр qemu собранный статически.

Chroot

Любуемся на полученный результат:

Ради интереса замерим размер до и после установки минимального (для меня) набора пакетов:

Установим интересующие нас пакеты:

Заголовочные файлы ядра, модули, это отдельный разговор. Загрузчик, ядро, модули, device tree через Ubuntu мы конечно же не поставим. Они придут к нам извне или сами соберем или нам их выдаст производитель борды, в любом случае это за гранью данной инструкции.

До какой-то степени расхождение версий допустимо, но лучше взять их со сборки ядра.

Смотрим, что получилось и получилось немало:

Не забудьте задать пароль.

Пакуем образ

Дополнительно можем поставить etckeeper с настройкой autopush

Ну допустим раздали мы нашу сборку, работа пошла, как лучше собрать потом различные версии нашей системы.

На помощь нам может прийти etckeeper.

Настроим autopush

Можем конечно заранее же создать ветки на устройстве (допустим сделать скрипт или службу, которая отработает при первом запуске).

А можем поступить хитрее.

Ленивый путь

Пусть у нас будет какой-то уникальный идентификатор, допустим серийный номер процессора (ну или MAC — серьезные компании покупают диапазон):

Тогда мы можем использовать его для имени ветки в которую будем пушить:

Создадим простой скрипт:

И всё — через некоторое время можем посмотреть изменения и сформировать список пакетов для целевой прошивки.

Источник

Понравилась статья? Поделиться с друзьями:

Не пропустите наши новые статьи:

  • линукс для 32 битной системы
  • линукс для 2 гб озу
  • линукс дистрибутивы для новичков
  • линукс дистрибутивы для arm
  • линукс дистрибутив для системного администратора

  • Операционные системы и программное обеспечение
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest
    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии