LINUX.ORG.RU

Как прокинуть директорию в Qemu?

 , virtiofs


1

2

Я хочу запустить qemu так, чтобы там стал доступен stage3 без скачивания изнутри из интернета.

Для этого я запускаю машину как-то так:

qemu-system-x86_64 -enable-kvm -smp 10 -m 16G  -display gtk -vga virtio \
    -drive file=./disk.qcow2,if=virtio \
    -fsdev local,id=fsdev0,path=./stage3,security_model=mapped \
    -device virtio-9p-pci,id=fs0,fsdev=fsdev0,mount_tag=stage3 \
    -netdev bridge,br=bridge0,id=net1 \
    -device virtio-net-pci,netdev=net1 \
    -cdrom admincd-amd64.iso \
    -boot d

# readlink admincd-amd64.iso 
/srv/iso/gentoo/admincd-amd64-20240324T164906Z.iso

Архив stage3 распаковал командой tar xf в директорию ./stage3

Проблема в том, что когда загрузка выполняется, там внутри

zgrep "9P" /proc/config.gz
# CONFIG_NET_9P is not set

В общем, при монтировании командой

mount -t virtiofs stage3 /mnt/stage3

dmesg говорит

virtio-fs: tag <stage3> not found

Правильно ли я понимаю, что дистроделы не учли такой вариант и не собрали как следует ядро, для работы в виртуалках?
Есть ли .iso-файл специально для установки в виртуалки?

★★★

Последнее исправление: Shushundr (всего исправлений: 1)

Ответ на: комментарий от t184256

Мне virtiofs. Но разве я не могу пожаловаться, что 9P не работает с admincd ?

Shushundr ★★★
() автор топика

CONFIG_NET_9P is not set

Есть ли .iso-файл специально для установки в виртуалки?

Некоторые дистры сейчас используют дефолтно ядро zen, например Garuda Linux. Так там CONFIG_NET_9P=y.

upd. Глянул установочное iso Арча, там обычное ядро и «CONFIG_NET_9P=m».

krasnh ★★★
()
Последнее исправление: krasnh (всего исправлений: 3)
Ответ на: комментарий от LamerOk

это немодная штука. Нельзя подключить на запись в несколько виртуалок

Shushundr ★★★
() автор топика

В этой статье
https://wiki.gentoo.org/wiki/Virtiofs
отсутствуют прямые ссылки на документацию qemu
а так же не разъясняются концепции.

Например, если третий параметр был задан (который описывает общую память), то устройство и пайп уже не нужны? Или ещё нужны…

Shushundr ★★★
() автор топика
Последнее исправление: Shushundr (всего исправлений: 1)

Запуск демона:

echo \${DISTDIR} = \"${DISTDIR}\"
/usr/libexec/virtiofsd --shared-dir "${DISTDIR}" --socket-path "${SOCKET_PATH}/distdir" &

Параметры для qemu:

-chardev socket,id=char0,path="${SOCKET_PATH}/distdir" \
-device vhost-user-fs-pci,queue-size=1024,chardev=char0,tag=distdir \

Текст ошибки в консоли хоста:

${DISTDIR} = "/var/cache/distfiles"
[2024-04-09T02:42:49Z INFO  virtiofsd] Waiting for vhost-user socket connection...
[2024-04-09T02:42:49Z INFO  virtiofsd] Client connected, servicing requests
qemu: Failed to write msg. Wrote -1 instead of 52.
qemu:[2024-04-09T02:42:55Z ERROR virtiofsd] Waiting for daemon failed: HandleRequest(InvalidParam)
 vhost_set_vring_addr failed: Invalid argument (22)
qemu: Failed to set msg fds.
qemu: vhost VQ 0 ring restore failed: -22: Invalid argument (22)
qemu: Error starting vhost: 22
qemu: Failed to set msg fds.
qemu: vhost_set_vring_call failed 22
qemu: Failed to set msg fds.
qemu: vhost_set_vring_call failed 22
qemu: Unexpected end-of-file before all data were read
Shushundr ★★★
() автор топика
Последнее исправление: Shushundr (всего исправлений: 3)
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.