Андрей Смирнов
Время чтения: ~10 мин.
Просмотров: 1

Эмулятор Raspberry Pi 3

Raspberry Pi — это недорогой микрокомпьютер, который можно приобрести всего за 40 долларов. За последнее время он набрал большую популярность среди разработчиков и пользователей, которые хотят создавать различные проекты. Он очень дешевый и в то же время позволяет делать множество вещей, начиная от домашнего медиацентра и до файлового хранилища или управления роботом.

Но перед тем, как вы точно решите что он вам нужен, желательно как-нибудь протестировать его возможности, например, с помощью эмулятора. Вы можете проверить в эмуляторе некоторые свои программы, чтобы понять как они будут работать на Raspberry. В этой статье мы рассмотрим как установить эмулятор Raspberry Pi 3 на свой компьютер под управлением Linux или Windows.

Нам нужно будет сделать три вещи. Во-первых, необходимо раздобыть образ Raspberry Pi 3, во-вторых установить эмулятор Qemu, в котором мы сможем запустить образ, и скачать ядро Raspberry, специально предназначенное для Qemu, потому что с оригинальным ядром ничего не выйдет.

Нам нужен самый обычный образ Raspberry, который используется для установки на реальное устройство. Вы можете использовать Raspbian Stretch самой последней версии. Эта инструкция тестировалась c образом stretch и jessie, хотя все должно заработать и при использовании Noobs версии или более новых версий в будущем. Вы можете скачать нужную версию на официальном сайте:

Snimok-ekrana-ot-2017-08-25-17-07-24-1024x576.png

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

Qemu — это популярный эмулятор с открытым исходным кодом, который поддерживает огромное количество архитектур, среди которых и ARM процессор Raspberry Pi. Мы могли бы использовать VirtualBox, но там возможна эмуляция только компьютерной архитектуры x86, а это значит, что вы сможете запустить на нем только компьютерный Raspbian и ничего не добьетесь в плане тестирования. Поэтому давайте установим Qemu, установка программы довольно проста, в дистрибутивах Ubuntu выполните такую команду:

Пакет qemu устанавливает поддержку всех архитектур, а kvm добавляет поддержку модуля ядра аппаратной виртуализации, который очень сильно увеличивает производительность гостевой системы. Мы уже рассматривали как пользоваться qemu. Чтобы посмотреть версию программы выполните:

Snimok-ekrana-ot-2017-08-26-09-14-40-1024x576.png

Нам понадобится несколько файлов для того, чтобы запустить Raspberry Pi в эмуляторе, поэтому лучше создать одну рабочую папку:

Скопируйте в эту папку ваш образ Raspberry, который предварительно нужно извлечь из архива, если он запакован в zip:

Snimok-ekrana-ot-2017-08-26-11-45-26-1024x576.png

Также можете переименовать этот образ в rpi.img чтобы просто копировать команды из этой инструкции и не вводить имя вручную. Но оригинальный файл оставьте в другой папке, чтобы если потом что-либо сломаете, не пришлось скачивать полтора гигабайта заново.

Наш образ просто так не загрузиться, и нам нужно его еще немного подправить. Нужно примонтировать корневую файловую систему образа, но это не так просто. Поскольку это образ диска, а не раздела и на нем есть своя файловая система то мы не можем его просто так примонтировать. Откройте файл в gparted:

Найдите корневой раздел, размером четыре гигбайта с файловой системой Ext4 и нажмите «Свойства»:

Тут найдите надпись «Первый сектор», полученное число нужно умножить на 512 чтобы узнать по какому адресу нужно монтировать файловую систему, только после этого монтируем:

Затем откройте файл /mnt/etc/ld.preload.so и закомметируйте там одну строчку:

Сохраните изменения и закройте файл. Нужно еще добавить несколько правил udev, чтобы Raspbian правильно определял вашу SD карту. По большому счету программе неважно что это будет жесткий диск, файл или реальная SD карта, вот только она ожидает что это будет устройство /dev/mmcblk. Поэтому создайте файл 90-qemu.rules и добавьте туда такие строки:

Сохраните изменения и отмонтируйте раздел:

Вы можете скачать ядро для вашего образа из специального репозитория Github. Или же просто используйте такую команду для загрузки всего репозитория:

Здесь есть не самые свежие версии ядер, но они вполне работают. Да, мы будем использовать ядро Jessie для Stretch, все будет работать.

Теперь все готово и мы можем запустить эмулятор Raspberry Pi 3. Для запуска эмулятора мы будем использовать вот такую команду:

