LINUX.ORG.RU

Завожу эмулятор на ARM

 ,


1

3

Спрашивал я тут недавно про одноплатники, ну которые на процессорах ARM, потом подумал а как же я на него операционку устанавливать буду, и понял что я ничего не знаю об архитектуре ARM.
Начал рыть в инете по теме, нашёл статью:
https://trashbox.ru/topics/106973/chto-takoe-arm
Так ARM это не просто другая процессорная архитектура, по сравнению с x86, это ещё и другая архитектура исполнения команд, RISC, вместо CISC, совсем другой мир.
Но это информация интересная больше для программистов, а что главное для пользователя? Чем процесс загрузки операционной системы в ARM отличается от x86? Решил попробовать ARM в эмуляторе, имеется в наличие qemu-system-arm, libvirt и virt-manager. Создаю машину и вижу отличие от x86, вместо загрузочного диска мне нужно указать путь к ядру, путь к initrd, путь к DTB, ну и собственно сам диск. Что такое DTB?
qemu-arm ведь эмулирует мобильное устройство. А в любом мобильном устройстве есть минимум две независимые области флеш-памяти: NAND и NAND2, это знает любой,кто хоть раз перепрошивал мобильное устройство. Почему так, это как-то связано с особенностями зарузки операционной системы на ARM?
Вот нашёл на ЛОРе ещё пару тем как кто-то пытается завезти эмулятор:
Использование qemu для ARM
qemu: arm, archlinux
Только я ничего не понял, вообще ничего. Моя цель - установить ОС на эмулятор, любую ОС, лишь бы заработало и лишь бы я при этом чего-нибудь понял. Что мне делать? Готовые образы прошу не предлагать, мне важнее процесс.



Последнее исправление: Isur (всего исправлений: 1)

Поправьте меня если я заблуждаюсь, но дело здесь вот в чем. После старта и selftest проц пытается выполнить из определенного адреса то что там лежит(все устройства лежат по определенным адресам), т.е на момент старта проца в данном месте должен лежать либо загрузчик, либо barebone приложение. Часто по месту старта кладут uboot, а в нем уже расписывают процесс старта, который выглядит примерно так:

  • Загрузить в адрес памяти такой-то ядро
  • Загрузить в адрес памяти такой-то initrd
  • Загрузить в адрес памяти такой-то управляющую строку загрузки
  • выполнить то что лежит по адрессу такому-то

Ну вот такие пироги с котятами. На самом деле все это подробно описано в инструкции к процу и потому следует читать мануал под конкретный проц

Silerus ★★★★
()

Создаю машину и вижу отличие от x86, вместо загрузочного диска мне нужно указать путь к ядру, путь к initrd, путь к DTB, ну и собственно сам диск

Это вариант машинки с биосом, который грузит Линукс. QEMU можно подсунуть и свою прошивку, которая будет грузить что угодно. Например, OFW. С OFW загрузка будет происходить с диска. Ну или по-сети. В общем, как и на других архитектурах.

alt-x ★★★★★
()

потом подумал а как же я на него операционку устанавливать буду

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

fehhner ★★★★★
()

Заведи себе android-sdk-23.0.1 - именно этот, и запускай эмулятор,
с опцией -verbose -show-kernel

-rwxr-xr-x 1 root root    3498 Jun 30  2014 android*
-rwxr-xr-x 1 root root    3286 Jun 30  2014 ddms*
-rwxr-xr-x 1 root root    1940 Jun 30  2014 draw9patch*
-rwxr-xr-x 1 root root   33428 Sep  2 01:17 emulator*
-rwxr-xr-x 1 root root 2657128 Sep  2 01:17 emulator64-arm*
-rwxr-xr-x 1 root root 2693672 Sep  2 01:17 emulator64-mips*
-rwxr-xr-x 1 root root 2752360 Sep  2 01:17 emulator64-x86*
-rwxr-xr-x 1 root root 2546864 Sep  2 01:17 emulator-arm*
-rwxr-xr-x 1 root root 2525424 Sep  2 01:17 emulator-mips*
-rwxr-xr-x 1 root root 2646832 Sep  2 01:17 emulator-x86*

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

blitz
()
Ответ на: комментарий от Isur

Есть у Mozilla, готовые образы ARM для отладки Fennec browser.
С файлами работающей конфигурации, которые сам поменяешь для своих целей и задач.

