Как установить linux на arm

Обновлено: 07.07.2024

Что необходимо для портирования какого-либо дистрибутива GNU/linux на arm-систему? C х86 все всегда было понятно, качаешь дистрибутив, будь то бунта, федора, арч и устанавливаешь, дело остается за драйверами устройств, ответственность за которые ложится собственно на производителей устройств, но иногда можно найти и свободные дрова.

С arm все совершенно непонятно. Целая туча различных SoC, и еще большая туча различных дистрибутивов для каждой их них. То есть, грубо говоря, дистр Дебиана для ARMv7 SoC от Broadcom не подойдет для ARMv7 SoC от Allwinner, им по меньшей мере нужны различные ядра, хотя набор команд у них один и тот же. Вот и вопрос - как портируется ядро и дистр под конкретную SoC? Какую информацию должен предоставить разработчик SoC'a сообществу для создания порта (исходники дров, даташиты)?

даташит на soc, даташит на борду, драйвера на soc и всё внешнее что есть на борде

всего этого ты никогда не увидишь либо увидишь только в виде блобов

если повезёт, часть поддуржки soc можешь увидеть в модифицированных производителем исходниках какого-нибудь ядра 2.6.8 времён андропова, которое собирается только опять же модифицированным компилятором

это из моего опыта с роутерными mips

А если к примеру взять Raspberry Pi, для которой доступны Raspbian и Pidora, созданные вроде как сообществом, они тоже завязаны на блобах для Broadcom BCM2835?

Raspberry Pi can use a VideoCore IV GPU via a binary blob

На х86-based машинах видеокарточки тоже зачастую через блобы работают. Но при этом один_и_тот_же дистр демьяна я могу установить как на какой-нибудь пень 4, так и на свой новенький Haswell. Речь идет не о конкретном элементе SoC'a (видеочипе в данном случае), а о SoC'e в целом. Несмотря на одинаковые наборы команд (в одном случае x86, в другом ARMv7), для каждого ARMv7 SoC'a делают индивидуальный дист. Вопрос даже не зачем (дело, как я понимаю, в отсутствии присущей IBM-pc унификации, во главе которой стоит дядя BIOS), а как? Сырцы дистров и ядра у меня есть, спасибо GNU GPL, что дальше? Что нужно получить от производителя SoC'a, что уже есть у тех, кто двигает Pidoru и Raspbian.

Зачем усложнять то? Ставь тот же дебиан и усе.


Что необходимо для портирования какого-либо дистрибутива GNU/linux на arm-систему?

Сырцы дистров и ядра у меня есть

нет, нету, скорее всего. я уже написал, в ядре должна быть поддержка конкретной soc, даже чтобы просто стартануть голое ядро с консолью на uart

Что нужно получить от производителя SoC'a

без NDA ты ничего не получишь

поставить нельзя, его нужно как-то изменить, пропатчтить

Raspbian есть вроде :)

ждут когда производитель soc или устройств на нём даст sdk/закоммитит поддержку в ядро

Думаю стоит посетить страничку проекта. Должна быть информация.

Признаюсь, что ниуя там не понял, поэтому и спросил тут.

Тогда ждем аналитиков.

Тут ты не совсем понял. Для ARM-девайса нужна rootfs и ядро.

Первое — довольно универсально, то есть пойдёт на любой ARM-машине, но есть нюансы вроде поддержки hardfp, и тд — пойдёт уже не на всех машинах, но где пойдёт там будет быстрее. Так что именно отдельный дистрибутив на каждую машину не нужен.

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

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

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 .

Размечаем SD-карту:

  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

Собираем ФС:

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 на файловой системе загрузочного раздела, пора разбивать флешку.

Das U-Boot

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

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

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

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

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

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

Посетитель нашего сайта прислал такой любопытный вопрос:

Здраствуйте у меня есть мини-PC ug 802, как я могу установить на него линукс? teltar

В чем разница между компьютером и смартфоном или планшетом?

Какие ОС можно установить на мобильные устройства?

