Ports/riscv64/QEMU: различия между версиями
Jqt4 (обсуждение | вклад) |
|||
(не показаны 24 промежуточные версии 4 участников) | |||
Строка 1: | Строка 1: | ||
На этой странице описано, как запустить виртуальную машину <tt>riscv64</tt> под [https://www.qemu.org QEMU]. | |||
Начиная с версии 6.0, в состав QEMU входит OpenSBI (firmware). Для более старых версий QEMU нужно скачать собранный OpenSBI и указать его в командной строке QEMU. Как это сделть описано ниже | Начиная с версии 6.0, в состав QEMU входит OpenSBI (firmware). Для более старых версий QEMU нужно скачать собранный OpenSBI и указать его в командной строке QEMU. Как это сделть описано ниже, в секции [[#OpenSBI]]. | ||
Некоторые образы ALT для riscv64 содержат сервер VNC, через который осуществляется первоначальная настройка системы, в дальнейшем, и доступен графический интерфейс (см. [[Regular/riscv64#VNC]]). Для доступа к этому серверу удобно пробросить на хост порт 5900. В приведённых ниже командах <tt>qemu</tt> этот порт пробрасывается. | |||
== QEMU 6.0+ == | == QEMU 6.0+ == | ||
В qemu 6.0 у ядра 5.14 при загрузке с u-boot работает графика (virtio-gpu) и ввод в графике (virtio-keyboard и virtio-tablet). | В qemu 6.0 у ядра 5.14 и выше при загрузке с u-boot работает графика (virtio-gpu) и ввод в графике (virtio-keyboard и virtio-tablet). | ||
Для запуска образов в QEMU необходимо выполнить следующие шаги: | Для запуска образов в QEMU необходимо выполнить следующие шаги: | ||
'''Шаг 0.''' Для запуска порта ALT на RISC-V необходимо установить QEMU с поддержкой riscv64. Например, в случае хостовой системы на ALT x86_64: [http://sisyphus.ru | '''Шаг 0.''' Для запуска порта ALT на RISC-V необходимо установить QEMU с поддержкой riscv64. Например, в случае хостовой системы на ALT x86_64: [http://sisyphus.ru/srpm/Sisyphus/qemu qemu-system-riscv-core]: | ||
apt-get install qemu-system-riscv-core qemu-ui-sdl seavgabios \ | |||
qemu-device-display-virtio-vga qemu-device-display-virtio-vga-gl \ | |||
qemu-device-display-virtio-gpu qemu-device-display-virtio-gpu-gl | |||
'''Шаг 1.''' Скачать последнюю версию <code>u-boot-qemu</code> для riscv64. Можно воспользоваться [https://packages.altlinux.org/ru/sisyphus_riscv64/srpms/u-boot-sifive/rpms/ ссылкой на пакет на официальном сайте репозитория Sisyphus]. Или найти пакет непосредственно в [http://ftp.altlinux.org/pub/distributions/ALTLinux/ports/riscv64/Sisyphus/noarch/RPMS.classic/ репозитории]. | |||
''' | Из пакета нужно извлечь файл '''/usr/share/u-boot/qemu-riscv64_smode/u-boot.bin'''. Например: | ||
rpm2cpio u-boot-qemu-*.rpm | cpio -vi --to-stdout './usr/share/u-boot/qemu-riscv64_smode/u-boot.bin' > u-boot.bin | |||
'''Шаг 2.''' Скачать образ. Сжатые образы (например, в формате <tt>img.xz</tt>) нужно распаковать. | |||
'''Шаг | '''Шаг 3.''' Запуск образа в QEMU можно осуществить следующей командой, указав в IMAGE путь к образу и в UBOOT путь до u-boot, скачанного на шаге 1: | ||
<source lang="shell"> | <source lang="shell"> | ||
Строка 28: | Строка 31: | ||
$ UBOOT=<путь до u-boot.bin> | $ UBOOT=<путь до u-boot.bin> | ||
$ qemu-system-riscv64 \ | $ qemu-system-riscv64 \ | ||
-nographic -m | -nographic -m 4G -machine virt -kernel "$UBOOT" \ | ||
-smp cpus=4 \ | -smp cpus=4 \ | ||
-drive file=$IMAGE,id=hd0 -device virtio-blk-device,drive=hd0 \ | -drive file=$IMAGE,id=hd0 -device virtio-blk-device,drive=hd0 \ | ||
-netdev user,id=eth0,hostfwd=tcp::5900-:5900 -device virtio-net-device,netdev=eth0 \ | -netdev user,id=eth0,hostfwd=tcp::5900-:5900 -device virtio-net-device,netdev=eth0 \ | ||
-device virtio- | -device virtio-keyboard -device virtio-tablet \ | ||
-device virtio-vga-gl,xres=1280,yres=800 -display sdl,gl=on | |||
</source> | </source> | ||
Если нужен доступ по vnc, то вместо "-sdl" нужно указать "-vnc :1" и подключаться к 5901 порту (5900 порт занят для проброса сети): | Если нужен доступ по vnc, то вместо "-device virtio-vga-gl -display sdl,gl=on" нужно указать "-device virtio-vga -vnc :1" и подключаться к 5901 порту (5900 порт занят для проброса сети): | ||
<source lang="shell"> | <source lang="shell"> | ||
$ | $ remote-viewer vnc://localhost:5901 | ||
</source> | </source> | ||
== OpenSBI == | |||
Для более старых (до 6.0) версий QEMU Вам понадобится собранный OpenSBI. | |||
Скачать последнюю версию <code>opensbi</code>. Можно воспользоваться [https://packages.altlinux.org/ru/sisyphus_riscv64/srpms/opensbi/rpms/ ссылкой на пакет на официальном сайте репозитория Sisyphus]. Или найти пакет непосредственно в [http://ftp.altlinux.org/pub/distributions/ALTLinux/ports/riscv64/Sisyphus/riscv64/RPMS.classic/ репозитории] | |||
''' | Из пакета нужно извлечь файл '''/usr/share/opensbi/generic/firmware/fw_jump.elf'''. Например: | ||
rpm2cpio opensbi-*.rpm | cpio -vi --to-stdout './usr/share/opensbi/generic/firmware/fw_jump.elf' > fw_jump.elf | |||
Запуск образа в QEMU можно осуществить следующей командой, указав в IMAGE путь к образу, в UBOOT путь до u-boot, скачанного на шаге 1, в FIRM путь до fw_jump.elf. | |||
<source lang="shell"> | |||
$ IMAGE=<путь до образа> | |||
<source lang=shell> | $ UBOOT=<путь до u-boot.bin> | ||
$ FIRM=<путь до fw_jump.elf> | |||
$ qemu-system-riscv64 \ | |||
user | -nographic -machine virt \ | ||
-bios "$FIRM" \ | |||
-kernel "$UBOOT" \ | |||
-m 2G -smp cpus=4 \ | |||
-drive file=$IMAGE,id=hd0,format=raw -device virtio-blk-device,drive=hd0 \ | |||
-netdev user,id=eth0,hostfwd=tcp::5900-:5900 -device virtio-net-device,netdev=eth0 | |||
</source> | </source> | ||
Если нужен графический интерфейс запустить сервер VNC в образе, например, как описано в [[Regular/riscv64#VNC]]. | |||
Подключиться к VNC, например, так: | |||
vncviewer localhost | |||
{{Category navigation|title=RISC-V|category=RISC-V|sortkey=*}} | {{Category navigation|title=RISC-V|category=RISC-V|sortkey=*}} | ||
[[en:Ports/riscv64/QEMU]] | [[en:Ports/riscv64/QEMU]] |
Версия от 12:43, 22 апреля 2023
На этой странице описано, как запустить виртуальную машину riscv64 под QEMU.
Начиная с версии 6.0, в состав QEMU входит OpenSBI (firmware). Для более старых версий QEMU нужно скачать собранный OpenSBI и указать его в командной строке QEMU. Как это сделть описано ниже, в секции #OpenSBI.
Некоторые образы ALT для riscv64 содержат сервер VNC, через который осуществляется первоначальная настройка системы, в дальнейшем, и доступен графический интерфейс (см. Regular/riscv64#VNC). Для доступа к этому серверу удобно пробросить на хост порт 5900. В приведённых ниже командах qemu этот порт пробрасывается.
QEMU 6.0+
В qemu 6.0 у ядра 5.14 и выше при загрузке с u-boot работает графика (virtio-gpu) и ввод в графике (virtio-keyboard и virtio-tablet).
Для запуска образов в QEMU необходимо выполнить следующие шаги:
Шаг 0. Для запуска порта ALT на RISC-V необходимо установить QEMU с поддержкой riscv64. Например, в случае хостовой системы на ALT x86_64: qemu-system-riscv-core:
apt-get install qemu-system-riscv-core qemu-ui-sdl seavgabios \ qemu-device-display-virtio-vga qemu-device-display-virtio-vga-gl \ qemu-device-display-virtio-gpu qemu-device-display-virtio-gpu-gl
Шаг 1. Скачать последнюю версию u-boot-qemu
для riscv64. Можно воспользоваться ссылкой на пакет на официальном сайте репозитория Sisyphus. Или найти пакет непосредственно в репозитории.
Из пакета нужно извлечь файл /usr/share/u-boot/qemu-riscv64_smode/u-boot.bin. Например:
rpm2cpio u-boot-qemu-*.rpm | cpio -vi --to-stdout './usr/share/u-boot/qemu-riscv64_smode/u-boot.bin' > u-boot.bin
Шаг 2. Скачать образ. Сжатые образы (например, в формате img.xz) нужно распаковать.
Шаг 3. Запуск образа в QEMU можно осуществить следующей командой, указав в IMAGE путь к образу и в UBOOT путь до u-boot, скачанного на шаге 1:
$ IMAGE=<путь до образа>
$ UBOOT=<путь до u-boot.bin>
$ qemu-system-riscv64 \
-nographic -m 4G -machine virt -kernel "$UBOOT" \
-smp cpus=4 \
-drive file=$IMAGE,id=hd0 -device virtio-blk-device,drive=hd0 \
-netdev user,id=eth0,hostfwd=tcp::5900-:5900 -device virtio-net-device,netdev=eth0 \
-device virtio-keyboard -device virtio-tablet \
-device virtio-vga-gl,xres=1280,yres=800 -display sdl,gl=on
Если нужен доступ по vnc, то вместо "-device virtio-vga-gl -display sdl,gl=on" нужно указать "-device virtio-vga -vnc :1" и подключаться к 5901 порту (5900 порт занят для проброса сети):
$ remote-viewer vnc://localhost:5901
OpenSBI
Для более старых (до 6.0) версий QEMU Вам понадобится собранный OpenSBI.
Скачать последнюю версию opensbi
. Можно воспользоваться ссылкой на пакет на официальном сайте репозитория Sisyphus. Или найти пакет непосредственно в репозитории
Из пакета нужно извлечь файл /usr/share/opensbi/generic/firmware/fw_jump.elf. Например:
rpm2cpio opensbi-*.rpm | cpio -vi --to-stdout './usr/share/opensbi/generic/firmware/fw_jump.elf' > fw_jump.elf
Запуск образа в QEMU можно осуществить следующей командой, указав в IMAGE путь к образу, в UBOOT путь до u-boot, скачанного на шаге 1, в FIRM путь до fw_jump.elf.
$ IMAGE=<путь до образа>
$ UBOOT=<путь до u-boot.bin>
$ FIRM=<путь до fw_jump.elf>
$ qemu-system-riscv64 \
-nographic -machine virt \
-bios "$FIRM" \
-kernel "$UBOOT" \
-m 2G -smp cpus=4 \
-drive file=$IMAGE,id=hd0,format=raw -device virtio-blk-device,drive=hd0 \
-netdev user,id=eth0,hostfwd=tcp::5900-:5900 -device virtio-net-device,netdev=eth0
Если нужен графический интерфейс запустить сервер VNC в образе, например, как описано в Regular/riscv64#VNC.
Подключиться к VNC, например, так:
vncviewer localhost