QEMU 命令行替换为 libvirt
QEMU command line replace with libvirt
我目前正在使用 qemu 命令行参数来启动 VM。
我的命令行是:
/home/gnayan/QEMU-devel/qemu-ubuntu/qemu/x86_64-softmmu/qemu-system-x86_64
-trace events=/home/gnayan/qemu_events
-drive file=/home/gnayan/CUSTOM_QEMU_SYSTEM/UBUNTU/ubuntu.img,if=virtio,format=raw
-drive file=/home/gnayan/CUSTOM_QEMU_SYSTEM/UBUNTU/u1.img,if=virtio,format=raw
-m 1G -net nic,model=virtio -net user -redir tcp:2222::22 -enable-kvm &
我想使用 libvirt 工具(如 virsh 或 virt-install 等)启动同一个 VM,但是我很难完成这项工作。
我创建了我的域 xml:
<domain type="kvm">
<name>first</name>
<currentMemory unit="MB">1024</currentMemory>
<memory unit="MB">1024</memory>
<os>
<type arch='x86_64'>hvm</type>
</os>
<devices>
<emulator>/home/gnayan/QEMU-devel/qemu-ubuntu/qemu/x86_64-softmmu/qemu-system-x86_64</emulator>
<disk type='file' device='disk'>
<source file='/home/gnayan/CUSTOM_QEMU_SYSTEM/UBUNTU/ubuntu.img'/>
<driver name='qemu' type='raw'/>
<target dev='vda' bus='virtio'/>
</disk>
</devices>
</domain>
然后尝试使用 virsh define first.xml
创建 VM
我收到以下错误:
error: Failed to define domain from first.xml
error: internal error: Child process (LC_ALL=C PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin /home/gnayan/QEMU-devel/qemu-ubuntu/qemu/x86_64-softmmu/qemu-system-x86_64 -help) unexpected exit status 126: libvirt: error : cannot execute binary /home/gnayan/QEMU-devel/qemu-ubuntu/qemu/x86_64-softmmu/qemu-system-x86_64: Permission denied
我的 ubuntu 设置可能有什么问题。
我已经从源代码安装了 qemu。
路径/home/gnayan/QEMU-devel/qemu-ubuntu/qemu/x86_64-softmmu/没有导出,libvirt会需要这个路径吗?
我也在 dmesg
中收到以下消息
type=1400 audit(1470991545.250:44): apparmor="DENIED" operation="exec" profile="/usr/sbin/libvirtd" name="/home/gnayan/QEMU-devel/qemu-ubuntu/qemu/x86_64-softmmu/qemu-system-x86_64" pid=21287 comm="libvirtd" requested_mask="x" denied_mask="x" fsuid=0 ouid=0
[19990.781774] audit: type=1400 audit(1470991545.258:45): apparmor="DENIED" operation="exec" profile="/usr/sbin/libvirtd" name="/home/gnayan/QEMU-devel/qemu-ubuntu/qemu/x86_64-softmmu/qemu-system-x86_64" pid=21288 comm="libvirtd" requested_mask="x" denied_mask="x" fsuid=0 ouid=0
我会这样做
virt-install --quiet --network bridge=bridge-name,model=virtio --name first --ram=1024 \
--vcpus=1 --disk path=/home/gnayan/CUSTOM_QEMU_SYSTEM/UBUNTU/ubuntu.img,format=raw\
--disk path=/home/gnayan/CUSTOM_QEMU_SYSTEM/UBUNTU/u1.img,format=raw \
--graphics none --os-type=linux --import --autostart & \
- bridge-name,为了link它到您必须在系统中配置的网桥(并添加物理外部端口以允许 vm 访问外部网络)
--import 选项是因为我假设 Ubuntu OS 已经安装了。
对于端口重定向,我会使用 iptables 而不是 Vagrant 风格。但只是一个意见。
不确定在 KVM 中是否可行。
我对 /var/lib/libvirtd/images/ 中图片的权限
-rw-r--r-- 1 qemu qemu
我目前正在使用 qemu 命令行参数来启动 VM。
我的命令行是:
/home/gnayan/QEMU-devel/qemu-ubuntu/qemu/x86_64-softmmu/qemu-system-x86_64
-trace events=/home/gnayan/qemu_events
-drive file=/home/gnayan/CUSTOM_QEMU_SYSTEM/UBUNTU/ubuntu.img,if=virtio,format=raw
-drive file=/home/gnayan/CUSTOM_QEMU_SYSTEM/UBUNTU/u1.img,if=virtio,format=raw
-m 1G -net nic,model=virtio -net user -redir tcp:2222::22 -enable-kvm &
我想使用 libvirt 工具(如 virsh 或 virt-install 等)启动同一个 VM,但是我很难完成这项工作。
我创建了我的域 xml:
<domain type="kvm">
<name>first</name>
<currentMemory unit="MB">1024</currentMemory>
<memory unit="MB">1024</memory>
<os>
<type arch='x86_64'>hvm</type>
</os>
<devices>
<emulator>/home/gnayan/QEMU-devel/qemu-ubuntu/qemu/x86_64-softmmu/qemu-system-x86_64</emulator>
<disk type='file' device='disk'>
<source file='/home/gnayan/CUSTOM_QEMU_SYSTEM/UBUNTU/ubuntu.img'/>
<driver name='qemu' type='raw'/>
<target dev='vda' bus='virtio'/>
</disk>
</devices>
</domain>
然后尝试使用 virsh define first.xml
创建 VM
我收到以下错误:
error: Failed to define domain from first.xml
error: internal error: Child process (LC_ALL=C PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin /home/gnayan/QEMU-devel/qemu-ubuntu/qemu/x86_64-softmmu/qemu-system-x86_64 -help) unexpected exit status 126: libvirt: error : cannot execute binary /home/gnayan/QEMU-devel/qemu-ubuntu/qemu/x86_64-softmmu/qemu-system-x86_64: Permission denied
我的 ubuntu 设置可能有什么问题。
我已经从源代码安装了 qemu。
路径/home/gnayan/QEMU-devel/qemu-ubuntu/qemu/x86_64-softmmu/没有导出,libvirt会需要这个路径吗?
我也在 dmesg
type=1400 audit(1470991545.250:44): apparmor="DENIED" operation="exec" profile="/usr/sbin/libvirtd" name="/home/gnayan/QEMU-devel/qemu-ubuntu/qemu/x86_64-softmmu/qemu-system-x86_64" pid=21287 comm="libvirtd" requested_mask="x" denied_mask="x" fsuid=0 ouid=0
[19990.781774] audit: type=1400 audit(1470991545.258:45): apparmor="DENIED" operation="exec" profile="/usr/sbin/libvirtd" name="/home/gnayan/QEMU-devel/qemu-ubuntu/qemu/x86_64-softmmu/qemu-system-x86_64" pid=21288 comm="libvirtd" requested_mask="x" denied_mask="x" fsuid=0 ouid=0
我会这样做
virt-install --quiet --network bridge=bridge-name,model=virtio --name first --ram=1024 \
--vcpus=1 --disk path=/home/gnayan/CUSTOM_QEMU_SYSTEM/UBUNTU/ubuntu.img,format=raw\
--disk path=/home/gnayan/CUSTOM_QEMU_SYSTEM/UBUNTU/u1.img,format=raw \
--graphics none --os-type=linux --import --autostart & \
- bridge-name,为了link它到您必须在系统中配置的网桥(并添加物理外部端口以允许 vm 访问外部网络)
--import 选项是因为我假设 Ubuntu OS 已经安装了。
对于端口重定向,我会使用 iptables 而不是 Vagrant 风格。但只是一个意见。 不确定在 KVM 中是否可行。
我对 /var/lib/libvirtd/images/ 中图片的权限 -rw-r--r-- 1 qemu qemu