Так вот, все программы, в том числе и операционная система, должны быть разработаны специально под эту архитектуру, для того чтобы работать на этом оборудовании. Посему, обычные версии Linux, устанавлеваемые на десктопы или серверы здесь не подойдут. К счастью, есть множество дистрибутивов и версий для этой архитектуры. Начиная с пресловутой Android, которой оснащены большинство смартфонов и заканчивая экзотическими дистрибутивами, вроде специализированного Backtrack (ныне Kali Linux). Но больший интерес, конечно, представляют какие-то более известные дистрибутивы.

Оказалось, информации об использовании Linux на android-устройствах довольно много.

Что такое мини-PC?

Внешний вид и комплектация

UG802 поставляется в небольшой чёрной коробке из плотного картона:




На втором уровне находятся аксессуары:



кабель в плотной оплётке:



Зарядного устройства в комплекте нет.

Устройство без опознавательных знаков и множеством вентиляционных отверстий (в обновлённой версии уже присутствует логотип):


Вентиляционные отверстия со всех сторон:


Сбоку находится слот для microSD карт памяти:


Снизу microUSB(для подключения питания), USB для подключения мыши/клавиатуры/хаба:


Под колпачком находится HDMI-male, что позволяет подключать миниПК непосредственно к телевизору. Если HDMI-порт направлен в стену, то можно воспользоваться HDMI-удлинителем, который входит в комплект:


Вес составляет 31г:


UG802 выполнен полностью из пластика. Сравнение размеров с флешкой:





Я подключал различные устройства через вот такой активный хаб:



Питание для UG802 я тоже брал из него. Внешние HDD-накопители, flash-накопители, USB-клавиатура, USB-мышь — всё распознавалось и работало как положено. Единственное, что можно отметить — при вводе с клавиатуры наблюдается некоторая задержка появления символов на экране.
Полноценная клавиатура и мышь — это не сильно удобные средства управления. UG802 позиционирует больше как мультимедийное устройство, и намного удобнее им управлять устройством, которое совмещает в себе мышь и клавиатуру. Например, в Песочнице есть обзор пульта Mele F10. Либо ещё есть интересное устройство iPazzPort, с русскими буквами:

Программное обеспечение и способы применения

В UG802 установлен лаунчер оптимизированный для работы в качестве мультимедийного центра:




Различные дополнительные настройки:


Можно выставить рамку изображения:


Режимы работы HDMI:



Для пользователя доступно 2Гб внутренней памяти, которую можно расширить с помощью microSD карт:


При подключении веб-камеры через USB-хаб можно производить видео звонки через Skype:


Можно использовать телевизор для просмотра веб-страниц:


Короткое видео где показана навигация по интерфейсу + Angry Birds + просмотр страниц + Youtube-ролик:
(извиняюсь за качество и горизонт, снимал на калькулятор то что было)


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

В первый день работы при обновлении программ из маркета Wifi пропадал несколько раз. Вернуть к жизни можно было только полностью перезагрузив мини-компьютер. В следующие несколько дней при скачке больших cache-файлов, установки программ из маркета, просмотра онлайн-видео, Wifi работал стабильно и никаких разрывов не наблюдалось. Возможно, такое поведение связано с некоторой «сыростью» прошивки.

В меню присутствует настройка Bluetooth, но встроенного BT в UG802 нет. USB Bluetooth тоже не заработал. Возможно в следующих прошивках появится поддержка USB Bluetooth донглов:


Видео

Full HD видео проигрывается плавно.
Пример проигрывания FULL HD и обычного mp4:


Даже с частотой 1.2ГГц производительности хватает для «тяжелых» игр:

С помощью клавиатуры и мыши играть не очень интересно. Будем надеяться, что в следующих прошивках добавят поддержку Bluetooth-донглов и тогда можно будет подключать PS3-геймпад.

Информация о системе и тесты производительности




Частота 1.2ГГц сказывается на результатах теста (при частоте 1.6ГГц Rockchip RK3066 набирает более 8000 баллов).
Тест Quadrant не захотел запускаться (чёрный экран).





Вскрытие

Разбирать UG802 легко, нужно лишь аккуратно провести медиатором по периметру:


И станут видны внутренности:


С одной стороны:



Rockchip RK3066 и 2х256 модуля памяти Micron:


4ГБ NandFlash от Micron и вторая пара модулей памяти:



WIfi-модуль Realtek RTL8188EUS:



Получение Root-прав доступа