Зайдешь на сайт `Firefox mobile build' и скачаешь репозитории, запустив питон скрипт.
Один из них - будет Mozilla avd.
То, что тебе нужно. Под линукс.

blitz
()
Ответ на: комментарий от Isur

Ничего странного в том, что Goolag, изобретатель Android специально не поставляет образы ARMv7, самое востребованное - под Linux, и только под windows - не находишь?

blitz
()
Ответ на: комментарий от blitz

Вы отвечаете вовсе не на те вопросы, которые я задаю, а похоже на какие-то свои собственные.

Isur
() автор топика
Ответ на: комментарий от blitz

Вы мне предлагаете запустить эмулятор разработчиков Firefox OS, а у меня задача - запустить эмулятор QEMU.

Isur
() автор топика
Ответ на: комментарий от Isur

Блиц - человек ответственный за свои слова и поступки, и ненужного не посоветует.

Когда скачаешь то, что надо - увидишь, что нет там Firefox OS, но есть QEMU ARM device.

blitz@inode ..oid-device/moz-avd/mozemulator-4.3.avd % ls
total 5472147
drwxrwxr-x 2 blitz 100       3488 Nov 29 09:32 ./
drwxrwxr-x 3 blitz 100       3488 Oct 27 19:10 ../
-rw-r--r-- 1 blitz 100   69206016 Nov 29 09:30 cache.img
-rw-rw-r-- 1 blitz 100        676 Mar  9  2017 config.ini
-rw-rw-r-- 1 blitz 100         49 Nov 29 09:32 emulator-user.ini
-rw-r--r-- 1 blitz 100       1779 Nov 29 09:30 hardware-qemu.ini
-rwxrwxr-x 1 blitz 100    2407928 Mar  9  2017 kernel-qemu*
-rw-rw-r-- 1 blitz 100    2744320 Mar  9  2017 kernel-ranchu
-rw-rw-r-- 1 blitz 100     235257 Mar  9  2017 ramdisk.img
-rw-rw-r-- 1 blitz 100  629145600 Mar  9  2017 sdcard.img
-rw-rw-r-- 1 blitz 100  576716800 Mar  9  2017 system.img
-rw-rw-r-- 1 blitz 100 2147483648 Mar  9  2017 userdata.img
-rw------- 1 blitz 100  636485632 Nov 29 09:32 userdata-qemu.img
-rw------- 1 blitz 100 2147483648 Mar  9  2017 userdata-qemu.img.sav

blitz
()
8 января 2018 г.
Ответ на: комментарий от blitz

Ну, С Новым годом!

Сейчас, когда во время праздников появилось лишнее время снова хочу заняться идеей. Только я не нашёл где на developer.mozilla.org скриптами качается образ виртуальной машины. Можно прямую ссылку?

Isur
() автор топика
Ответ на: комментарий от Isur

Прямой ссылки нет.
Есть скрипт

mach
в корневом каталоге сурса firefox и нужно выполнить
./mach bootstrap
Нужное - будет скачано скриптом с серверов гугл и мозилла, распаковано и установлено.

blitz
()

Больше ARM, как клиентской /железяки/ОС, я видеть не хочу.
ARM - это злобные проприетарщики, похуже СКО. MS там и рядом не валялся.

Deleted
()
Ответ на: комментарий от Deleted

У мозилла, свои фермы сервера сборки - и да, они сами имеют проблемы с переходом с gcc на clang.
Десктоп - уже научили в clang. ARM - пока что нет.
Феннек, он же Огнелис для мобил/ARM, когда собирается с clang и устанавливается - отказывается работать на девайсах.

свять-свять, с таким работать каждый день.. 8-(

А каждый день, не нужно устанавливать среду для разработки в ARM.

blitz
()
Ответ на: комментарий от blitz

Что за сурс firefox? Нужно клонировать к себе ветку с помощью какой-то системы управления версиями типа svn или git?

Isur
() автор топика
Ответ на: комментарий от blitz

Скачал, скрипт не работает

# ./mach bootstrap

Please choose the version of Firefox you want to build:
1. Firefox for Desktop Artifact Mode
2. Firefox for Desktop
3. Firefox for Android Artifact Mode
4. Firefox for Android

Note on Artifact Mode:

Firefox for Desktop and Android supports a fast build mode called
artifact mode. Artifact mode downloads pre-built C++ components rather
than building them locally, trading bandwidth for time.

Artifact builds will be useful to many developers who are not working
with compiled code. If you want to work on look-and-feel of Firefox,
you want "Firefox for Desktop Artifact Mode".

Similarly, if you want to work on the look-and-feel of Firefox for Android,
you want "Firefox for Android Artifact Mode".

To work on the Gecko technology platform, you would need to opt to full,
non-artifact mode. Gecko is Mozilla's web rendering engine, similar to Edge,
Blink, and WebKit. Gecko is implemented in C++ and JavaScript. If you
want to work on web rendering, you want "Firefox for Desktop", or
"Firefox for Android".

If you don't know what you want, start with just Artifact Mode of the desired
platform. Your builds will be much shorter than if you build Gecko as well.
But don't worry! You can always switch configurations later.

You can learn more about Artifact mode builds at
https://developer.mozilla.org/en-US/docs/Artifact_builds.

Your choice:
4
Executing as root: dnf groupinstall "Development Tools" "Development Libraries" "GNOME Software Development"
Using metadata from Sun Jan  7 10:43:14 2018
Warning: Group 'Development Libraries' does not exist.
Dependencies resolved.
=======================================================================================================================================
 Group                                                    Packages
=======================================================================================================================================
Marking installed:
 Средства разработки
Продолжить? [y/N]: y
Выполнено!
Executing as root: dnf install autoconf213 mercurial curl-devel
Using metadata from Sun Jan  7 10:43:14 2018
Package autoconf213-2.13-31.el7.noarch is already installed, skipping.
Package autoconf213-2.13-31.el7.noarch is already installed, skipping.
Package autoconf213-2.13-31.el7.noarch is already installed, skipping.
Package mercurial-2.6.2-8.el7_4.x86_64 is already installed, skipping.
Package mercurial-2.6.2-8.el7_4.x86_64 is already installed, skipping.
Package mercurial-2.6.2-8.el7_4.x86_64 is already installed, skipping.
Package mercurial-2.6.2-8.el7_4.x86_64 is already installed, skipping.
Package mercurial-2.6.2-8.el7_4.x86_64 is already installed, skipping.
Package libcurl-devel-7.29.0-42.el7_4.1.x86_64 is already installed, skipping.
Dependencies resolved.
Nothing to do.
Error running mach:

    ['bootstrap']

The error occurred in code that was called by the mach command. This is either
a bug in the called code itself or in the way that mach is calling it.

You should consider filing a bug for this issue.

If filing a bug, please include the full output of mach, including this error
message.

The details of the failure are as follows:

NotImplementedError: Cannot bootstrap Firefox for Android: mozboot.base does not yet implement install_mobile_android_packages()

  File "/srv/unsaved/mozilla-arm_0011/firefox-52.5.2esr/python/mozboot/mozboot/mach_commands.py", line 26, in bootstrap
    bootstrapper.bootstrap()
  File "/srv/unsaved/mozilla-arm_0011/firefox-52.5.2esr/python/mozboot/mozboot/bootstrap.py", line 228, in bootstrap
    getattr(self.instance, 'install_%s_packages' % application)()
  File "/srv/unsaved/mozilla-arm_0011/firefox-52.5.2esr/python/mozboot/mozboot/centosfedora.py", line 94, in install_mobile_android_packages
    BaseBootstrapper.install_mobile_android_packages(self)
  File "/srv/unsaved/mozilla-arm_0011/firefox-52.5.2esr/python/mozboot/mozboot/base.py", line 156, in install_mobile_android_packages
    % __name__)

Isur
() автор топика
Ответ на: комментарий от Isur
NotImplementedError: Cannot bootstrap Firefox for Android

Ошибка, и опять
Девелоперы мозилла активно меняют Android NDK и SDK под свои версии ARM.

И у меня, не с первой попытки получилось собрать.
Вот эта версия, заработала.

-rw-r--r-- 1 blitz 100 249060924 Dec 22 13:05 firefox-58.0b12.source.tar.xz

blitz
()
Ответ на: комментарий от blitz

С мозилла, скучно не бывает.

Почему вы мне так настойчиво советуете заняться мазохизмом?

Вообще-то я, создавая эту тему, надеялся на другое. Что мне подскажут как сделать qemu-образ какого-нибудь Raspbian, например.

Isur
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.