Linux для allwinner a10

Запуск Linux на планшете с SoC Allwinner A10 на борту

Предыстория

Приобрел я себе планшет на SoC Allwinner A10 (sun4i — кодовое название процессора AllWinner A10 ARMv7-A архитектуры семейства Cortex ядро A8). Сначала игрался с ним на Android 2.x потом на 4.x, но со временем мне стало этого мало. Да еще начали выпускать миникомпьютеры на основе этой SoC с Linux на борту. Я подумал: «Хм, а чем мой планшет хуже?» и занялся делом. Как оказалось, за меня уже все сделали, и дела делать не пришлось:

  1. Ядро оптимизировали для данной платформы
  2. Загрузчик оптимизировали к этой платформе
  3. Вышел новый порт debian armhf.

Осталось только все это дело сконфигурирован и собрать.

Среда

Система — ArchLinux x86-64. Где найти и как устанавливать окружение для сборки описывать не буду, в интернете и так достаточно этой информации. Да и большинству это не зачем, я приложу все необходимое собранным.
«Кухня» у меня такая:

  • qemu-user-static — чтобы можно было chroot’иться в rootfs, в репах не было, пришлось из репозитория debian доставать и собирать свой пакет. Все это дело необходимо для запуска arm elf исполняемых файлов на машине с другой архитектурой, в данном случае — на моей.
  • gcc version 4.6.1 (Sourcery CodeBench Lite 2011.09-70) — Кросскомпилятор GCC ARM. Может и старый, но не подводит пока меня. Вам же советую поставить свеженький кросскомпилятор от linaro.

Процесс загрузки SoC

Т.е. Загрузка начинается с SD карты, если там нету загрузчика, продолжается с NAND Flash.
Согласно документации к загрузчику allwinner-uboot структура SD карты должна выглядеть таким образом:

начало размер описание
0 8KB Unused, available for partition table etc.
8 24KB Initial SPL loader
32 512KB u-boot
544 128KB environment
672 352KB reserved
1024 Free for partitions
Сборка u-boot

Собирать не обязательно, sun4i-spl.bin u-boot.bin можно скачать здесь.

Собираем uboot-allwinner:

Запись загрузчика

Внимание, будьте осторожны, не перепутайте устройство SD карты с другими носителями. Если вы не понимаете того, что делаете, то лучше не делайте.
$ — переменная устройства, можно заменять вручную, можно перед выполнением прописать:

Разбиваем MicroSD накопитель

Внимание, в результате операции данные на MicroSD накопители будут утеряны, сохраните все необходимое в надежное место.

  • Нам нужно создать два раздела обязательно.
  • Первый раздел — раздел с файлом конфигурации железа (evb.bin) и ядром (uImage). Должен начинаться с 2048 сектора, быть размером 32MB-100MB и иметь файловую система FAT ( тип раздела FAT) либо ext2/3 ( тип раздела 83 ).
  • Второй раздел — раздел rootfs, собственно вся система, размер раздела желательно сделать в пределах 1GB-4GB, файловая система строго ext4, тип раздела — 83.
  • Можно сделать еще swap раздел, по желанию.
  • Оставшееся место используете для себя. Я создал раздел для своих данных, можно примонтировать в /home/

Вот, как я разбил свою 16GB карточку:

Согласно пунктам, описанным выше, разбиваем MicroSD накопитель.
Я, надеюсь, те, кто пользуется linux, умеет использовать fdisk.

Читайте также:  Активатор windows 10 с помощью цифровой лицензии
Форматируем:

Монтируем в нужное место:

Сборка ядра

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

Вместо gconfig можно использовать на вкус xconfig(qt интерфейс) или menuconfig (консольный интерфейс). Не забываем включить необходимые драйвера в ядро а также необходимые вам фичи. Читайте подсказки к параметрам.
Советую не забыть про модули тачскрина и фс(fat, ntfs).

Аргумент -j задает количество одновременных потоков компиляции. Опытным путем установлено, что потоков должно быть на единицу больше, чем ядер в процессоре.
Флаги оптимизации взяты из cтатьи ValdikSS. Честно говоря, ядро с ними скомпилировалось. Но я пока не устанавливал его на SD флеш карту.

Установка rootfs

