Ports/riscv64/QEMU: различия между версиями

Материал из ALT Linux Wiki
< Ports‎ | riscv64
Нет описания правки
(не показано 12 промежуточных версий 4 участников)
Строка 1: Строка 1:
{{Stub}}
На этой странице описано, как запустить виртуальную машину <tt>riscv64</tt> под [https://www.qemu.org QEMU].
На этой странице описано, как запустить виртуальную машину <tt>riscv64</tt> под [https://www.qemu.org QEMU].


Начиная с версии 6.0, в состав QEMU входит OpenSBI (firmware). Для более старых версий QEMU нужно скачать собранный OpenSBI и указать его в командной строке QEMU. Как это сделть описано ниже,  в секции [[#OpenSBI]].
Начиная с версии 6.0, в состав QEMU входит OpenSBI (firmware). Для более старых версий QEMU нужно скачать собранный OpenSBI и указать его в командной строке QEMU. Как это сделть описано ниже,  в секции [[#OpenSBI]].


Некоторые образы ALT для risc64 содержат сервер VNC, через который осуществляется первоначальная настройка системы, в дальнейшем, и доступен графический интерфейс (см. [[Regular/riscv64#VNC]]. Для доступа к этому серверу удобно пробросить на хост порт 5900. В приведённых ниже командах <tt>qemu</tt> этот порт пробрасывается.
Некоторые образы 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/en/srpm/Sisyphus/qemu qemu-system-riscv-core]:
'''Шаг 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


  apt-get install qemu-system-riscv-core qemu-device-display-virtio-gpu-gl qemu-ui-sdl seavgabios
'''Шаг 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/ репозитории].


'''Шаг 1.''' Скачать последнюю версию <code>u-boot-qemu</code> для riscv64. Можно воспользоваться ссылкой со страницы https://packages.altlinux.org/ru/sisyphus_riscv64/srpms/u-boot-sifive/rpms/. Или найти пакет непосредственно в [http://ftp.altlinux.org/pub/distributions/ALTLinux/ports/riscv64/Sisyphus/noarch/RPMS.classic/ репозитории]
Из пакета нужно извлечь файл '''/usr/share/u-boot/qemu-riscv64_smode/u-boot.bin'''. Например:


Из пакета нужно извлечь файл '''/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


  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>) нужно распаковать.


'''Шаг 2.''' Запуск образа в QEMU можно осуществить следующей командой, указав в IMAGE путь к образу и UBOOT путь до u-boot, скачанного на шаге 1:
'''Шаг 3.''' Запуск образа в QEMU можно осуществить следующей командой, указав в IMAGE путь к образу и в UBOOT путь до u-boot, скачанного на шаге 1:


<source lang="shell">
<source lang="shell">
Строка 29: Строка 31:
$ UBOOT=<путь до u-boot.bin>
$ UBOOT=<путь до u-boot.bin>
$ qemu-system-riscv64 \
$ qemu-system-riscv64 \
           -nographic -m 2G -machine virt -kernel "$UBOOT" \
           -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-vga-gl,xres=1280,yres=800 -device virtio-keyboard -device virtio-tablet -display sdl,gl=on
          -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">
$ vncviewer localhost:5901
$ remote-viewer vnc://localhost:5901
</source>
</source>


Строка 46: Строка 49:
Для более старых (до 6.0) версий QEMU Вам понадобится собранный OpenSBI.
Для более старых (до 6.0) версий QEMU Вам понадобится собранный OpenSBI.


Скачать последнюю версию <code>opensbi</code>. Можно воспользоваться ссылкой со страницы https://packages.altlinux.org/ru/sisyphus_riscv64/srpms/opensbi/rpms/. Или найти пакет непосредственно в [http://ftp.altlinux.org/pub/distributions/ALTLinux/ports/riscv64/Sisyphus/noarch/RPMS.classic/ репозитории]
Скачать последнюю версию <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'''. Например так:
Из пакета нужно извлечь файл '''/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
  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
Запуск образа в QEMU можно осуществить следующей командой, указав в IMAGE путь к образу, в UBOOT путь до u-boot, скачанного на шаге 1, в FIRM путь до fw_jump.elf.


<source lang="shell">
<source lang="shell">
Строка 69: Строка 72:
Если нужен графический интерфейс запустить сервер VNC в образе, например, как описано в [[Regular/riscv64#VNC]].
Если нужен графический интерфейс запустить сервер VNC в образе, например, как описано в [[Regular/riscv64#VNC]].


Подключиться к VNC, например так:
Подключиться к VNC, например, так:


  vncviewer localhost
  vncviewer localhost

Версия от 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