Ubuntu 16.04, QEMU 2.9.0 -M raspi2, Raspbian 2016-05-27, ядро ванілі
Кроки:
Компілюйте QEMU 2.9.0 з джерела:
sudo apt-get build-dep qemu-system-arm
git clone --recursive git://git.qemu-project.org/qemu.git
cd qemu
git checkout v2.9.0
./configure
make `nproc`
Завантажте зображення та витягніть з нього ядро та dts:
Завантажте зображення та розпакуйте його:
wget http://downloads.raspberrypi.org/raspbian/images/raspbian-2016-05-31/2016-05-27-raspbian-jessie.zip
unzip 2016-05-27-raspbian-jessie.zip
Змонтуйте друге зображення перегородки. Найпростіший спосіб:
sudo losetup -f --show -P 2016-05-27-raspbian-jessie.img
Це працює лише з останніми losetup
версіями Ubuntu 16.04, іншими методами за адресою: /ubuntu/69363/mount-single-partition-from-image-of-entire-disk-device/496576#496576
Це друкує циклічний пристрій, наприклад:
/dev/loop0
ми робимо:
sudo mkdir /mnt/rpi
sudo mount /dev/loop0p1 /mnt/rpi
cp /mnt/rpi/kernel7.img bcm2709-rpi-2-b.dtb .
sudo umount /mnt/rpi
sudo losetup -d /dev/loop0
Виконати:
./arm-softmmu/qemu-system-arm \
-M raspi2 \
-append "rw earlyprintk loglevel=8 console=ttyAMA0,115200 dwc_otg.lpm_enable=0 root=/dev/mmcblk0p2" \
-cpu arm1176 \
-dtb bcm2709-rpi-2-b.dtb \
-sd 2016-05-27-raspbian-jessie.img \
-kernel kernel7.img \
-m 1G \
-smp 4 \
-serial stdio \
;
Потім ви можете увійти на термінал, який відображається на вашому хост-терміналі.
Поточні обмеження:
-M raspi2
додано в QEMU 2.6.0, а Ubuntu 16.04 має лише QEMU 2.5.0, тому ми повинні компілювати QEMU з джерела. Але це не важко.
- GUI показує, але не відповідає миші / клавіатурі, протестованої як на SDL, так і на VNC. Але CLI працює прекрасно. Тож ви також можете використовувати образ Lite, який зараз перейшов у графічний інтерфейс.
- відсутність мереж
Ubuntu 16.04, QEMU 2.5.0, Raspbian 2016-05-27, модифіковане ядро
Цей метод використовує, -M versatilepb
який присутній у QEMU 2.5.0 Ubuntu 16.04.
Мінус полягає в тому, що вам потрібно завантажити модифіковане ядро (див. Емуляція за допомогою Qemu: чому додаткове ядро? ) Та змінити зображення, щоб воно було менш репрезентативним для реальної системи.
Завантажте: https://github.com/dhruvvyas90/qemu-rpi-kernel/blob/36ede073f4ccb64f60200ede36c231afe9502070/kernel-qemu-4.4.12-jessie
Ми вибираємо, 4.4.12
оскільки це версія ядра у зображенні Raspbian.
Процес створення цього блоку ядра описаний у сховищі за адресою: https://github.com/dhruvvyas90/qemu-rpi-kernel/tree/36ede073f4ccb64f60200ede36c231afe9502070/tools
Для чого потрібне це додаткове зображення ядра: Емуляція за допомогою Qemu: навіщо додаткове ядро?
Змініть зображення Raspbian, як згадувалося на веб-сторінці : https://github.com/dhruvvyas90/qemu-rpi-kernel/wiki/Emulation-Jessie-image-with-4.x.xx-kernel/0068f0c21d942b0f331e18014ff8e22c20cada5c
Підсумок:
Змонтуйте зображення так само, як ми це робили для -M raspi2
, але використовуйте другий розділ замість першого:
sudo mount /dev/loop0p2 /mnt/rpi
Редагуйте зображення:
# Comment out the line present there with #
sudo vim /mnt/rpi/etc/ld.so.preload
# Comment out the lines of type: "/dev/mmcblk*"
sudo vim /mnt/rpi/etc/fstab
Виконати:
sudo apt-get install qemu-system-arm
qemu-system-arm \
-kernel kernel-qemu-4.4.12-jessie \
-cpu arm1176 \
-m 256 \
-M versatilepb \
-no-reboot \
-serial stdio \
-append "root=/dev/sda2 panic=1 rootfstype=ext4 rw" \
-hda 2016-05-27-raspbian-jessie.img
[не вдалося] Ubuntu 17.04, QEMU 2.8.0 -M raspi2, Raspbian 2016-05-27, ядро ванілі
У цій новій версії Ubuntu QEMU 2.8.0 є типовим, тому нам не потрібно компілювати QEMU з джерела для -M raspi2
. Однак 2.8.0 зависає під завантаженням після повідомлення:
Console: switching to colour frame buffer device 100x30
Це свідчить про те, наскільки нестабільним -M raspi2
все ще є.
[не вдалося] Ubuntu 16.04, QEMU 2.9.0 -M raspi2, Raspbian 2017-08-16, ядро ванілі
У цьому новому зображенні, використовуючи той самий метод для 2016-05-27, ядро панікує під час завантаження із:
Please append a correct "root=" boot option; here are the available partitions:
...
[ 4.138114] ---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
bztsrc/raspi3-tutorial
RPI3 з чистого металу на QEMU
https://github.com/bztsrc/raspi3-tutorial - це гарний набір прикладів, які просто працюють над QEMU, надто швидкий початок роботи: Як зробити емуляцію QEMU для голого металу Raspberry Pi зображення