Как загружать с помощью debootstrap начальную rootfs описывать не буду, так как это достойно еще одной статьи. Я лучше прикладу готовую rootfs Debian Wheezy ARMHF, а вы пользуйтесь.
Rootfs необходимо распаковать с сохранением атрибутов на второй раздел SD, так как таким образом сконфигурирован по умолчанию u-boot (про конфигурациию можно почитать здесь.
Качаем Debian Wheezy Rootfs и распаковываем:

Кстати, здесь есть и модули к ядру 3.0.36+. Также имеется lxde, slim с автозагрузкой пользователя user, network-manager, nm-applet стартует при старте сессии. Тачскрин работает в режиме тачпэда.
Есть вероятность, что все необходимые модули подгрузит udev, но для уверенности их можно прописать в /mnt/sun4i-rootfs/etc/modules. Список необходимых модулей можно получить в AndroidOS через TerminalEmulator :

Настройка загрузки linux

Качаем архив с содержимым первого boot раздела.
И извлекаем файл конфигурации evb.bin в /mnt/sun4i-boot из архива.

Если вы не собирали ядро, то собранное ядро 3.0.36+ можно тоже извлечь:

Запуск

Все, пожалуй, готово. Мы установили систему на SD накопитель. Вставляем MicroSD карточку в картоприемник планшета и включаем его. Через 5 сек после включения должна засветиться подсветка, экран останется черным. Через несколько миинут должна загрузиться вся система.
Помните, пароль по умолчанию для root — root, для user — user. Советую изменить их.
Если у вас нет usb клавиатуры, то в rootfs предустановлена виртуальная клавиатура.
Подключаемся к wifi сети, или используем USB Ethernet адаптер и с помощью nm-applet подключаемся к сети. Сразу же можно подключиться через ssh.
Запускаем lxterminal и доставляем необходимый софт.

Возможные проблемы

и прописать его /mnt/sun4i-rootfs/etc/modules.

Заключение

Таким образом я запустил linux на своем планшете MOMO9. Система пока не настроена до конца, не мешало бы настроить тот-же laptop-mode и доставить необходимые пакеты. Времени было потрачены не мало. Но зато, собрав так систему «почти» с нуля, сразу начинаешь понимать, как работает данная ОС. Еще пополняется словарный запас специальной английской лексики, что тоже не плохо.

Вот скриншот снятый на самом устройстве с помощью утилиты import из пакета MagickImage.


Снимал на камеру телефона, другого под рукой не оказалось, так что извините.

И конечно же, я не несу никакой ответственности за то, что вы натворите у себя на ПК, за порчу оборудования. Делайте все с пониманием дела. Не перепутайте устройство SD ридера с винчестером либо другим устройством.

Читайте также:  Администрирование web сервера windows

Источник

Linux для allwinner a10

Предлагаю в этой теме обсуждать методы установок Linux на Планшеты и Свистки с AllWinner A10.

Итак: AllWiller A10 имеет закрытую для изменения область, которая называется BROM (он же BIOS).
BROM загружает из (EXT-SD, NAND) файл boot0, который содержит некую информацию об оборудовании.
Основная же информация об оборудовании находится в файле sys_config.fex. Существуют разные утилиты, позволяющие редактировать этот Конфиг Файл. После того, как boot0 поднят, BROM загружает boot1 (служит для поднятия остальных устройств), boot1 в свою очередь загружает boot.axf. Для загрузки Linux, далее boot.axf загружает U-Boot, остальное же U-Boot берёт на себя.

В AllWinner принцип загрузки таков: brom -> boot0 -> boot1 -> boot.axf -> u-boot -> kernel
Подробней процесс загрузки описан вот тут.

В интернете так же полно информации об установке Linux на «свистки» типа MK802. Но вот информации об установке Linux на Планшеты с A10 в качестве основной системы не много. Прошу собраться усилиями, помочь кто как может.

Метод установки Ubuntu Linux на устройства с A10.

Проделав то что описано ниже, вы НЕ РИСКУЕТЕ ничем, кроме как потерей информации на вашей Флешке. Делайте Бэкап.

Внимание: Этот метод уничтожит все ваши данные на внешней MicroSD карте!
Флешка должна быть 4 GB и более! , иначе образ системы не скопируется полностью.

Пользователям Linux/Mac:

  • Скачайте желаемый образ по ссылкам ниже
  • Распакуйте образ (например p7zip CLI is p7zip -d lubuntu-desktop-12.04-4-miniand.com.img.7z)
  • Подключите MicroSD карту к компьютеру не монтируя её
  • Определите адрес устройства утилитой fdisk: sudo fdisk -l (Получите например: /dev/sdd)
  • Скопируйте образ командой dd, убедитесь в правильности адреса устройства (dd if=lubuntu-desktop-12.04-2-miniand.com.img of=/dev/sdd)
  • Убедившись что образ записан: sudo sync
  • Выключив ваше Android устройство, вставьте флешку и включите его

Пользователям Windows:

  • Скачайте желаемый образ по ссылкам ниже
  • Распакуйте образ программой 7-zip
  • Подключите SD карту к компьютеру
  • Скопируйте образ на флешку программой Image Writer
  • Выключив ваше Android устройство, вставьте флешку и включите его

ЕСЛИ ПЛАНШЕТ БОЛЬШЕ НЕ ВКЛЮЧАЕТСЯ!
Не влючаться он может только по одной причине: Ему мешает загрузчик который находится на флешке. Извлеките Флешку, и он включится. Флешку вернуть в прежнее состояние можно простым форматированием в Windows, а в Linux снеся таблицу разделов.

Причина отсутствия подсветки Дисплея Найдена!
Ainol Novo 7 Aurora — Распаковать и заменить этот файл на первом FAT разделе evb.bin.tar.gz ( 6,9 КБ )

На другие планшеты это вряд ли подойдет, поэтому, выдирайте ваш «родной» script0.bin, переименовывайте его в evb.bin и кладиде в корень первого раздела, заменяя другой файл. (если кому-то не понятно как это делается, пишите, я попробую объяснить)

Собирать командой make ARCH=arm sun4i_defconfig
Это для задания параметров ядра. Затем, конечно же, нужно make ARCH=arm menuconfig и пройтись по опциям. Ну, а сборка — build.sh -p sun4i , только там нужно подрихтовать путь к компилятору. Конкретно — в /scripts/build_sun4i.sh привести в порядок эту строку:
export CROSS_COMPILE=arm-none-linux-gnueabi-
После «=» прописать путь (что-то вроде /src/toolchain/arm/bin/arm-none-linux-gnueabi- ).

Скрипт еще и образ рамдиска сделает, и образ загрузочный (boot.img)

Сообщение отредактировал Zyomich — 28.03.16, 21:39

Читайте также:  Как убрать папку windows old для windows 10

Источник

Linux для allwinner a10

Предлагаю в этой теме обсуждать методы установок Linux на Планшеты и Свистки с AllWinner A10.

Итак: AllWiller A10 имеет закрытую для изменения область, которая называется BROM (он же BIOS).
BROM загружает из (EXT-SD, NAND) файл boot0, который содержит некую информацию об оборудовании.
Основная же информация об оборудовании находится в файле sys_config.fex. Существуют разные утилиты, позволяющие редактировать этот Конфиг Файл. После того, как boot0 поднят, BROM загружает boot1 (служит для поднятия остальных устройств), boot1 в свою очередь загружает boot.axf. Для загрузки Linux, далее boot.axf загружает U-Boot, остальное же U-Boot берёт на себя.

В AllWinner принцип загрузки таков: brom -> boot0 -> boot1 -> boot.axf -> u-boot -> kernel
Подробней процесс загрузки описан вот тут.

В интернете так же полно информации об установке Linux на «свистки» типа MK802. Но вот информации об установке Linux на Планшеты с A10 в качестве основной системы не много. Прошу собраться усилиями, помочь кто как может.

Метод установки Ubuntu Linux на устройства с A10.

Проделав то что описано ниже, вы НЕ РИСКУЕТЕ ничем, кроме как потерей информации на вашей Флешке. Делайте Бэкап.

Внимание: Этот метод уничтожит все ваши данные на внешней MicroSD карте!
Флешка должна быть 4 GB и более! , иначе образ системы не скопируется полностью.

Пользователям Linux/Mac:

  • Скачайте желаемый образ по ссылкам ниже
  • Распакуйте образ (например p7zip CLI is p7zip -d lubuntu-desktop-12.04-4-miniand.com.img.7z)
  • Подключите MicroSD карту к компьютеру не монтируя её
  • Определите адрес устройства утилитой fdisk: sudo fdisk -l (Получите например: /dev/sdd)
  • Скопируйте образ командой dd, убедитесь в правильности адреса устройства (dd if=lubuntu-desktop-12.04-2-miniand.com.img of=/dev/sdd)
  • Убедившись что образ записан: sudo sync
  • Выключив ваше Android устройство, вставьте флешку и включите его

Пользователям Windows:

  • Скачайте желаемый образ по ссылкам ниже
  • Распакуйте образ программой 7-zip
  • Подключите SD карту к компьютеру
  • Скопируйте образ на флешку программой Image Writer
  • Выключив ваше Android устройство, вставьте флешку и включите его

ЕСЛИ ПЛАНШЕТ БОЛЬШЕ НЕ ВКЛЮЧАЕТСЯ!
Не влючаться он может только по одной причине: Ему мешает загрузчик который находится на флешке. Извлеките Флешку, и он включится. Флешку вернуть в прежнее состояние можно простым форматированием в Windows, а в Linux снеся таблицу разделов.

Причина отсутствия подсветки Дисплея Найдена!
Ainol Novo 7 Aurora — Распаковать и заменить этот файл на первом FAT разделе evb.bin.tar.gz ( 6,9 КБ )

На другие планшеты это вряд ли подойдет, поэтому, выдирайте ваш «родной» script0.bin, переименовывайте его в evb.bin и кладиде в корень первого раздела, заменяя другой файл. (если кому-то не понятно как это делается, пишите, я попробую объяснить)

Собирать командой make ARCH=arm sun4i_defconfig
Это для задания параметров ядра. Затем, конечно же, нужно make ARCH=arm menuconfig и пройтись по опциям. Ну, а сборка — build.sh -p sun4i , только там нужно подрихтовать путь к компилятору. Конкретно — в /scripts/build_sun4i.sh привести в порядок эту строку:
export CROSS_COMPILE=arm-none-linux-gnueabi-
После «=» прописать путь (что-то вроде /src/toolchain/arm/bin/arm-none-linux-gnueabi- ).

Скрипт еще и образ рамдиска сделает, и образ загрузочный (boot.img)

Сообщение отредактировал Zyomich — 28.03.16, 21:39

Источник

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