LINUX.ORG.RU

История изменений

Исправление den73, (текущая версия) :

В общем, я пока отложил эту идею. Если вдруг кому-то понадобится, то я брал форк QEMU, в котором впервые была добавлена машина raspi2. Потом этот форк включили в основной репозиторий qemu и частично изуродовали, поэтому я запускал вот этот вариант:

https://github.com/budden/qemu/commit/4428307138ef8b1d8be64944b51a4adc15c84840

В исходном репозитории есть рецепт запуска Linux, вот он:

Note (June 2018): the bulk of the raspi2 emulation and Windows-related fixes were upstreamed to mainline QEMU years ago. There is no reason to be using this code unless you really care about (1) the raspi1 machine or (2) the very flaky and incomplete USB host emulation.
...
The main focus of this work is supporting Windows on Pi2, but it's also possible to boot a recent version of Raspbian using a command such as:
qemu-system-arm -M raspi2 -kernel raspbian-boot/kernel7.img -sd 2015-09-24-raspbian-jessie.vhd -append "rw earlyprintk loglevel=8 console=ttyAMA0,115200 dwc_otg.lpm_enable=0 root=/dev/mmcblk0p2" -dtb raspbian-boot/bcm2709-rpi-2-b.dtb -usbdevice mouse -usbdevice keyboard -serial stdio

Note that it is necessary to first comment out the contents of /etc/ld.so.preload to avoid executing an unimplemented SETEND instruction. There are also a number of errors and warnings, that I haven't attempted to debug.

Rasberry Pi 1 support is also still present, but has bit-rotted somewhat. It is possible to boot older versions of Raspbian up to 2014-09-09-wheezy, but there is an unresolved issue with interrupt timeouts on the SD card I/O, so it takes a very long time. Newer versions fail to boot entirely due to a kernel-mode setend instruction (apparently introduced by this commit) which qemu does not support.

она доходит до «rescue shell» или как его там называют, и что-то показывает в lsusb. Однако графический режим не работает.

Очень важно брать версию firmware из того же времени. Если версия более поздняя, то второй (не-mini) UART не запустится. Кроме того, в этой версии отдельно обрабатываются elf файлы и не elf. Считается, что если elf - то это bare-metal проект, а если бинарный образ - это это Linux. Соответственно, по разному происходит загрузка.

В общем и целом, без вникания во все детали тут особо делать нечего.

Исходная версия den73, :

В общем, я пока отложил эту идею. Если вдруг кому-то понадобится, то я брал форк QEMU, в котором впервые была добавлена машина raspi2. Потом этот форк включили в основной репозиторий qemu и частично изуродовали, поэтому я запускал вот этот вариант:

https://github.com/budden/qemu/commit/4428307138ef8b1d8be64944b51a4adc15c84840

Там есть строчка запуска Linux, она доходит до «rescue shell» или как его там называют, и что-то показывает в lsusb. Однако графический режим не работает.

Очень важно брать версию firmware из того же времени. Если версия более поздняя, то второй (не-mini) UART не запустится. Кроме того, в этой версии отдельно обрабатываются elf файлы и не elf. Считается, что если elf - то это bare-metal проект, а если бинарный образ - это это Linux. Соответственно, по разному происходит загрузка.

В общем и целом, без вникания во все детали тут особо делать нечего.