Из-за некоторых недоработок прошивки программы иногда зависают и закрываются с ошибкой.
Из коробки в UG802 нет root-прав доступа, которые получить очень легко стандартным способ получения прав для платформы RK3066. Для этого нужно:

5. Дождаться обнаружения устройства в Moborobo
6. Распаковать архив и запустить SuperOneClick.exe
7. Нажать Root и дождаться окончания процесса

Выводы

Плюсы:

+ компактный в размерах и лёгкий
+ можно подключать напрямую к телевизору
+ высокая производительности достигается даже при работе на частоте 1.2ГГц
+ не греется
+ можно сделать Smart TV из любого телевизора с HDMI входом

Минусы:

Я покупал свой UG802 по цене $74.99. Цена сейчас снизилась до $64.99

Это android-девайс. Соответственно, в нём по-умолчанию должна быть установлена Android. Которая, фактически, и есть Linux. Но с некоторыми серьёзными ограничениями. Установка какого-нибудь другого Linux, может значительно расширить возможности мобильного устройства. Возможности использования становятся фактически безграничны. Ну представьте себе, использовать мобильник в качестве сервера! Множество инструментов становятся доступны. Если это планшет, подключив к нему периферийные устройства через OTG-кабель, можно использовать его как полноценный компьютер! Зачем? Это уже другой вопрос. Надеюсь, наш читатель поделится своими затеями в комментариях.

Как установить Linux на android-устройство?

Такой подход удобен для смартфонов и планшетов, но может не подойти для UG 802. В случае с ним, может понадобиться перепрошивка нужной операционной системы. А это уже некоторый риск, что можно испортить устройство.

К сожалению, я не имею опыта подобных экспериментов. Но информации в сети по этому поводу достаточно. Изучайте, пробуйте устанавливать.

Руководства и советы по установке Linux на ARM-устройства

Поэтому я приведу несколько ссылок, с которых вы можете начать своё ознакомление с миром хакинга мобильных устройств :)

На этом у меня всё на сегодня. Но всегда может статься, что мне захочется продолжения банкета данной темы :)

При возникновении проблем (а они возникнут с долей вероятности 99% :) ) можете также задавать вопросы здесь, будем собирать информацию, решать проблемы вместе, мне это тоже очень интересно.

Admin

Версия: 3.1
Разработчик: ZPwebsites
Требования: Android OS
Язык: Русский

Complete Linux Installer -это приложение, которое поможет Вам просто и без особых проблем установить Linux OS на своё Android OS. В основном это связано с тем, что Android основано на ядре Linux. Всё же Linux мощнее, чем мобильные платформы, поэтому он стоит того, чтобы полчаса помучится.

Требуются права ROOT и 3.5 гигабайта свободной внутренней памяти.

Прикрепленное изображение

Прикрепленное изображение

Прикрепленное изображение

Прикрепленное изображение

Download/Install VNCViewer App - по нажатию на эту кнопку вы перейдете в Google Play для загрузки и установки android-vnc-viewer. Без него работать ничего не будет. Если у вас не возможности выйти в Google Play, скачайте приложение по ссылке ниже.
android-vnc-viewer
androidvnc_0.5.0.apk ( 240.03 КБ )

Dowbload/Install Terminal App - по нажатию на эту кнопку вы перейдете в Google Play для загрузки и установки Android terminal Emulator. Без него работать ничего не будет. Если у вас не возможности выйти в Google Play, скачайте приложение по ссылке ниже.
Android terminal Emulator
emulyator_terminala_1.0.43.apk ( 284.36 КБ )

Прикрепленное изображение

Прикрепленное изображение

Прикрепленное изображение

Пробую запустить Debian не подскпжешь что там с настройками

Добавлено 01.07.2012, 11:08:

Хех мне android vnc не ставиться

скачал минимальный образ убунты,запускается в терминале,а вот иксы нивкакую,в vnc подключается и черный экран,потом если нажать на меню,то изображение (самого меню)начинает крутить и уходит в глубь черного экрана,как гуй вывести напишите подробнее
lxde-запустил,а вот теперь другая проблемма-обоину только один раз получилось сменить и темы не ставятся через опенбокс-тупо вылет.подскажите кто знает

Читайте также: