Я пытаюсь следовать различным инструкциям в Интернете, чтобы подражать Raspberry Pi на моей машине Fedora 22. Я нашел этот вопрос: эмулируя raspbian с QEMU и использовал его, чтобы найти kernel-qemu для захвата ядра. Я скачал 2015-09-24-raspbian-jessie.img
от хороших людей в Raspberry Pi.
Когда я пытаюсь бежать, у qemu-system-arm
меня возникает паника ядра. Я что-то пропустил?
Вот qemu-system-arm
командная строка, которую я набрал:
qemu-system-arm -cpu arm1176 -m 256 -M versatilepb -no-reboot -nographic -kernel kernel-qemu -appc=2 console=ttyAMA0 rw" -hda 2015-09-24-raspbian-jessie.img -net nic -net user,hostfwd=tcp::9999-:22
Далее следуют сообщения ядра:
sd 0:0:0:0: [sda] Attached SCSI disk
smc91x.c: v1.1, sep 22 2004 by Nicolas Pitre <nico@fluxnic.net>
eth0: SMC91C11xFD (rev 1) at d089a000 IRQ 25 [nowait]
eth0: Ethernet addr: 52:54:00:12:34:56
mousedev: PS/2 mouse device common for all mice
TCP cubic registered
NET: Registered protocol family 17
input: AT Raw Set 2 keyboard as /devices/fpga:06/serio0/input/input0
input: ImExPS/2 Generic Explorer Mouse as /devices/fpga:07/serio1/input/input1
EXT2-fs (sda2): error: couldn't mount because of unsupported optional features (244)
EXT4-fs (sda2): couldn't mount as ext3 due to feature incompatibilities
EXT4-fs (sda2): recovery complete
EXT4-fs (sda2): mounted filesystem with ordered data mode. Opts: (null)
VFS: Mounted root (ext4 filesystem) on device 8:2.
devtmpfs: mounted
Freeing init memory: 120K
Kernel panic - not syncing: Attempted to kill init!
[<c0032bec>] (unwind_backtrace+0x0/0xf0) from [<c03064dc>] (panic+0x58/0x170)
[<c03064dc>] (panic+0x58/0x170) from [<c0044054>] (do_exit+0x5d0/0x68c)
[<c0044054>] (do_exit+0x5d0/0x68c) from [<c004435c>] (do_group_exit+0x40/0xb0)
[<c004435c>] (do_group_exit+0x40/0xb0) from [<c004ed48>] (get_signal_to_deliver+0x1a8/0x378)
[<c004ed48>] (get_signal_to_deliver+0x1a8/0x378) from [<c002f124>] (do_signal+0x90/0x518)
[<c002f124>] (do_signal+0x90/0x518) from [<c002fa64>] (do_notify_resume+0x48/0x54)
[<c002fa64>] (do_notify_resume+0x48/0x54) from [<c002cc38>] (work_pending+0x24/0x28)
Ответы:
Как сказал @dastaan, версия ядра должна соответствовать файлу img. Я пытался использовать файл образа версии ядра 4.1 с ядром 3.18.
Теперь, когда я использую правильное изображение, оно работает.
Благодарность!
Редактировать: заставить это работать довольно просто: возьмите изображение с https://github.com/dhruvvyas90/qemu-rpi-kernel/ , а затем загрузите соответствующее изображение Raspian по адресу https://www.raspberrypi.org/ Загрузки / raspbian / . В настоящее время Джесси и Уизи работают в обоих местах, но в будущем нет никакой гарантии, что соответствующее ядро будет доступно на этом сайте Github. В любом случае, меня не очень впечатлила скорость, поэтому я смотрю на то, как подключить настоящий Pi к проводному сетевому порту моего ноутбука и подключить его к вспомогательному аккумулятору мобильного телефона емкостью 5200 мАч, а также использовать VNC на ноутбуке в качестве дисплей.
Я не заставлял Джесси работать; это была проблема - у меня было ядро Уизи и образ Джесси, но у меня не было ядра Джесси.
источник
Не стесняйтесь взглянуть на мое ядро с поддержкой qemu: https://github.com/diederikdehaas/raspbian-kernel
В сообщениях коммитов вы можете найти подробные описания того, что и как изменилось.
Большая часть этого была основана на этой статье: https://web.archive.org/web/20131210001638/http://xecdesign.com/compiling-a-kernel/
источник
Ubuntu 16.04, QEMU 2.9.0 -M raspi2, Raspbian 2016-05-27, ядро ванили
шаги:
Скомпилируйте QEMU 2.9.0 из исходного кода:
Скачайте образ и извлеките ядро и dts из него:
Загрузите изображение и распакуйте его:
Смонтируйте второй образ раздела. Самый простой способ это:
Это работает только с последними
losetup
на Ubuntu 16.04, другие методы по адресу: /ubuntu/69363/mount-single-partition-from-image-of-entire-disk-device/496576#496576Это печатает устройство петли, например:
Итак, мы делаем:
Бегать:
Затем вы можете войти на терминал, который отображается на вашем хост-терминале.
Текущие ограничения:
-M raspi2
был добавлен в QEMU 2.6.0, а Ubuntu 16.04 имеет только QEMU 2.5.0, поэтому мы должны скомпилировать QEMU из исходного кода. Но это не сложно.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
так как это версия ядра в образе Распбиана.Процесс создания этого большого двоичного объекта ядра описан в репозитории по адресу: https://github.com/dhruvvyas90/qemu-rpi-kernel/tree/36ede073f4ccb64f60200ede36c231afe9502070/tools
Зачем нужен этот дополнительный образ ядра: Эмуляция с Qemu: зачем дополнительное ядро?
Измените изображение Raspbian, как упомянуто по адресу: https://github.com/dhruvvyas90/qemu-rpi-kernel/wiki/Emulated-Jessie-image-with-4.x.xx-kernel/0068f0c21d942b0f331e18014ff8e22c20cada5c
Резюме:
Смонтируйте образ так же, как мы это делали для
-M raspi2
, но используйте второй раздел вместо первого:Редактировать изображение:
Бегать:
[не удалось] Ubuntu 17.04, QEMU 2.8.0 -M raspi2, Raspbian 2016-05-27, ядро ванили
В этой более новой Ubuntu QEMU 2.8.0 используется по умолчанию, поэтому нам не нужно компилировать QEMU из исходного кода для
-M raspi2
. Однако 2.8.0 зависает при загрузке после сообщения:Это показывает, насколько нестабильна
-M raspi2
ситуация.[не удалось] Ubuntu 16.04, QEMU 2.9.0 -M raspi2, Raspbian 2017-08-16, ядро ванили
На этом новом образе, используя тот же метод для 2016-05-27, ядро паникует при загрузке с:
bztsrc/raspi3-tutorial
RPI3 голый металл на QEMUhttps://github.com/bztsrc/raspi3-tutorial - это хороший набор примеров, которые работают только с QEMU. Ultraquick начинается с: Как сделать эмуляцию QEMU для изображений Raspberry Pi с голым металлом
источник
losetup
чрезмерно сложен. Вместо этого вы можете просто использоватьfdisk -l your-image.img
, а затем использовать смещение для раздела вmount
опции-o loop,offset=$((512*YOUR_OFFSET))
.Большинство руководств устарели и содержат неработающие ссылки. Вы должны использовать исправленное ядро, которое соответствует используемой вами версии raspbian.
Следующее руководство работает с февраля 2017 года. Оно содержит скрипт, который позаботится об изменении образа raspbian для работы в QEMU, а также автоматически поделится вашим сетевым соединением с raspbian.
https://ownyourbits.com/2017/02/06/raspbian-on-qemu-with-network-access/
источник
Вы можете скачать мое собственное ядро (4.1.7) для Raspbian Jessie на моем github, polaco1782 . Следуйте инструкциям на документах.
источник
fstab
записи mmcblk.