Здесь мы, кроме стандартных опций, qemu указываем параметры ядра root (корневой раздел) на /dev/sda2, нет это не в вашей файловой системе, это в файловой системе образа, указываем тип файловой системы — ext4.

Вы получите полноценную систему Raspbian ARM и сможете протестировать там все, что вам будет необходимо.  Здесь можно протестировать запуск нужных вам программ, проверить как работает код и так далее. Что нельзя проверить, так это только работу портов ввода/вывода GPIO, но для этого не нужен эмулятор, есть специальные инструменты на Python. Если для вас не принципиально использовать архитектуру ARM, вы можете установить версию x86 операционной системы Raspbian на компьютер или VirtualBox, там все очень просто.

Поскольку эту статью могут читать не только пользователи Linux, я не могу не затронуть проблему запуска эмулятора в Windows. Настроить эмулятор Raspberry Pi для Windows. Все работает по тому же принципу, только более автоматизировано. Скачать архив, который уже содержит образ, ядро и эмулятор qemu можно по ссылке.

Затем распакуйте архив и выполните двойной клик по файлу run.bat. Сразу же после этого начнется загрузка Raspbian Wheezy. После загрузки система запустит конфигуратор Raspberry Pi, raspi-config, ничего не рекомендуется менять, иначе рискуете получить проблемы со стабильностью.

В этой небольшой статье мы рассмотрели как установить и использовать эмулятор Raspberry Pi 3 на ваш компьютер. Естественно, что реальное устройство будет работать быстрее, но здесь вы можете протестировать практически все, что вам нужно. А вы используете Raspberry Pi? Для каких целей? Напишите в комментариях!

Скорее всего это первый русскоязычный мануал о настройке QEMU на Raspberry. Какое-то время назад я загорелся идеей запустить на своей Raspberry Pi 2 какую-нибуть Windows систему. Сначала я хотел узнать возможно ли установить её, просто записав на SDCARD и вставив в «малинку», но этому не дано было осуществится… После я стал искать возможность запуска через какие-нибудь эмуляторы. Наткнулся на QEMU и стал копаться с ним. Пытался я запустить эмулятор очень долго, почти всё, что я находил на форумах, было написано на английском, причём информации там было «по-минимуму», а людей, которые запустили, было совсем немного. После нескольких неудачных попыток запуска QEMU, я решил написать на 4PDA в теме, посвящённой Raspberry. Там мне помогли, и я благополучно запустил Windows 98 (почти идеально…). Запускал я это на Raspibiane (Debian). Начнём, открываем терминал и прописываем это:

sudo apt-get install sudo apt-get uprage sudo apt-get install git zlib1g-dev libsdl1.2-dev libpixman-1-0 libpixman-1-dev 

Желательно всё это делать через putty, чтобы всё символы точно соответствовали написанному. Идём далее:

git clone git://git.qemu-project.org/qemu.git 

Команда начинает скачивать «внутренности» эмулятора, этот процесс не займёт много времени. После того, как файл скачается и распакуется, появится папка (расположение /home/%username%/qemu), в которой будут расположены все файлы, которые необходимы для работы эмулятора. После того, как у нас всё скачалось и распаковалось, прописываем это:

cd qemu ./configure --target-list="i386-softmmu" --enable-sdl --prefix=/usr 

Начинается процесс конфигурации, это не займёт много времени (~30-60 секунд). Теперь нам нужно запустить процесс отладки:

sudo make 

СкриншотПосле ввода команды, начнётся отладка, она выглядит примерно так: Отладка может продолжаться неопределённое время, (~15-20 минут). Последнее, что мы должны сделать, это подправить конфиги и отладить.

sudo nano /home/pi/qemu/tcg/arm/tcg-targe­t.c sudo nano /home/pi/qemu/tcg/i386/tcg-targ­et.c 

СкриншотИногда при выполнение вышеперечисленных команд система создаёт новый файл, тогда выходим из редактора и руками открываем необходимые конфиги. Зажимаем Ctrl+W, открывается строка поиска, вводим: static void tcg_out_addi. Меняем на static inline void tcg_out_addi. Переходим ко второму конфигу, так же вызываем строку поиска и вводим этот текст: static void tcg_out_opc и меняем на static inline void tcg_out_opc. Если вы не нашли какую-то из строк, то ничего не делаем, а просто закрываем конфиг и выполняем следующий шаг (в первом конфиге я не нашёл нужную строку, однако эмулятор у меня работает нормально). Если вы закончили с заменой строк, продолжаем дальше мучать нашу «малинку»:

sudo make sudo make install 

Скриншот Настройку эмулятора мы закончили. Теперь перейдём к запуску системы. Насколько я знаю, эмулятор поддерживает данные форматы образов: .img — Образ системы. .vhd — Виртуальный «хард» .iso — Образ диска. Скачать образы интересующих вас систем можно тут, там же есть инструкция по созданию своего образа системы. Я собрал на Яндекс.Диске все образы, которые запускаются на QEMU и взяты из темы, ссылка на которую дана выше. Стоит заметить, что в названии образа Linux KDE написан пароль от пользователя. Переходим к запуску систему. Пишем в консоль:

qemu-system-i386 здесь тип образа (-hda, -fda, -cdrom) НазваниеВашегоОбраза.img -m Тут_Кол-во_ОЗУ_В_МБ(Без подчёркиваний разумеется). 

Если все настройки верны, должна начаться загрузка образа системы.Это фото, как скринить в линуксе я так и не освоил.Результат

QEMU может эмулировать не только i386 процессоры, но и другие «платформы», подробнее:

ls /usr/bin/qemu* 

Данный запрос вызывает список команд QEMU:

qemu-system-i386 --help 

Поиграйтесь с настройками QEMU, сам ещё не до конца разобрался с ним. Стоит учесть, что я запускал систему, используя ресурсы только одного ядра «малинки», при этом компьютер нагружался на 25-26% (запускал Win98). Я читал на форумах о многопоточной работе QEMU с образом системы, но так и не понял как заставить эмулятор использовать ресурсы больше, чем одного ядра. Опять же, поиграйтесь с настройками и возможно вы поймёте как настроить многопоточность (не забудьте написать в комментариях как вы это сделали). Первая партия «электронной малины» разошлась как горячие пирожки. До сих пор не понятно почему такой спрос не рождает соответствующего предложения, ведь многие готовы купить мини-пк по цене в 1,5-2 раза выше. Успевшие приобрести Raspberry в первых рядах, регулярно вызывают зависть радуют нас своими вариантами применения «малинового пирога». Кто светофор запилит, кто квейк запустит, а кое-кто и суперкомпьютером из 64-х(ага, вот так они и разошлись) Raspberry pi может похвастаться. Нам же остается ждать и надеяться. Ждать придется долго, в официальном магазине обещают доставить мини-пк не ранее через 10 недель после заказа. Потрогать все это хочется уже сейчас, но как? Первой мыслью было найти эмулятор ARM процессора для разработчиков (хотя что делать с этим дальше представлялось смутно). Но все оказалось гораздо проще, эмулятор Raspberry pi уже готов, с Raspbian-wheezy да еще и для windows. Остается только скачать и запустить. Установка, если это можно назвать так, очень проста:

  1. Качаем архив с эмулятором отсюда.
  2. Распаковываем в любую удобную директорию.
  3. Запускаем run.bat.

Через пару секунд появляется окно эмулятора с загружаемой Raspbian и фирменной малинкой в левом верхнем углу. Сразу же после загрузки появляется окно, с предложением поменять некоторую конфигурацию. Из предложенного мы можем:

  • посмотреть информацию о эмуляторе;
  • расширить файловую систему на всю SD карту (если объем более 4 Гб);
  • настроить клавиатуру;
  • настроить локаль;
  • поменять пароль;
  • разрешить запуск рабочего стола при загрузке;
  • включить ssh;

В принципе можно ничего не менять и выбрать Finish(кнопкой Tab). Получаем скучное окно терминала. Смотрим что же у нас эмулируется: Все верно. Набираем в консоли startx и ждем загрузки рабочего стола. Загружается очень скромный Lxde с минимальным предустановленным набором для разработки и обучения. Удивительно, но работает интернет. Хотя ifconfig показывает дефолтные айпи адреса, да и интернет на ноутбуке через wi-fi. То ли это бага, то ли я чего-то не понимаю. Хоть эмулятор это первый шаг к резиновой женщине и не реальное устройство, но все же лучше чем ничего. В дальнейшем предстоит выяснить есть ли эмуляция доступа к портам ввода-вывода и попытаться написать свою первую программу. Об этом в следующих статьях. взято с http://tiny-pc.ru/blog/raspberrypi/18.html Используемые источники:

  • https://losst.ru/emulyator-raspberry-pi-3
  • https://habr.com/post/276637/
  • https://rl5d.blogspot.com/2012/11/windows-raspberry-pi.html

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации