如何使用 qemu 设置从主机到来宾的 ssh?我可以在没有任何特殊参数的情况下启动 VM 时使用端口重定向,如下所示:
/usr/bin/qemu-system-x86_64 -hda ubuntu1204 -m 512 -redir tcp:7777::8001
Run Code Online (Sandbox Code Playgroud)
但是当我尝试使用以下内容启动时:
/usr/bin/qemu-system-x86_64 \
-m 1024 \
-name vserialtest \
-hda ubuntu1204 \
-chardev socket,host=localhost,port=7777,server,nowait,id=port1-char \
-device virtio-serial \
-device virtserialport,id=port1,chardev=port1-char,name=org.fedoraproject.port.0 \
-net user,hostfwd=tcp:7777::8001
Run Code Online (Sandbox Code Playgroud)
我收到以下错误并且 VM 无法启动:
qemu-system-x86_64: -net user,hostfwd=tcp:7777::8001: invalid host
forwarding rule 'tcp:7777::8001'
qemu-system-x86_64: -net user,hostfwd=tcp:7777::8001: Device 'user'
could not be initialized
Run Code Online (Sandbox Code Playgroud)
请注意,我可以在没有-net参数的情况下启动 VM,没有任何问题,但是,我想设置从主机到来宾的 ssh。从来宾到主机的 ssh 按预期工作正常。
我试过使用
-net user,hostfwd=tcp::7777-:8001
Run Code Online (Sandbox Code Playgroud)
也
-net user,hostfwd=tcp::7777:8001
Run Code Online (Sandbox Code Playgroud)
但错误仍然存在并且虚拟机无法启动。
我试图chroot进入的Arch LinuxARM的文件系统x86_64。
我已经看到可以qemu通过将二进制文件复制到 chroot 系统来使用静态:
$ cp /usr/bin/qemu-arm archarm-chroot/usr/bin    
Run Code Online (Sandbox Code Playgroud)
但尽管如此,我总是收到以下错误:
chroot: failed to run command ‘/bin/bash’: Exec format error
Run Code Online (Sandbox Code Playgroud)
我知道这意味着架构不同。难道我做错了什么?
我正在使用以下命令在 Debian 测试 x64 上运行 QEMU/KVM:
kvm -m 1024 -hda win7.img -cdrom win7x86.iso -boot d -net user
Run Code Online (Sandbox Code Playgroud)
但是当我在虚拟机内部单击时,QEMU 会捕获我的鼠标并且不会放开它。我认为释放鼠标的组合键是Right Ctrl,但按下它时没有任何反应。我也尝试附加-usbdevice tablet或-usbdevice mouse选项:
kvm -m 1024 -hda win7.img -cdrom win7x86.iso -boot d -net user -usbdevice tablet
Run Code Online (Sandbox Code Playgroud)
或者
kvm -m 1024 -hda win7.img -cdrom win7x86.iso -boot d -net user -usbdevice mouse
Run Code Online (Sandbox Code Playgroud)
但情况是一样的。我正在使用 QEMU 模拟器版本 1.7.0(Debian 1.7.0+dfsg-2)。
我正在尝试使用 QEMU (kmv) 模拟 EFI 环境;使用 archboot 在 EFI 模式下启动 virtualbox 需要 15 分钟。
使用传统 BIOS 模式,我可以使用以下命令启动:
root@citsnmaiko-deb:/home/maiko/uefi/ovmf# qemu-system-x86_64 -kernel  ../bzImage -initrd ../rootfs.gz -append "rw root=/dev/ram0  ramdisk_size=40960"
Run Code Online (Sandbox Code Playgroud)
它适用于我的自定义内核和文件系统。
file ../bzImage 
../bzImage: Linux kernel x86 boot executable bzImage, version 3.6.1 (root@citsnmaiko-deb) #4 , RO-rootFS, swap_dev 0x3, Normal VGA
Run Code Online (Sandbox Code Playgroud)
它也有 EFI 支持。
我正在尝试对从此处下载的 EFI 文件执行相同操作
wget http://ufpr.dl.sourceforge.net/project/edk2/OVMF/OVMF-X64-r11337-alpha.zip -P ovmf
cd ovmf/
unzip -x OVMF-X64-r11337-alpha.zip
# rename the files for QEMU find them
mv OVMF.fd bios.bin
mv CirrusLogic5446.rom vgabios-cirrus.bin
# start QEMU
root@citsnmaiko-deb:/home/maiko/uefi/ovmf# …Run Code Online (Sandbox Code Playgroud) 我有一个来自这里的磁盘映像文件;该页面说我可以使用 QEMU 和以下命令启动此映像:
$ qemu-system-x86_64  -m 4096  -ctrl-grab  -no-reboot  x86-64.img
Run Code Online (Sandbox Code Playgroud)
这给出了一个信息:
WARNING: Image format was not specified for 'x86-64.img' and probing guessed raw.
     Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted.
     Specify the 'raw' format explicitly to remove the restrictions.
