Я использую сборку root для компиляции minimalisti c linux с ядром 4.19-rt. Предполагается, что он работает на Raspberry Pi 3B (процессор руки). Кроме того, я хочу запустить его на компьютере x86_64 linux и в качестве решения для эмуляции нашел qemu.
Сборка linux и ядра и запуск его на raspi работает. Он загружается, я могу войти и использовать его.
Для проверки QEMU я следовал этой инструкции [1]. Недавний raspbian с ядром 4.19 загружается нормально, поэтому, похоже, qemu установлен правильно.
sudo qemu-system-arm -kernel ./qemu-rpi-kernel/kernel-qemu-4.19.50-buster -hda 2019-09-26-raspbian-buster-lite.img -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw" -dtb qemu-rpi-kernel/versatile-pb.dtb
Объединение 1. и 2. не удается. Когда я пытаюсь эмулировать любую самостоятельную сборку linux, qemu показывает только черный экран и один процессор использует 100%.
Я использовал тот же sdcard.img, который работает на реальном оборудовании. Я также пытался перекомпилировать всю систему с нормальным ядром 4.19 (без реального времени). И я попытался построить универсальную систему (make qemu_arm_versatile_defconfig && make). Ничего из этого не работает.
Команда для запуска эмуляции:
sudo qemu-system-arm -kernel zImage -drive format=raw,file=sdcard.img -cpu arm1176 -m 256 -M versatilepb -no-reboot -append "root=/dev/mmcblk0p2 panic=1 rootfstype=ext4 rw" -serial stdio
Моя главная проблема в том, что абсолютно никакого полезного вывода нет. Команда выводит следующее
ALSA lib pulse.c:242:(pulse_connect) PulseAudio: Unable to connect: Connection refused
sdl: SDL_OpenAudio failed
sdl: Reason: ALSA: Couldn't open audio device: Connection refused
ALSA lib pulse.c:242:(pulse_connect) PulseAudio: Unable to connect: Connection refused
sdl: SDL_OpenAudio failed
sdl: Reason: ALSA: Couldn't open audio device: Connection refused
audio: Failed to create voice `lm4549.out'
и открывает окно для графического вывода (которое ничего не показывает). Это сообщение также появляется при эмуляции raspbian, поэтому оно не является причиной.
Когда я запускаю qemu с предварительно собранным raspbian, но без аргумента -dtb, я получаю сообщение типа «Ошибка: недопустимый dtb и нераспознанный / неподдерживаемый идентификатор машины ". Я бы, по крайней мере, ожидал что-то подобное с моим собственным кодом сборки. Но из-за отсутствия выходных данных у меня нет идей, что даже искать в Google.
Может быть, у кого-то есть идея, что я делаю неправильно или как я получаю qemu, чтобы предоставить мне любую полезную информацию о том, что произошло? не так?
Заранее спасибо
[1] https://blog.agchapman.com/using-qemu-to-emulate-a-raspberry-pi/