- Заводим GNU/Linux на ARM-плате с нуля (на примере Kali и iMX.6)
- Сборка корневой файловой системы
- Сборка Linux
- Das U-Boot
- Вместо заключения
- Особенности реализации ядер Линукс на ARM архитектуре
- LXF132:ARM
- Материал из Linuxformat.
- Содержание
- ARM: Наше секретное оружие
- Что такое RISC?
- История героя
- ARM: Особенности архитектуры
- Linux на мобильном ARM
- ARM Linux Internet Platform (http://linux.onarm.com)
- Ångström (http://www.angstrom-distribution.org)
- Другие ОС
- ARM на вашем ПК
- Оборудование
- TI OMAP Zoom II
- Iyonix PC
- HP iPAQ
Заводим GNU/Linux на ARM-плате с нуля (на примере Kali и iMX.6)
tl;dr: собираю образ Kali Linux для ARM-компьютера, в программе debootstrap , linux и u-boot .
Если вы покупали какой-нибудь не очень популярный одноплатник, то могли столкнуться с отсутствием для него образа любимого дистрибутива. Приблизительно то же самое случилось с планируемым Flipper One. Kali Linux под IMX6 просто нету (я готовлю), поэтому собирать приходится самостоятельно.
Процесс загрузки достаточно простой:
- Инициализируется железо.
- Из некоторой области на запоминающем устройства (SD-карта/eMMC/etc) считывается и выполняется загрузчик.
- Загрузчик ищет ядро операционной системы и загружает его в некоторую область памяти и выполняет.
- Ядро загружает всю остальную ОС.
Для моей задачи хватает такого уровня детализации, подробности можете прочесть в другой статье. Упомянутые выше «некоторые» области отличаются от платы к плате, что и создаёт некоторые сложности с установкой. Загрузку серверных ARM-платформ пытаются стандартизовать с помощью UEFI, но покуда это доступно не для всех, придётся собирать всё по отдельности.
Сборка корневой файловой системы
Для начала нужно подготовить разделы. Das U-Boot поддерживает разные ФС, я выбрал FAT32 для /boot и ext3 для корня, это стандартная разметка образов для Kali под ARM. Я воспользуюсь GNU Parted, но вы можете сделать то же самое более привычным fdisk . Также понадобятся dosfstools и e2fsprogs для создания ФС: apt install parted dosfstools e2fsprogs .
- Отмечаем SD-карту как использующую MBR-разметку: parted -s /dev/mmcblk0 mklabel msdos
- Создаём раздел под /boot на 128 мегабайт: parted -s /dev/mmcblk0 mkpart primary fat32 1MiB 128MiB . Первый пропущенный мегабайт необходимо оставить под саму разметку и под загрузчик.
- Создаём корневую ФС на всю оставшуюся ёмкость: parted -s /dev/mmcblk0 mkpart primary ext4 128MiB 100%
- Если вдруг у вас не создались или не изменились файлы разделов, надо выполнить `partprobe`, тогда таблица разделов будет перечитана.
- Создаём файловую систему загрузочного раздела с меткой BOOT : mkfs.vfat -n BOOT -F 32 -v /dev/mmcblk0p1
- Создаём корневую ФС с меткой ROOTFS : mkfs.ext3 -L ROOTFS /dev/mmcblk0p2
Отлично, теперь можно её заполнять. Для этого дополнительно потребуется debootstrap , утилита для создания корневых ФС Debian-подобных операционных систем: apt install debootstrap .
- Монтируем раздел в /mnt/ (используйте более удобную для себя точку монтирования): mount /dev/mmcblk0p2 /mnt
- Собственно заполняем файловую систему: debootstrap —foreign —include=qemu-user-static —arch armhf kali-rolling /mnt/ http://http.kali.org/kali . Параметр —include указывает дополнительно установить некоторые пакеты, я указал статически собранный эмулятор QEMU. Он позволяет выполнять chroot в ARM-окружение. Смысл остальных опций можно посмотреть в man debootstrap . Не забудьте, что не любая ARM-плата поддерживает архитектуру armhf .
- Из-за разницы архитектур debootstrap выполняется в два этапа, второй выполняется так: chroot /mnt/ /debootstrap/debootstrap —second-stage
- Теперь нужно зачрутиться: chroot /mnt /bin/bash
- Заполняем /etc/hosts и /etc/hostname целевой ФС. Заполните по аналогии с содержимым на вашем локальном компьютере, не забудьте только заменить имя хоста.
- Можно донастроить всё остальное. В частности я доустанавливаю locales (ключи репозитория), перенастраиваю локали и часовой пояс ( dpkg-reconfigure locales tzdata ). Не забудьте задать пароль командой passwd .
- Задаём пароль для root командой passwd .
- Приготовления образа для меня завершаются заполнением /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 на файловой системе загрузочного раздела, пора разбивать флешку.
- Клонировать ядро слишком долго, поэтому просто скачаю: 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
- Конфигурируем перед компиляцией: make ARCH=arm KBUILD_DEFCONFIG=imx_v6_v7_defconfig defconfig . Конфиг находится в директории arch/arm/configs/ . Если такового нет, вы можете попробовать найти и скачать готовый и передать название файла в этой директории в параметр KBUILD_DEFCONFIG . В крайнем случае сразу переходите к следующему пункту.
- Опционально можно докрутить настройки: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
- И кроскомпилируем образ: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
- Теперь можно скопировать файлик с ядром: cp arch/arm/boot/zImage /mnt/boot/
- И файлы с DeviceTree (описание имеющегося на плате железа): cp arch/arm/boot/dts/*.dtb /mnt/boot/
- И доустановить собранные в виде отдельных файлов модули: 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обираем сам загрузчик:
- Клонируем стабильную ветку репозитория: git clone https://gitlab.denx.de/u-boot/u-boot.git -b v2020.10
- Переходим в саму директорию: cd u-boot
- Готовим конфигурацию сборки: make mx6ull_14x14_evk_defconfig . Это работает только если конфигурация есть в самом Das U-Boot, в ином случае вам потребуется найти конфиг производителя и положить его в корень репозитория в файл .config , или собрать иным рекомендованным производителем образом.
- Собираем сам образ загрузчика кросс-компилятором armhf : make CROSS_COMPILE=arm-linux-gnueabihf- u-boot.imx
В результате мы получаем файл u-boot.imx , это готовый образ, который можно записывать на флешку. Записываем на SD-карту, пропустив первые 1024 байта. Почему я выбрал таргет u-boot.imx ? Почему пропустил именно 1024 байта? Так предлагают сделать в документации. Для других плат процесс сборки образа и записи может немного отличаться.
Готово, можно загрузиться. Загрузчик должен сообщить собственную версию, некоторую информацию о плате и попытаться найти образ ядра на разделе. В случае неудачи будет пытаться загрузиться по сети. В целом вывод довольно подробный, можно найти ошибку в случае проблемы.
Вместо заключения
А вы знали, что лоб у дельфина не костистый? Это буквально третий глаз, жировая линза для эхолокации!
Источник
Особенности реализации ядер Линукс на ARM архитектуре
Добрый день, уважаемые форумчане! Я только начинаю погружаться в линукс на работе и для начала мне задали разобраться особенностях реализации ядер Линукс на ARM архитектуре, но все что я накопал — это то ,что на каждое устройство arm, нужен собственный дистрибутив, а почему это происходит ,я не понимаю. Помогите разобраться!)
Если есть какие-то книги по ядру линукс ,не обязательно связанные с arm, посоветуйте пожалуйста!
arm — нестандартное васянское говно без acpi/uefi (хотя сейчас уже начинают их там внедрять)
Armbian смотрит неодобрительно.
Под каждую плату нужна своя сборка ядра и всякие навороты в виде блобов для 3д и декодирования видео, например.
Дистрибутив тут роли не играет.
А почему для x86 подойдет одна и та же сборка, а для arm каждый раз нужно свою сборку делать? в чем разница между этими архитектурами в этом плане?
в первом посте написано
… дебилом, неспособным без пеленок в виде acpi написать инициализацию nvic.
по-моему, дебилы это те, которые не знают, зачем нужна стандартизация, но любят nih на коленке, тк по их менинию они «способны»
корбу достандартизировали до такого, что 3.0 так никто и не реализовал.
в армах далашит и есть стандарт, читай и делай. но дебил не будет делать, он надеется на «стандартизацию», что бы дядя ему по стандарту всё сделал и можно было скачать анонимно без смс и заюзать на халяву.
в даташите на арм нет кучи того, чем занимается фирмварь
сомневаюсь что ты самолично написал полностью фирмарь железки, с которой это пишешь, как и вся твоя семья и знакомые, использующие разнообразные компы
в даташите на арм нет кучи того, чем занимается фирмварь
ты не поверишь, но я вот именно сейчас сижу и пишу фирмварь для арм. по даташиту.
вот когда напишешь для нескольких поколений массовых устройств, на которые можно будет устанавливать разные операционные системы — тогда поговорим
типичная отговорка. вот когда маск на марсе высадиться — тогда поговорим. а пока не высадился — россия космическая держава.
Процесс загрузки на ARM (+/-)
- После включения начинает работать встроенный загрузчик, которому за счёт аппаратной подтяжки пинов можно сказать где искать следующую часть (MMC, eMMC, USB, … + смещение) (актуально для всяких Dev KIT).
- Зависящий от процессора загрузчик от вендора. Первоначальная настройка выводов и загрузка приложения или следующего загрузчика, например U-Boot.
- U-Boot специально собранный для конкретной платы. Настройка выводов, загрузка Device Tree и Linux Kernel.
- Linux Kernel …
Таким образом от конкретной платы зависят:
- Загрузчик вендора,
- U-Boot
- Настройки U-Boot
- Device Tree
А ядро должно содержать все необходимые драйвера, указанные в Device Tree. Тогда оно может быть почти любым. Но выгоднее собрать собственное минимальное ядро.
Источник
LXF132:ARM
Материал из Linuxformat.
Содержание
ARM: Наше секретное оружие
Мир высоких технологий напоминает Северную Америку начала XIX века: помимо хорошо обжитых территорий, где цивилизация уже приняла устоявшиеся формы, есть Дикий Запад, который по-прежнему нуждается в проводниках, исследователях и отважных авантюристах. Мобильные устройства – один из сравнительно новых и все еще малоосвоенных уголков ИТ-мира. Карманные телефоны и компьютеры нельзя назвать новинкой, но в последние несколько лет появились устройства, сочетающие в себе мощь ПК начала этого века, широкополосные каналы передачи данных и мобильность сотового телефона. В этой связи нельзя не отметить удивительную гибкость Linux. Кто бы мог представить, что ОС, корни которой лежат в мире больших многопользовательских машин, так хорошо подойдет для карманных компьютеров?
Мобильные устройства даровали вторую жизнь и процессорам семейства ARM, о которых в последнее время трезвонят все СМИ. Их главное преимущество перед Intel – способность показывать высокую производительность при низкой тактовой частоте (а значит, и энергопотреблении). Не так давно компания ARM распространила видеоролик, в котором продемонстрировала сравнение производительности процессоров Cortex-A9 и Intel Atom: результаты были сопоставимы, а частота работы ARM9 – меньше в три раза. В то время как появление каждого нового процессора Intel сопровождает изрядная шумиха, процессоры ARM тихо делают свое доброе дело, и вы, скорее всего, уже пользуетесь ими, даже не подозревая об этом. Маршрутизаторы Marvell и смартфоны Nokia, Google Nexus One и IP-телефон Snom-100 базируются на ARM и Linux.
Эта статья задумана как туристический путеводитель по стране мобильного ARM: мы сделаем обзор открытого ПО, популярного оборудования и средств разработки. Linux и его инструменты обычно кросс-платформенны, и производители мобильной техники получают целую экосистему программ и утилит даром. Тем не менее, создание приложений для мобильных устройств обладает своей спецификой, особенно когда система разработчика и целевая система используют разные архитектуры.
Что такое RISC?
Ранние микропроцессоры были ориентированы на разработку программ на языке ассемблера (или даже в машинных кодах). Для них было характерно наличие большого числа инструкций, выполняющих сложные операции. Поскольку регистры в прямом смысле стоили дорого, их было немного, а операнды практически всех команд могли поступать как из регистров, так и из ОЗУ.
По мере развития компиляторов и других технологий разработчикам стало очевидно, что более эффективна другая архитектура – со сравнительно небольшим числом инструкций и с большим объемом регистрового файла. Она получила название RISC – Reduced Instruction Set Computer (Компьютер с сокращенным набором команд), а прежняя архитектура была названа CISC(Complete Instuction Set Computer). Практически все современные процессоры (за исключением Intel) относятся к архитектуре RISC.
История героя
Судьба – ироничная штука. Семейство Intel x86 ведет свой родот процессоров, которые предназначались для микроконтроллеров, а ARM изначально задумывался как ЦП для персональных настольных компьютеров (и даже «работал по специальности» в ПК серии Acorn Archimedes и ее немногочисленных клонах) – но увы, к моменту выхода первого ARM (1985 год) лидер в мире ПК уже определился. И хотя ARM1 – настоящий 32‑битный процессор с тактовой частотой 8 Мгц – мог померяться силами с тогдашним фаворитом, 80286 (80386 появился в том же 1985 году, но на рынок ПК вышел значительно позже), в дальнейшем ARM’ам пришлось осваивать устройства поскромнее.
Одним из преимуществ ARM перед конкурентами было то, что их создатели могли начать жизнь с чистого листа. Если инженерам Intel приходилось решать проблемы обратной совместимости, разработчики ARM могли позволить себе простой и элегантный RISC-дизайн. Мудрые решения принесли достойные плоды: если в сегменте ПК ARM не повезло, то в других областях, где требовались производительные и экономичные процессоры, эта архитектура оказалась чрезвычайно популярной. Считается, что чипов ARM было произведено больше, чем любых других. Как и ранняя Intel, компания ARM не стремилась монополизировать производство процессоров своей архитектуры, так что большая их часть изготовлена за пределами ARM. Среди лицензиатов отметились Apple, Broadcom, легендарная Digital Equipment Corporation и сама Intel с XScale.
Неудивительно, что при таком многообразии производителей история поколений ARM выглядит немного запутанной. Помимо названий самих процессоров (ARM1, ARM7TDMI, ARM11, ARM Cortex), в технических спецификациях принято указывать версию архитектуры (например, ARMv1, ARMv4T, ARMv7).
Современная история ARM начинается с архитектуры ARMv4. В ней был впервые реализован блок управления памятью, что позволило запускать современные ОС, в том числе Linux. Надо заметить, что далеко не все области применения ARM требуют защиты памяти и многозадачности, поэтому разработка и выпуск процессоров без блока управления памятью продолжаются и в наше время.
Архитектура ARMv4 и новейшая ARMv7 различаются весьма значительно. Если в первой отсутствовала операция целочисленного деления (не говоря уже о делении с плавающей точкой), то в новых редакциях предусмотрены команды, предназначенные для ускорения обработки мультимедиа-данных (аналог наборов Intel SSE), что, вероятно, нарушает принципы идеологии RISC, но способствует распространению процессоров ARM на современных мобильных устройствах. Полное описание поколений ARM (как и другие полезные сведения) вы найдете в книге «ARM System Developer’s Guide» (ISBN 1‑55860‑874‑5), выпущенной Elsevier (см. http://books.google.com/books?id=vdk4ZGRqMskC).
ARM: Особенности архитектуры
Как и положено RISC-системе, ARM обладает расширенным набором регистров. Всего их 17, причем 13 из них являются регистрами общегоназначения (т.е. могут использоваться по усмотрению программиста).
Адрес возврата из процедуры сохраняется не в стеке, а в специальном регистре. Это позволяет реализовать над ним весьма элегантные операции, но нужно помнить, что вложенных вызовов процедур бывает много, а регистр возврата – только один. Перед вызовом очередной процедуры его содержимое нужно где-то сохранять (а затем – восстанавливать).
Большая часть инструкций ARM включает префикс условного выполнения, позволяющий организовать ветвление без операций перехода. Команда выполняется лишь тогда, когда состояние флагов, установленных последней операцией сравнения, отвечает условию префикса. При грамотном использовании это серьезно повышает производительность.
Историю развития Intel можно описать как переход 8-16-32-64 бита, а у ARM наблюдалось обратное движение: изначально 32-битные (кстати, при этом все инструкции одинаковы по длине – 4 байта), данные процессоры обзавелись добавочным 16-битным режимом, с целью повысить компактность кода и быстродействие на 16-битных шинах. Регистры процессора остаются 32-битными, но не все они доступны так же свободно, как в 32-битном режиме. Порядок байтов процессора в ARM может быть как прямым (little-endian), так и обратным (big-endian).
Linux на мобильном ARM
Дистрибутивов Linux для ARM существует немало: практически у каждого разработчика мобильных устройств с поддержкой Linux есть собственный вариант, не считая инициатив сообщества: например, портирования Linux на Windows-смартфоны HTC. Мы же рассмотрим две системы, ориентированные сразу на несколько устройств (они также могут служить основой для дальнейших разработок).
ARM Linux Internet Platform (http://linux.onarm.com)
Так выглядит ARM Linux Internet Platform.
Данный продукт создается группой заинтересованных компаний специально для мобильных устройств. ARM Linux Internet Platform – это своего рода Moblin (простите, MeeGo) для ARM. Логически система разделяется на три уровня. Самый нижний – Linux Board Support Package – включает ядро с драйверами, стандартные библиотеки C, оптимизированные под конкретную модель процессора, и средства настройки оборудования. Поверх него реализована общая Linux-платформа (Linux Generic Platform), включающая шину D-Bus, слой абстракции HAL от FreeDesktop.org, виртуальную файловую систему GnomeVFS, X-сервер, менеджер сетей NetworkManager и многое другое. На самом верхнем уровне реализован пакет приложений (Application Suite), содержащий компоненты графического интерфейса пользователя, движок для просмотра web-страниц, мультимедиа. В качестве оконного менеджера используется Matchbox, известный пользователям Linux-устройств Openmoko Neo 1973 и Nokia 770.
Для разработки приложений можно применять основанный на GCC инструментарий Scratchbox (http://www.scratchbox.org), отличительной чертой которого является возможность не только скомпилировать программу для ARM на платформе x86, но и сразу же запустить ее на выполнение в Qemu (подробности ниже).
В настоящее время на основе Linux Internet Platform реализовано несколько готовых систем. Это базовая платформа (Generic Platform), задуманная, как нетрудно догадаться, для последующей специализации. По умолчанию она ориентирована на архитектуру ARMv5T и не содержит средств работы со специализированными устройствами. В пакет приложений базовой платформы входят миниатюрный рабочий стол Matchbox2 (и графическая библиотека Cairo), браузер Nitehawk и мультимедиа-плейер на основе GStreamer. На сайте проекта можно найти инструкции по сборке Generic Platform для Qemu.
Платформа n8x0 предназначена для планшетов Nokia N770/N8x0. Mistral OMAP35x EVM – система для плат OMAP35x EVM, Beagle board – Linux для плат Beagleboard. S3c64xx – платформа для платы Samsung SMDK6400 и ее родственников. Zoom2 – Linux-платформа для очень интересного устройства Texas Instruments Zoom II.
Ångström (http://www.angstrom-distribution.org)
Видели ли вы когда-нибудь мобильное устройство с чистым консольным интерфейсом? Дистрибутив Ångström предоставит вам такую возможность. Его название намекает на небольшие размеры и скромные требования. По словам разработчиков, Ångström можно запустить на устройстве с 4 МБ флэш-памяти, а в будущем, утверждают они, система сможет работать и на тостере.
Помимо консольного интерфейса, Ångström поддерживает графическую оболочку GPE Palmtop Environment и «настоящий» X11. Поставляемый в системе набор шрифтов поддерживает кириллицу, латиницу и иврит. В планах разработчиков – портирование Qtopia. Список поддерживаемой аппаратуры включает различные модели Sharp Zaurus, HP iPaq, Nokia 770, HTC Universal и ряд менее распространенных устройств.
Другие ОС
Графический рабочий стол RISC OS. Где же вы, ребята, были в 95-м году?
Linux – предпочтительная, но не единственная ОС для процессоров ARM Symbian,Windows CE, QNX – вот лишь часть систем, рассчитанных на этот процессор. Мы же рассмотрим внимательнее две из сравнительно редко используемых, но весьма интересных ОС.
Было бы странно, если бы Acorn Archimedes, полноценный ПК своего времени, не обладал операционной системой. Она называлась RISC OS (http://www.riscos.com) и уже в 1988 году поддерживала добровольную корпоративную многозадачность, что продолжает делать и до сих пор (напомню, что в современных ОС применяется принудительная – вытесняющая многозадачность). Если бы звезды расположились иначе, RISC OS вполне могла бы занять нишу MS DOS. Как это ни удивительно, RISC OS до сих пор разрабаты вается несколькими компаниями, в том числе Castle Technology. Это однопользовательская система с крайне слабыми средствами защиты программ друг от друга. У нее есть несколько графических оболочек, выполненных на уровне конца 90‑х, и набор приложений того же уровня.
Хотя настоящий Linux может работать только на процессорах с аппаратной защитой памяти, для чипов, лишенных этой роскоши, существует своя Linux-подобная ОС – uClinux (http://www.uclinux.org), изначально базирующаяся на исходных текстах ядра Linux 2.0. В отличие от RISC OS, uClinux не ориентирована специально на процессоры ARM и поддерживает множество других архитектур.
uClinux сделана максимально похожей на Linux, но из-за принципиальной разницы в используемом оборудовании между этими ОС существуют некоторые отличия. В uClinux отсутствует защита памяти, так что любой процесс может «завалить» всю систему. Все процессы выполняются в общем адресном пространстве, и нет системного вызова fork() – есть только функция vfork(), которая похожа, но не идентична одноименной в Linux. Поскольку старый и новый процессы разделяют адресное пространство, попытка выполнять их одновременно может привести к ошибкам. В uClinux выполнение процесса-родителя, вызвавшего vfork(), приостанавливается до тех пор, пока не завершится дочерний процесс. Вместо классической функции malloc() в uClinux используется вызов mmap() (библиотека uClibc – аналог libc – в целях повышения совместимости реализует malloc() как обертку вокруг mmap()).
ARM на вашем ПК
ARM Linux в окне Qemu, запущенном в Linux для x86.
Переходя от программной части нашего экскурса к аппаратной, нельзя не упомянуть Qemu, виртуальную машину, способную эмулировать процессоры ARM. Не побоюсь сказать, что каждый разработчик программ для ARM Linux имеет дело с Qemu. Дело в том, что его можно использовать не только для запуска ARM-программ, но и для их отладки (именно так и поступает уже упомянутый Scratchbox).
Поскольку Qemu входит во все популярные дистрибутивы Linux и собирать его из исходных текстов, в общем-то, нужды нет, мы опустим подробности данной процедуры. Вместо этого рассмотрим установку самого Linux в виртуальную машину. Вам понадобится либо дистрибутив Linux для ARM в виде образа, понятного Qemu, либо образ диска Qemu с уже установленным ARM Linux. Образы ядра и временной файловой системы можно найти, например, на http://people.debian.org/
Если вы хотите установить Linux на Qemu самостоятельно, сначала нужно создать образ диска. Например, команда
сгенерирует его в формате Qemu и объемом 8 ГБ. Далее вам понадобятся ядро системы (например, vmlinuz-2.6.18‑6‑versatile) и образ временной файловой системы (скажем, initrd.img-2.6.18‑6‑versatile). При использовании названных компонентов команда для запуска Qemu в режиме эмуляции ARM может выглядеть так:
В результате будет начата стандартная процедура инсталляции Linux. При запуске системы с образа, на котором она предустановлена, команда для старта Qemu может выглядеть вот так:
Добавление поддержки сети в Qemu – отдельная тема. Скорее всего, виртуальный сетевой адаптер будет единственным средством обмена данными между вашей ARM-машиной и внешним миром. Инструкции по настройке виртуальной сети для Qemu зависят от параметров конкретной ОС, так что рекомендуем вам обратиться к документации и форумам.
Оборудование
Как уже было сказано, в мире существует великое множество устройств, сердцем (или мозгом?) которых служит ARM. Ниже приведены три из них, причем каждое (в некотором роде) характеризует целый сектор применения ARM и Linux.
TI OMAP Zoom II
TI OMAP34X Zoom II — мечта хакера.
Если вы ничего не слышали о Texas Instruments OMAP34X Zoom II, в этом нет ничего удивительного. Данное устройство рассчитано не на конечных пользователей, а на разработчиков мобильных приложений. Тем не менее, возможности Zoom II способны порадовать сердце любого ценителя гаджетов: 4‑дюймовый емкостной сенсорный экран с поддержкой модной нынче технологии жестов и HD-видео (устройство может выводить видео и на большой HD-экран), настоящая полноразмерная клавиатура, Wi-Fi, Bluetooth, поддержка 3G-модема, возможность установки SIM-карты, 8‑МПикс камера и акселерометр, процессор TI OMAP3430, основанный на новейшей архитектуре ARMv7, 256 МБ быстрой DDR-памяти и 512 МБ флэш – очень достойные характеристики.
Аппаратная поддержка OpenGL ES 2.0 (ответ платформе Intel Atom) позволяет устройству работать с 3D-графикой в реальном времени, а всевозможные расширенные наборы инструкций ускоряют общую обработку мультимедиа. К этому надо добавить входящую в комплект мощную отладочную плату (одних только разъемов mini-USB – 5 штук!) и средства для разработки приложений.
Symbian Foundation использует TI OMAP Zoom II как эталонное устройство при создании открытых приложений Symbian. Zoom II не обошли вниманием и разработчики Android и мобильных Linux-систем. Впрочем, если вам уже не терпится заполучить Zoom II в собственное пользование, мне, возможно, придется охладить ваш пыл: его цена существенно превышает 1000 долларов.
Iyonix PC
Если же вы – любитель пооригинальничать и хотите иметь у себя дома ПК с процессором ARM, вам не обязательно добывать где-то «старину Архимеда». Компания Castle Technology, одна из наследниц Acorn, предлагает всем желающим Iyonix PC, основанный на процессоре Intel XScale и оснащенный новой версией RISC OS, но поддерживаемый и распространенными дистрибутивами ARM Linux для настольных ПК. По отзывам пользователей, производительность Iyonix PC сопоставима с ранними Pentium IV, в то время как цена соответствует современным компьютерам сегмента Low-End. Что же касается возможности приобретения Iyonix PC в нашей стране, то я предоставляю желающим (буде таковые найдутся) пройти этот квест самостоятельно.
HP iPAQ
HP iPAQ собственной персоной.
Если вы собираетесь заняться программированием для ARM, эмулятор Qemu, при всех своих возможностях, вряд ли сильно вдохновит вас. В конце концов, мы ведь хотим видеть наши программы на настоящем устройстве, не так ли? Однако профессиональное решение, подобное TI OMAP Zoom 2, для большинства из нас будет слишком дорогим, а Iyonix PC – слишком экзотичным (да и доставить в нашу страну этот ПК будет непросто). Я уж не говорю о том, что при всей нашей любви к электронной технике ради нее самой, далеко не все линуксоиды захотят покупать устройство, которое трудно применять для чего-то еще, кроме отладки собственных приложений.
Хорошим выбором для Linux-разработчика могут стать наладонники и смартфоны iPAQ, которые ныне выпускаются компанией Hewlett-Packard. Одно из преимуществ HP iPAQ – активная поддержка со стороны сообщества Linux, в частности, разработчиков Scratchbox. Устройства продаются с предустановленной мобильной Windows, но установить на них Linux – не проблема.
На сайте http://www.handhelds.org (и многих других) можно найти советы, как оснастить iPAQ различными дистрибутивами (как минимум – Familiar Linux и Ångström), создав резервную копию Windows. После базовой установки Linux вы сможете подключить устройство к внешнему миру, используя стек TCP/IP, через Wi-Fi, Bluetooth, USB и даже последовательный порт. Теперь вы получаете всю ту свободу, которую обычно дает вам Linux. Можно поставить инструментарий разработчика GNU на само устройство, но удобнее все же установить кросс-платформенную систему сборки на «большом компьютере».
Итак, будем считать, что вы выбрали платформу для тестирования и отладки программного обеспечения, ориентированного на ARM. В следующей статье речь пойдет о самих средствах разработки.
Источник