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

Материал из ALT Linux Wiki
< Ports‎ | riscv64
мНет описания правки
мНет описания правки
Строка 13: Строка 13:
Для запуска образов в 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-device-display-virtio-gpu-gl qemu-ui-sdl seavgabios
   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/. Или найти пакет непосредственно в [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/ ссылкой на пакет на официальном сайте репозитория Sisyphus]. Или найти пакет непосредственно в [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.''' Запуск образа в QEMU можно осуществить следующей командой, указав в IMAGE путь к образу и UBOOT путь до u-boot, скачанного на шаге 1:
'''Шаг 2.''' Запуск образа в QEMU можно осуществить следующей командой, указав в IMAGE путь к образу и в UBOOT путь до u-boot, скачанного на шаге 1:


<source lang="shell">
<source lang="shell">
Строка 46: Строка 46:
Для более старых (до 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/noarch/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: Строка 69:
Если нужен графический интерфейс запустить сервер VNC в образе, например, как описано в [[Regular/riscv64#VNC]].
Если нужен графический интерфейс запустить сервер VNC в образе, например, как описано в [[Regular/riscv64#VNC]].


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


  vncviewer localhost
  vncviewer localhost

Версия от 18:51, 21 января 2022

Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.


На этой странице описано, как запустить виртуальную машину riscv64 под QEMU.

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

Некоторые образы ALT для risc64 содержат сервер 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-device-display-virtio-gpu-gl qemu-ui-sdl seavgabios

Шаг 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. Запуск образа в QEMU можно осуществить следующей командой, указав в IMAGE путь к образу и в UBOOT путь до u-boot, скачанного на шаге 1:

$ IMAGE=<путь до образа>
$ UBOOT=<путь до u-boot.bin>
$ qemu-system-riscv64 \
          -nographic -m 2G  -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-vga-gl,xres=1280,yres=800 -device virtio-keyboard -device virtio-tablet -display sdl,gl=on

Если нужен доступ по vnc, то вместо "-sdl" нужно указать "-vnc :1" и подключаться к 5901 порту (5900 порт занят для проброса сети):

$ vncviewer 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