Главная >> Инструкции >> Эмулятор Raspberry Pi 3

Эмулятор Raspberry Pi 3

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

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


Содержание статьи

Установка эмулятора Raspberry Pi 3

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

1. Загрузка образа Raspberry

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

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

2. Установка Qemu

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

sudo apt-get install qemu qemu-kvm

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

qemu-system-arm --version

3. Подготовка окружения

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

mkdir ~/raspberry

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

unzip raspbian-stretch.zip

cp raspbian-stretch.img ~/raspberry/

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

4. Подготовка образа

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

sudo gparted raspberry-stretch.img

 

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

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

sudo mount -o loop,offset=48234496 raspberry-jessie.img /mnt

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

nano /mnt/etc/ld.so.preload

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

nano /etc/udev/rules.d/90-qemu.rules

KERNEL=="sda", SYMLINK+="mmcblk0"
KERNEL=="sda?", SYMLINK+="mmcblk0p%n"
KERNEL=="sda2", SYMLINK+="root"

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

sync
sudo umount /mnt

5. Получение ядра

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

git clone https://github.com/dhruvvyas90/qemu-rpi-kernel.git

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

6. Запуск эмулятора

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

qemu-system-arm -kernel ./qemu-rpi-kernel/kernel-qemu-4.4.26-jessie -cpu arm1176 -m 1024 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw init=/bin/bash" -hda rpi.img

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

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

Эмулятор Raspberry Pi в Windows

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

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

Выводы

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

13 комментариев к “Эмулятор Raspberry Pi 3”

  1. Я сделал из этого чуда игровую ретроконсоль и поставил туда Xfce4, чтобы можно было ещё в случае чего зайти в инет и скачать, например, игру для игрового эмулятора. Иногда использую как музыкальный плеер. В общем, не пылится 🙂

    Ответить
  2. Всё хорошо, однако после установки мышь ведёт себя странно в окне qemu, скачет туда сюда. Что можно сделать? Система win10

    Ответить
  3. C:\files1\qemu>qemu-system-arm -kernel kernel-qemu-4.19.50-buster -cpu arm1176 -m 1024 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw init=/bin/bash" -hda 2020-05-27-raspios-buster-full-armhf.img
    qemu-system-arm: warning: GdkPixbuf: Cannot open pixbuf loader module file 'C:\files1\qemu\lib\gdk-pixbuf-2.0\2.10.0\loaders.cache': No such file or directory

    This likely means that your installation is broken.
    Try running the command
    gdk-pixbuf-query-loaders > C:\files1\qemu\lib\gdk-pixbuf-2.0\2.10.0\loaders.cache
    to make things work again for the time being.
    WARNING: Image format was not specified for '2020-05-27-raspios-buster-full-armhf.img' and probing guessed raw.
    Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted.
    Specify the 'raw' format explicitly to remove the restrictions.
    qemu-system-arm: versatilepb: memory size must not exceed 256MB

    C:\files1\qemu>

    Ответить
  4. Поэтому создайте файл 90-qemu.rules и добавьте туда такие строки:
    nano /etc/udev/rules.d/90-qemu.rules
    KERNEL=="sda", SYMLINK+="mmcblk0"
    KERNEL=="sda?", SYMLINK+="mmcblk0p%n"
    KERNEL=="sda2", SYMLINK+="root"

    Правило для расбиана или для хост-системы? Если первое, то не помню чтобы мы успели зачрутиться..

    Ответить

Оставьте комментарий