Tim's Web Home

Gentoo KVM qemu on the T website

Gentoo KVM qemu:

安装配置 KVM qemu.

  • 安装qemu相关程序
      # 安装前需添加内核支持, 设置 qemu, libvirt 等的 USE, 开启 QEMU_USER_TARGETS and QEMU_SOFTMMU_TARGETS
      root # echo 'QEMU_SOFTMMU_TARGETS="i386 x86_64"' >> /etc/portage/make.conf
      root # echo 'QEMU_USER_TARGETS="i386 x86_64"' >> /etc/portage/make.conf
      root # emerge --ask app-emulation/qemu app-emulation/virt-manager
    
  • 设置NAT网络
      # 确保iptables已安装
      #Creating TUN/TAP device
      root # ip tuntap add dev tap0 mode tap group kvm
      root # ip link set dev tap0 up promisc on
      root # ip addr add 0.0.0.0 dev tap0
      
      #Create network bridge
      root # ip link add br0 type bridge
      root # ip link set br0 up
      root # ip link set tap0 master br0
      root # echo 0 > /sys/class/net/br0/bridge/stp_state
      root # ip addr add 10.0.13.13/24 dev br0
      
      #Packet forwarding and NAT
      root # sysctl net.ipv4.conf.tap0.proxy_arp=1
      root # sysctl net.ipv4.conf.wlo1.proxy_arp=1
      root # sysctl net.ipv4.ip_forward=1
      
      #防火墙设置
      root # iptables -t nat -A POSTROUTING -o wlo1 -j MASQUERADE
      root # iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
      root # iptables -A FORWARD -i br0 -o wlo1 -j ACCEPT
      
      #Guest configuration
      # -nic tap,ifname=tap0,script=no,downscript=no
      
      #如果使用图形界面,直接使用virt-manager中的默认NAT网络,方便快捷,它的防火墙设置
      root # iptables -t nat -A POSTROUTING -o wlo1 -j MASQUERADE
      root # iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
      root # iptables -A FORWARD -i virbr0 -o wlo1 -j ACCEPT
    
  • Permissions
      #加入组,新加入组需要重新登陆才能生效
      root # gpasswd -a tim kvm
    
  • 配置libvirt
      #如果没有组,就创建组并加入组
      root # groupadd libvirt
      root # usermod -a -G libvirt tim
      
      #配置/etc/libvirt/libvirtd.conf,查找下面三行并注释掉,正常情况应该默认是注释的
      # unix_sock_group = "libvirt"
      # unix_sock_ro_perms = "0777"
      # unix_sock_rw_perms = "0770"
      
      #配置服务开机启动
      root # rc-service libvirtd start
      root # rc-update add libvirtd default
      root # rc-update add libvirt-guests default
    
  • 增加UEFI支持
      # 安装edk2-ovmf
      root # emerge -av edk2-ovmf
      root # vim /etc/libvirt/qemu.conf 
    
     file     /etc/libvirt/qemu.conf
      #增加部分配置
      nvram = [
          "/usr/share/edk2-ovmf/OVMF_CODE.fd:/usr/share/edk2-ovmf/OVMF_VARS.fd",
          "/usr/share/edk2-ovmf/OVMF_CODE.secboot.fd:/usr/share/edk2-ovmf/OVMF_VARS.fd"
      ]
    
  • windows guest
      #安装windows
      #如果使用virtio,需在主机系统安装客户系统时使用virtio-win驱动,否则看不到硬盘
      #如果使用spice,需在客户系统中安装spice-guest-tools驱动
    
  • 配置文件互转
      # 参数转xml
      root # virsh domxml-from-native qemu-argv  参数文件
      # xml转参数
      root # virsh domxml-to-native qemu-argv  测试.xml	 
    
  • 使用qemu-img压缩qcow2虚拟磁盘
      #首先在虚拟机客机内部执行如下命令,把虚拟磁盘内部所有未被占用的空间用 0 字节填充,如果不同分区挂载不同位置,使用不同路径多次使用dd填充
      root # dd if=/dev/zero of=/junk.dat
      root # rm -rf /junk.dat
      #关闭虚拟机客机,在宿主机上执行如下命令,如果有快照,快照将失效,如果虚拟磁盘太大,将会花很长时间
      root # qemu-img convert -c -O qcow2 vm-db.qcow2 vm-db-new.qcow2
      root # rm -rf vm-db.qcow2
      root # mv vm-db-new.qcow2 vm-db.qcow2
    
  • 命令行创建虚拟盘
      #最好使用qemu-img 创建虚拟盘,使用ls时显示size比较正常,如果使用virt-manager创建的虚拟盘,需使用du查看真实size
      root # qemu-img create -f qcow2 VM.qcow2 30G
    
  • 快照
      #创建外部快照
      root # virsh snapshot-create-as --domain win10 win10-SN1 --disk-only --diskspec sda,snapshot=external,file=/mnt/virtualos/KVM/images/win10-SN1.qcow2 --atomic
      #查看快照
      root # virsh snapshot-list win10
    
  • 挂载虚拟盘
      #使用qemu-nbd
      root # modprobe nbd max_part=16
      root # qemu-nbd --connect=/dev/nbd0 VM.qcow2
      # 如果没分区,先分区并格式化
      root # fdisk /dev/nbd0
      root # mkfs.ntfs -Q -L VM /dev/nbd0p1
      # 挂载
      root # mount /dev/nbd0p1 /mnt/tmp
      # 卸载
      root # umount /mnt/tmp
      root # qemu-nbd --disconnect /dev/nbd0
    

版权声明

本文作者是一位开源理念的坚定支持者,所以本文内容遵照开源的精神发布。
无担保:本文作者不保证此文内容准确无误,亦不承担任何由于使用此文档所导致的损失。
自由使用:任何人都可以自由的阅读/链接/打印此文档,无需任何附加条件。
名誉权:任何人都可以自由的转载/引用/再创作此文档,但必须保留作者署名并注明出处。
其他作品
本文作者十分愿意与他人分享劳动成果,如果你对我的其他作品有兴趣,可以在如下位置查看现有的作品集:
Tim 作品集 [ https://tiimmm.com/ ]
联系方式
由于作者水平有限,因此不能保证此文内容准确无误。如果你发现了此文中的错误(哪怕是错别字也好),请来信指出,任何提高此文质量的建议我都将虚心接纳。
Email: tiimmm dot chen at gmail dot com



网站制作者:Author:tiimmm dot chen at gmail dot com, Welcome to email for discussion!



T站勉强运行341天2时38分37秒
多伦多时间:2024-05-20 Monday 01:11:52 AM