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

Обновлено: 02.07.2024

Просьба: про обнаруженные неточности пишите в комментариях.

Эта статья повествует об установке Debian armhf на нашу Тошибу с нуля, без использования предварительно запакованных rootfs и bootimg.

После выполнения получим:

  • Debian armhf
  • ядро bmw
  • среду xfce4

(TODO: узнать насчет обновления пакетов в chroot-среде TODO: настройка звука TODO: перенос на SSD Важно: TODO: дополнить, как нужно изменить cmdline при разных вариантах разбиения встроенной флеш-памяти. TODO: про аппаратное декодирование видео)

Имейте ввиду, что всё, описанное в данной статье, выполняется на свой страх и риск. Многие операции могут занять продолжительное время.

Хочется отметить, что для расположения директории armhf_root нужно выбирать диск с файловой системой Linux, ибо необходимо сохранять атрибуты каждого файла (автор напоролся на такую проблему, как отказ видеть init при загрузке с карты в первый раз; проблема была вызвана сборкой rootfs на NTFS-разделе).

Нам потребуется: SD-карта объемом от 2 Гб и кардридер, компьютер с Debian\Ubuntu, кабель USB-mini USB, nvflash (в Ubuntu есть в репозиториях), ядро c.bmw отсюда, желательно наличие Wi-Fi (в этой статье описан вариант с использованием WiFi; теоретически, можно устанавливать требуемые пакеты без него в chroot'e либо перенося каждый пакет с помощью SD-карты).

Пункт номер ноль ВСЕГДА: бэкап.

1. Подготовим хост-компьютер (так мы будем называть Большой Компьютер) и rootfs.

Цель данного этапа - создать на хосте папку-rootfs (т.е. папку, в которой будет лежать вся ОС для Тошибы, кроме ядра).

1) Установим некоторые пакеты на хост:

Поскольку процессор хоста - x86, то он не может запускать бинарники, скомпилированные для других архитектур (в том числе и ARM). Поэтому мы должны использовать так называемый "foreign mode" для debootstrap (это - софт, который занимается "подтягиванием самого себя за шнурки ботинок", т.е. распаковывает и подготавливает первичную rootfs). Из мана к debootstrap: "foreign-режим всего лишь распаковывает файлы для следующей фазы. Копия deboostrap, необходимая для завершения процесса, будет установлена в целевую файловую систему как /debootstrap/debootstrap"

2) Запустим скрипты конфигурации:

Если на каком-то из этапов мы видим ошибку, просто повторяем исполнение последней команды. Если ошибка не исчезает, игнорируем её и едем дальше.

3) Заполним /etc/apt/sources.list (список источников ПО) в rootfs, обновим список ПО и установим пакеты для зашивания ядра и загрузочных образов (даже несмотря на то, что ядро мы устанавливаем в обход APT):

Игнорируем возникающие ошибки с публичными ключами, с ними разберемся позже. 4) Установим пакеты, необходимые для Wi-Fi:

5) Создадим файл bootimg.cfg, который позволит в дальнейшем создавать корректные загрузочные образы:

Обратим внимание на то, что в <range type="comment" >cmdline</range > передается параметр root=/dev/mmcblk1p1, т.е. SD-карта. Параметр tegraboot также указывает на использование SD-карты. А параметр tegrapart зависит от разбиения разделов на Вашей тошибе, однако на большинстве моделей он будет именно таким. 6) Редактируем /etc/initramfs-tools/initramfs.conf, дабы сделать генерируемый образ initrd как можно меньше (меняем MODULES=most на MODULES=dep):

7) Заполним /etc/fstab (при необходимости, поменяйте):

8) Заполним /etc/network/interfaces:

9) Добавим модули ядра:

10) Зададим пароль рута:

11) В общем-то, теперь папку armhf_root можно упаковать в архив и выложить куда-нибудь в интернеты - это наш базовый rootfs. Однако, поехали дальше.

2. Подготовим SD-карту.

1) Для начала, создадим на ней таблицу разделов GPT (/dev/sdb - ваша SD-карта):

Жмем o, соглашаемся с тем, что все разделы на карте будут удалены и создастся новая MBR - жмем Y, затем Enter.

Теперь создадим новую партицию: жмем n, затем соглашаемся со всеми параметрами по-умолчанию. Заключительный штрих: жмем w, чтобы записать все изменения на карту.

Важно: теперь нужно извлечь карту из компьютера и вставить её снова, иначе хост не поймет, что там изменилась таблица разделов. 2) Отформатируем карту в ext4.

Теперь всё готово для копирования нашей rootfs на карту. 3) Копируем rootfs (/media/sdcard - это точка монтирования карты памяти в системе) и извлекаем носитель:

Будьте внимательны, не извлекайте карту до появления приглашения командной строки после команды umount, иначе файлы запишутся не полностью. Карта готова, на ней есть один-единственный раздел и rootfs.

3. Прошьем ядро в 6 раздел Тошибы

Вставляем кабель в Тошибу, жмем Ctrl+Esc+Pwr, ждём окончания процесса.

Теперь вставляем карточку в Тошибу, перезагружаем Тошибу, ждем(если нет ошибок, конечно), и видим приглашение к логину. Пишем: root. Вводим пароль. Лицезреем приглашение консоли.

2) После того, как сеть поднимется, можно использовать ssh, чтобы несколько повысить удобство вбивания\копирования команд из инструкции (w.x.y.z - айпи-адрес Тошибы):

3) Обновим список пакетов и добавим публичные ключи репозиториев:

4) Обновим систему, мало ли:

5) Установим пакет локалей, и настроим локали и временную зону:

Выбираем требуемые локали (я выбрал en_US.UTF8 UTF8 и ru_RU.UTF8 UTF8), локаль по умолчанию (ru_RU) и временную зону(Европа, Москва). Устанавливаем русские шрифты для консоли:

6) Установим некоторые необходимые для последующих шагов пакеты:

7) Установим графическую оболочку:

Ставим xserver-xorg, xfce4, менеджер дисплеев slim и менеджер окон openbox:

Теперь необходимо установить драйвера из пакета L4T.

8) Создаем нового пользователя, даем привилегии на выполнение некоторых административных задач без ввода пароля:

9) Возможны проблемы с тачпадом, если таковые имеются - пишите в обсуждения. Однако, первое, что надо сделать, если тачпад не работает - нажать на кнопку его включения. 10) Меняем имя компьютера:

11) Устанавливаем менеджер беспроводной сети. Мне нравится wicd.

Итак, теперь имеем работающую систему на карте памяти. Некоторые могут останавливаться на этом шаге. Мы же едем дальше.

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

(TODO: краткая инструкция по переразбивке, ссылка на полную версию)

Затем - загружаемся с SD-карты, форматируем новосозданную партицию (возможно, потребуется редактировать cmdline ядра для SD-карты), монтируем её, копируем на неё rootfs, меняем /etc/fstab, прошиваем ядро, перезагружаемся, PROFIT. (TODO: подробная инструкция)

image

Думаю, вы встречали здесь обзоры этого планшета: вот и вот. Кратко напомню характеристики: процессор ARMv6 1ГГц, ОЗУ 512МБ, 10 дюймовый экран с резистивным сенсором, HDMI, камера, USB2.0. Со временем Android на данном планшете немного наскучил, да и производители что-то перестали выпускать для ZT-180 новые обновления прошивки, так как появились более новые версии планшета. В данной статье будет показан процесс установки Debian Arm версии на планшет Zenithink ZT-180 V2 с возможностью перехода к Android в любой момент времени.

Нам понадобится

Внимание! Все действия вы выполняете на свой страх и риск.

Подготовка карты памяти

Для начала подготвим нашу MicroSD карту. Если у вас есть на ней ценные данные, скопируйте их на какой-либо другой носитель. Подключаем её с помощью карт-ридера к компьютеру и запускаем любой редактор разделов жестких дисков. Например, в Ubuntu можной найти стандартное приложение «Дисковая утилита». Выбираем нашу MicroSD карту и нажимаем на кнопку «Форматировать устройство» (перед этим требуется отмонтировать все разделы карты памяти).

Создаем разделы. Первый раздел, назовем его partition1, будет служить для хранения загрузчика (для прошивки). Он должен иметь файловую систему FAT и быть размером, на всякий случай, в пару десятков мегабайт. Следующий раздел будет использоваться для хранения файлов самой операционной системы и домашней папки, назовем его partition2. Размер этого раздела нужно сделать не менее 1-2 гигабайта. Далее можно создать ещё один FAT раздел для Android или для использования карты памяти, например, в Windows, но это необязательно. Вот, что получилось у меня:

image

Далее распаковываем архив с ОС на раздел partition2. Для этого вводим следующую команду из папки с архивом:
sudo tar -C /media/partition2 -jxvf debian_beta_3.tar.bz2

И после строки с калибровкой пишем ещё одну такую же:
xinput set-int-prop "TSC2007 Touchscreen" "Evdev Axis Calibration" 32 31 3903 -6 3636 &
Сохраняем файл.

После распаковки и редактирования калибровки создаем на FAT разделе partition1 папку zt-update, куда кладем файл загрузчика zImage_adb.

После этого подготовка карты памяти будет закончена.

Установка загрузчика

Для этого сначала получаем Root доступ. Скачиваем приложение Universal Androot, устанавливаем и в выпадающем меню выбираем «Do not install Superuser», нажимаем на кнопку «Root». Далее нам потребуется эмулятор терминала. Запускаем Terminal Emulator и получаем права root:
su

Создаем папку, в которую в будущем примонтируем раздел с ядрами:
mkdir /sdcard/kernel

Монтируем в папку раздел (если mmcblk1p5 не подходит, пробуем другие разделы):
mount -t vfat /dev/block/mmcblk1p5 /sdcard/kernel

После этого в эту папку можно скопировать с заменой файл zImage_adb и тогда ядро будет доступно без перепрошивки.

Запуск ОС

image

Заключение

Здравствуйте! Наверняка я не единственный, у кого была идея полностью заменить Android на Linux на мобильном устройстве. Мотивов к этому может быть много - гибкость Linux, возможность сменить граф. оболочку, лёгкость (для слабых устройств), но ИМХО самый ключевой козырь Linux - постоянная обновляемость. В отличие от ПК, где обновления ОС зависят только от её разработчика, на мобильных устройствах обновления ПО зависят от вендоров самих устройств. А всё из-за того, что ПК у нас архитектуры x86(_64), и у них существуют стандарты аппаратуры IBM PC и загрузки BIOS/UEFI. А на мобильных устройствах у нас архитектура ARM, которая является лишь стандартом набора команд процессора. В результате на ПК мы имеем стандартный механизм загрузки, предоставляющий интерфейсы для контроля базового оборудования без драйверов со стороны ОС, что позволяет (в случае с Linux), загружать ядро без необходимости его пересборки под каждое устройство.

Сразу встаёт вопрос - "а как же дрова на остальное оборудование, не поднятое BIOS/UEFI?" В Debian/Ubuntu присутствует хитрое решение этой проблемы - система DKMS. Она позволяет единожды написать драйвер в виде модуля ядра, соответствующего формату dkms, и при обновлении ядра она автоматически оптимизирует драйвер под новую версию ядра. Таким образом, обновления ОС Debian на ПК не зависят от вендора самого ПК.

На ARM мы не имеем самого главного - стандарта загрузочной системы. На каждую плату - свой минимальный загрузчик, и для запуска на ней ядро Linux требует пропатчивания вендором, в результате обновления ядра вешаются на вендора устройства, и, зачастую отсутствуя, отключают нас от обновлений самой системы. Но мало кто знает, что под ARM тоже существует стандартный UEFI. Мною с моим RPi 3 B+ было доказано, что UEFI + Debian + DTB + DKMS = Debian ARM Anytime Upgrade.

Напрашивается закономерный вопрос: если бы мы имели UEFI под все ARM устройства, мы бы имели постоянно обновляемый Debian под все устройства?

По сути да, есть небольшая проблема с дровами, но насколько я понял при наличии навыков их можно достать из дерева исходников ядра (и даже автоматизировать этот процесс). Соответственно, самая сложная часть - UEFI. Был когда-то неплохой проект EFIDroid, позволявший собирать UEFI под все устройства с Little Kernel (т. е. все qcom устройства), но ввиду отсутствия каких-либо финансирования или поддержки автора был заброшен, причём в процессе перехода на новый способ без LK (т. к. в новых qcom устройствах его уже не используют), в результате все репозитории оказались в нерабочем состоянии. Я откатил их до рабочих версий, но так ничего и не завелось (проект-то так и остался pre-alpha). Собственно, я и создал эту тему, чтобы вынести свой вопрос на общее обозрение - есть ли люди, которые знакомы с автором EFIDroid, имеющие рабочие варианты, или знающие, есть ли автора новый вариант EFIDroid (без lk), или прочие разработчики или программисты, которые знакомы с EDK II, или у которых есть другие способы портирования UEFI на ARM(64) устройства, если в наличии только kernel source code tree для них? Есть ли вообще кто-то, кто этим интересуется и в этом "шарит"? Хотелось бы систематизировать всю имеющуюся информацию, и, возможно, даже выйдет что-то собрать.