Run Code Online (Sandbox Code Playgroud)
模拟器加载,但 PilOS 崩溃,这意味着我做错了什么:
(可能是因为 PilOS 想写入块 0 但不能)
该raw命令行参数,据我所知,这意味着这样传递:
$ qemu-system-x86_64 -drive format=raw file=x86-64.img 
qemu-system-x86_64: -drive format=raw: drive with bus=0, unit=0 (index=0) exists
Run Code Online (Sandbox Code Playgroud)
这失败了(我认为),因为我的引导设备在/dev/sda总线 0 …
除非您已经有一个可用的 XML 文件,否则您似乎无法使用 virsh 创建全新的 VM。
我刚刚安装了 QEMU-KVM 工作所需的所有位,现在需要创建我的第一个 VM。
如何?
提示:我没有图形!
过去我使用过 Virtual Box,它非常支持与 Windows 来宾共享主机上的文件夹。我正在为 QEMU 寻找类似的功能。
该文档建议公开运行在网络某处的 Samba 服务器,或使用-net user,smb=/path/to/folder来启动 samba 服务器。
我-net user,smb对 QEMU的选择不走运。它所做的只是启动smbd(由于端口冲突,它与本地运行的另一个服务冲突)。可以说,这是无法使用的,尤其是考虑到多个客人时。(对于Linux,-virtfs(Plan 9)可用于轻松共享文件夹。)
Samba 的其他问题是它不仅限于文件夹共享,它还可以共享打印机、用户映射等等。我所需要的只是与 Windows 来宾共享一个(或多个?)文件夹。
是否存在适用于 Windows 客户机的 QEMU 的替代文件夹共享方法?
或者有没有办法配置 Samba 以将其自身限制为一组非常有限的功能并将其集成到 QEMU 中?这应该:
我正在尝试让 qemu-kvm 从我的实时 USB 记忆棒启动。这可能吗?
[背景:我想实际测试如何在未连接时关闭静态网络接口?]
我正在使用 libvirt(通过virt-manager)设置 QEMU-KVM 虚拟机。我在上面放了两个网卡(都是 virtio)。它们桥接到主机上的物理 NIC。
我想测试当我“拔掉”一个 NetworkManager 时它会做什么。但是在 virt-manager 中没有按钮/复选框,也没有快速的谷歌搜索出现任何东西。
如何模拟拔掉网线?
我试图了解 VM 生态系统的所有组件是如何组合在一起的。
有什么区别:
哪个由virsh和控制virt-install?
这个评论说 libvirt 是 QEMU 之上的抽象,QEMU 是 KVM 之上的抽象。然而官方的 QEMU 文档说 QEMU 是一个处理器模拟器,这听起来像是最低级别的组件。
qemu ×10
kvm ×4
libvirt ×2
networking ×2
virsh ×2
arch-arm ×1
boot ×1
chroot ×1
disk-image ×1
file-sharing ×1
linux-kernel ×1
mouse ×1
samba ×1
ssh ×1
ubuntu ×1
uefi ×1
usb-drive ×1
windows ×1
x11 ×1