Ubuntu 16,04, QEMU 2.9.0 -М raspi2, Raspbian 2016-05-27, ваниль ядро
Compile 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, другие методы по адресу: https://askubuntu.com/questions/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.
Недостатком является то, что вам необходимо загрузить модифицированное ядро (см. https://raspberrypi.stackexchange.com/questions/47124/emulating-with-qemu-why-the-extra-kernel) и изменить изображение, чтобы оно было менее представительным для реальной системы.
Скачать: 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
Зачем нужен этот дополнительный образ ядра: https://raspberrypi.stackexchange.com/questions/47124/emulating-with-qemu-why-the-extra-kernel
Изменить Raspbian изображение, как указано на сайте: https://github.com/dhruvvyas90/qemu-rpi-kernel/wiki/Emulating-Jessie-image-with-4.x.xx-kernel/0068f0c21d942b0f331e18014ff8e22c20cada5c
Резюме:
Смонтируйте изображение так же, как мы d Идентификатор для -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, vanilla kernel
В этом новом Ubuntu QEMU 2.8.0 по умолчанию, поэтому нам не нужно компилировать QEMU из источника для -M raspi2
. Тем не менее, 2.8.0 зависает при загрузке после сообщения:
Console: switching to colour frame buffer device 100x30
Это показывает, насколько неустойчиво -M raspi2
до сих пор.
[Failed] 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)
Это сообщение 2 года, а ссылка, на которую вы ссылаетесь, составляет 1 год. Кроме того, автор вопроса просит запустить raspbian с помощью qemu, в то время как этот вопрос требует эмуляции определенного оборудования. – Phidelux
Возраст не является текущим основным критерием обмана, он больше отражает: http://meta.stackexchange.com/questions/147643/should-i-vote-to-close-a-duplicate-question-even-though-its -much-newer-and-ha Но в этом случае вы правы, так как у них одинаковые обороты. –