А также, если у кого-то есть способ загружать неизменённое ядро Debian на ARM устройствах, пишите сюда.

Несмотря на обилие операционных систем, наиболее популярными и общепринятыми являются несколько. Если для компьютера чаще всего пользователи выбирают между Windows или Mac OS, то для мобильных устройств это Android или iOS. Тем не менее, во всём мире растёт число приверженцев свободно распространяемой операционки Linux. Если в компьютерных кругах она более-менее известна, то планшетов на её основе совсем мало, буквально несколько моделей.

Установка Debian на планшет

Процесс инсталляции отличается в зависимости от операционной системы планшетного ПК

Дистрибутивов Linux существует большое количество, но одним из самых известных, при этом очень стабильным, является Debian. Если его инсталляция на компьютер относительно несложная, то с планшетом придётся повозиться. Предлагаем рассмотреть пошагово, как производится установка Debian на планшет на базе различных операционных систем. Кроме того, рассмотрим, как правильно устанавливать deb-пакет в установленном Debian или на iOS с джейлбрейком.

Установка Debian на Windows-планшет

Несмотря на то что ядра Linux и Windows существенно отличаются, большинство планшетов, работающих на операционной системе Windows 10, могут без проблем использоваться для работы с обеими системами. Если производитель не оснащает свои устройства какими-то экзотическими комплектующими, то проблем с поддержкой драйверов возникать не должно. Процессоры используются на базе платформы Intel, а это является главным условием, ведь ядро Linux в первую очередь компилируется именно для этой платформы.

Установка Debian на планшет с Windows

Чтобы установить на Windows-планшет операционную систему Debian, он должен соответствовать таким требованиям:

  • Иметь достаточную мощность процессора и объём оперативной памяти.
  • Иметь возможность выбора загрузочного устройства в настройках BIOS или UEFI (некоторые производители блокируют такую возможность).
  • Иметь подключённую через USB внешнюю клавиатуру.

Если основные требования выполнены, приступаем к установке.

  1. Качаем установочные образ Debian с официального сайта. Он распространяется в виде образа диска формата .iso.
  2. С помощью приложения Rufus создаём загрузочную флешку. Выбираем наш .iso файл и нажимаем «Старт».
  3. Втыкаем флешку в USB-разъём планшета и входим в режим BIOS. Для этого должна быть подключена клавиатура. Выбор приоритета загружаемых файлов происходит в разделе Boot — Boot device priority или, как вариант, Hard Disc Drives priority (всё из-за того, что в некоторых случаях флешка определяется как жёсткий диск).
  4. После загрузки меню установки выбираем свой вариант и версию системы, например, «Графическая установка 64 бита».
  5. Переходим по всем этапам, предлагаемым установщиком, выбираем нужные нам пункты, вводим нужные данные. В конце выбираем интересующее нас графическое окружение.
  6. Система автоматически загружает недостающие компоненты и группы пакетов из интернета.
  7. После завершения установки загрузите планшет и наслаждайтесь установленным Debian.

Интерфейс оболочки Debian

Установка Debian на Android-планшет

Если с установкой на Windows-устройство особых проблем возникать не должно, то с Android всё далеко не так просто. Можно долго доказывать, что и Debian, и Android выполнены на основе ядра Linux, но на самом деле они практически несовместимы. Дело в том, что в Андроид-планшетах в подавляющем большинстве случаев применяются процессоры на ARM-архитектуре. И даже при условии, что планшет имеет процессор Intel (такие часто устанавливает, например, Asus), другие компоненты не имеют универсальной совместимости с другими системами. Возможно, знатоки укажут на официальный порт Debian для архитектуры arm64, но он ещё в процессе разработки и является нестабильным. Итак, что нужно, чтобы установить Debian на Android?

Установка Debian на Android

Необходимые условия для полной установки

  • Ядро планшета должно быть совместимым с Linux. Стандартное таких возможностей не предоставляет, поэтому нужно найти и установить пользовательское.
  • Портированный на мобильную архитектуру архив с операционной системой.
  • Загрузчик операционной системы.
  • Карта памяти.
  • Компьютер или ноутбук с установленным Linux.

Универсального способа не существует, каждый случай рассматривается отдельно и может отличаться на отдельно взятом устройстве. Вдобавок даже не рассчитывайте на то, что, не имея навыков программирования, у вас получится без головной боли установить Debian вместо Android. Приводим лишь только примерный алгоритм.

Монтирование разделов с помощью Дисковой утилиты

  1. Находим и качаем необходимые файлы и архивы.
  2. С помощью инструмента «Дисковая утилита» на ПК с Linux отформатируйте карту памяти и смонтируйте необходимые разделы. Обязательно должны присутствовать как минимум два раздела: для загрузчика и для работы самой операционной системы.
  3. Получите рут-права на устройство и прошейте кастомное ядро с поддержкой Linux.
  4. Выполните установку Debian на планшет.

Дистрибутив Debian на планшете с Android

Более подробную информацию ищите на специализированных форумах в ветках, посвящённым конкретной модели планшета. Предупреждаем, если вы вообще не смыслите в программировании, лучше не рискуйте!

Linux Deploy

Обзор программы Linux Deploy

Запуск и остановка операционной системы

Таким способом вы практически полноценно сможете пользоваться Linux. Но опять же, стопроцентной гарантии успеха никто дать не сможет. Всё на ваш страх и риск.

Complete Linux Installer

Ещё одно приложение для эмуляции установки Debian и других Linux-дистрибутивов. Вам потребуется наличие интернета для скачивания файлов и рут-права.

Интерфейс Complete Linux Installer

Запуск и установка deb-пакетов

На планшете с установленным Linux

После установки новой операционки возникает потребность в приложениях. Если вам удалось подружить свой планшет с Debian, в меню присутствует магазин приложений. Кроме того, дистрибутив поставляется с определённым набором встроенных приложений и большинство нужных программ уже есть. Тем не менее, некоторые приходится доустанавливать уже в процессе. Это можно сделать несколькими способами: через магазин приложений и с помощью deb-пакетов.

Установка deb-пакетов для Linux

В первом случае нужно войти в программу на планшете, ввести в поисковой строке название нужного софта и нажать «Установить». Система автоматически установит выбранный пакет. Во втором уже придётся найти пакет программы с расширением .deb и установить, как обычное приложение либо через терминал (аналог командной строки). Единственный минус такого способа в том, что нужно будет докачивать нужные зависимости.

На iPad с джейлбрейком

Ещё одна область, в которой вам может понадобиться установить deb-пакет, это установка твиков, или настроек, на iPad с джейлбрейком. После процедуры взлома появится магазин приложений Cydia, через который распространяются программы и настройки для взломанных аппаратов (здесь подробно описывается, как им пользоваться). Но иногда под рукой нет быстрого интернета или же нужный репозиторий попросту не подключён, а нужная настройка распространяется через какой-то сайт в виде deb-пакетов.

Чтобы установить её таким способом, вам понадобится:

  • Компьютер с установленным файловым менеджером iFunBox либо iTools.
  • Устройство iOS с джейлбрейком.
  • Соединительный кабель.

Процесс установки пакетов deb выполняется в несколько этапов:

  1. Скачайте на компьютер либо ноутбук deb-пакет.
  2. Соедините кабелем девайс с ПК.
  3. С помощью файлового менеджера скопируйте пакет deb в папку /var/root/Media/Cydia/AutoInstall.
  4. Перезагрузите девайс.

Использование файлового менеджера на iPad

Можно обойтись и без компьютера, если на взломанный iPad установлен файловый менеджер iFile. При скачивании пакетов система автоматически предложит установить твик. Вам потребуется лишь перезагрузиться.

Заключение

Установка операционной системы Debian и использование deb-пакетов требует определённых познаний. В некоторых случаях вам просто невозможно обойтись без познаний в программировании. Если вы не уверены в своих силах, изучите все возможные ситуации на специализированных ресурсах.

Надеемся, что у вас всё получилось. Пишите в комментариях о своих успехах.

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