Недавно я начал с Qemu / KVM и libvirtd / virt-manager / virsh и т. д. В одном из многих «руководств» по установке cryptc мне было сказано установить libguestfs, что я и сделал. Замечу, что я никогда не использовал пул хранения по умолчанию; Я определил системный раздел EFI и загрузочный раздел моей установки Windows как два необработанных диска домена. Таким образом, не нужно управлять виртуальными дисками.
XML-файл для машины, которую я определяю здесь, находится по адресу https://pastebin.com/tk5X9d2i.lsk
Если я запускаю virt-manager и просматриваю детали домена виртуальной машины, который я определил через xml. Затем, когда я нажимаю на вкладку «Информация об ОС» консоли, я вижу:
Ошибка запуска устройства libguestfs: сбой guestfs_launch. Обычно это означает, что устройство libguestfs не запустилось или отказало. Сделайте: экспортируйте LIBGUESTFS_DEBUG = 1 LIBGUESTFS_TRACE = 1 и снова запустите команду. Для получения дополнительной информации прочтите: http://libguestfs.org/guestfs-faq.1.html#debugging-libguestfs Вы также можете запустить libguestfs-test-tool и опубликовать полный вывод в отчет об ошибке или сообщение в список рассылки libguestfs.
Прежде чем спросить, что вызывает ошибку, я хотел бы спросить, почему здесь вообще появляется libguestfs? Правда, я установил пакет из AUR, но я не знал об автоматическом включении libguestfs в мою libvirt. Самый простой / лучший способ избежать этой ошибки - просто удалить Libguestfs? Или это как-то требуется для базовой работы libvirt? Это кажется маловероятным, потому что это не зависит от libvirt.
Хорошо, зажигаю ли я флаги _DEBUG и _TRACE или запускаю libguestfs-test-tool, результаты диагностики кажутся почти идентичными. Вот полный вывод libguestfs-test-tool:
[scott@scott-dell7577 virt-manager]$ libguestfs-test-tool
************************************************************
* IMPORTANT NOTICE
*
* When reporting bugs, include the COMPLETE, UNEDITED
* output below in your bug report.
*
************************************************************
LIBVIRT_DEFAULT_URI=qemu:///system
PATH=/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/home/scott/.gem/ruby/2.7.0/bin:
XDG_RUNTIME_DIR=/run/user/1000
SELinux: sh: getenforce: command not found
guestfs_get_append: (null)
guestfs_get_autosync: 1
guestfs_get_backend: direct
guestfs_get_backend_settings: []
guestfs_get_cachedir: /var/tmp
guestfs_get_hv: /usr/bin/kvm
guestfs_get_memsize: 768
guestfs_get_network: 0
guestfs_get_path: /usr/lib/guestfs
guestfs_get_pgroup: 0
guestfs_get_program: libguestfs-test-tool
guestfs_get_recovery_proc: 1
guestfs_get_smp: 1
guestfs_get_sockdir: /run/user/1000
guestfs_get_tmpdir: /tmp
guestfs_get_trace: 0
guestfs_get_verbose: 1
host_cpu: x86_64
Launching appliance, timeout set to 600 seconds.
libguestfs: launch: program=libguestfs-test-tool
libguestfs: launch: version=1.42.0
libguestfs: launch: backend registered: unix
libguestfs: launch: backend registered: uml
libguestfs: launch: backend registered: libvirt
libguestfs: launch: backend registered: direct
libguestfs: launch: backend=direct
libguestfs: launch: tmpdir=/tmp/libguestfsdBVN72
libguestfs: launch: umask=0022
libguestfs: launch: euid=1000
libguestfs: begin building supermin appliance
libguestfs: run supermin
libguestfs: command: run: /usr/bin/supermin
libguestfs: command: run: \ --build
libguestfs: command: run: \ --verbose
libguestfs: command: run: \ --if-newer
libguestfs: command: run: \ --lock /var/tmp/.guestfs-1000/lock
libguestfs: command: run: \ --copy-kernel
libguestfs: command: run: \ -f ext2
libguestfs: command: run: \ --host-cpu x86_64
libguestfs: command: run: \ /usr/lib/guestfs/supermin.d
libguestfs: command: run: \ -o /var/tmp/.guestfs-1000/appliance.d
supermin: version: 5.2.0
supermin: package handler: arch/pacman
supermin: acquiring lock on /var/tmp/.guestfs-1000/lock
supermin: if-newer: output does not need rebuilding
libguestfs: finished building supermin appliance
libguestfs: begin testing qemu features
libguestfs: checking for previously cached test results of /usr/bin/kvm, in /var/tmp/.guestfs-1000
libguestfs: loading previously cached test results
libguestfs: qemu version: 5.0
libguestfs: qemu mandatory locking: yes
libguestfs: qemu KVM: enabled
libguestfs: finished testing qemu features
libguestfs: command: run: file
libguestfs: command: run: \ -- /var/tmp/.guestfs-1000/appliance.d/root
/usr/bin/kvm \
-global virtio-blk-pci.scsi=off \
-no-user-config \
-enable-fips \
-nodefaults \
-display none \
-machine accel=kvm:tcg \
-cpu host \
-m 768 \
-no-reboot \
-rtc driftfix=slew \
-no-hpet \
-global kvm-pit.lost_tick_policy=discard \
-kernel /var/tmp/.guestfs-1000/appliance.d/kernel \
-initrd /var/tmp/.guestfs-1000/appliance.d/initrd \
-object rng-random,filename=/dev/urandom,id=rng0 \
-device virtio-rng-pci,rng=rng0 \
-device virtio-scsi-pci,id=scsi \
-drive file=/tmp/libguestfsdBVN72/scratch1.img,cache=unsafe,format=raw,id=hd0,if=none \
-device scsi-hd,drive=hd0 \
-drive file=/var/tmp/.guestfs-1000/appliance.d/root,snapshot=on,id=appliance,cache=unsafe,if=none,format=raw \
-device scsi-hd,drive=appliance \
-device virtio-serial-pci \
-serial stdio \
-device sga \
-chardev socket,path=/run/user/1000/libguestfsOHS6U5/guestfsd.sock,id=channel0 \
-device virtserialport,chardev=channel0,name=org.libguestfs.channel.0 \
-append "panic=1 console=ttyS0 edd=off udevtimeout=6000 udev.event-timeout=6000 no_timer_check printk.time=1 cgroup_disable=memory usbcore.nousb cryptomgr.notests tsc=reliable 8250.nr_uarts=1 root=UUID=6850566e-3b73-42a4-8221-741ed6765ae0 selinux=0 guestfs_verbose=1 TERM=xterm"
qemu-system-x86_64: console=ttyS0: Could not open 'console=ttyS0': No such file or directory
libguestfs: error: appliance closed the connection unexpectedly, see earlier error messages
libguestfs: child_cleanup: 0x55e8756a5280: child process died
libguestfs: sending SIGTERM to process 168395
libguestfs: error: /usr/bin/kvm exited with error status 1, see debug messages above
libguestfs: error: guestfs_launch failed, see earlier error messages
libguestfs: closing guestfs handle 0x55e8756a5280 (state 0)
libguestfs: command: run: rm
libguestfs: command: run: \ -rf /tmp/libguestfsdBVN72
libguestfs: command: run: rm
libguestfs: command: run: \ -rf /run/user/1000/libguestfsOHS6U5
[scott @ scott-dell7577 virt-manager] $
Теперь я действительно безнадежно запутался: кто просил libguestfs сделать ЛЮБОЕ из этого? то есть превратить мой xml в какие-то запутанные резервные + оверлейные изображения для «защиты» моих дисков. Я совсем не это определил !! И почему он вообще решил сделать машину с console = ttyS0 ?? На моей главной машине есть / dev / ttyS [0-3], но они физически ни к чему не подключены. Я могу прикрепить xml, который определяет единственный домен, который я пытался создать, и я не могу полагаться на / dev / ttyS0. В качестве последней путаницы, конечно, выражение console = / dev / ttys0 означает, что это последовательное устройство у гостя, а не хоста, правильно? XML-файл каким-то образом определяет его как принадлежащий консоли, но не как существующий?
Суть в том, «как я могу решить эту проблему?