检查前提条件 检查 cpu 是否支持硬件虚拟化
1 2 3 4 5 6 7 grep -Eoc '(vmx|svm)' /proc/cpuinfo sudo apt update sudo apt install cpu-checker kvm-ok
安装 kvm 1 2 3 4 5 6 7 8 sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst virt-manager sudo systemctl is-active libvirtd sudo usermod -aG libvirt $USER sudo usermod -aG kvm $USER
添加和删除网卡(虚拟硬件) 查看网卡列表 1 sudo virsh domiflist vm-yaohai
添加网卡 (模式桥接到 br0) 1 sudo virsh attach-interface vm-yaohai --type bridge --source br0 --model virtio --config
删除网卡 (指定 mac 地址删除) 1 sudo virsh detach-interface vm-yaohai --type bridge --mac 52:54:00:61:4c:f3 --config
添加网卡或删除网卡后需要重新定义,不然重启会失效
virsh dumpxml vm-yaohai > /etc/libvirt/qemu/vm-yaohai.xmlvirsh define /etc/libvirt/qemu/vm-yaohai.xml
kvm 默认网桥
libvirt 默认使用了一个名为 default 的 nat 网络,这个网络默认使用 virbr0 作为桥接接口,使用 dnsmasq 来为使用 nat 网络的虚拟机提供 dns 及 dhcp 服务,dnsmasq 生效后的配置文件:/var/lib/libvirt/network/default.xml
当 libvirtd 服务启动的时候,它会将它管理的被标记为 autostart 的 network 一并启动起来,而启动 network 的时候就会自动调用 dnsmasq 并赋予其适宜的配置文件来运行服务。
KVM 网桥启动 1 2 3 4 5 6 7 8 virsh net-autostart default virsh net-start default virsh net-list --all
修改网段 编辑配置文件
1 sudo virsh net-edit default
重新定义
```bashsudo virsh net-define /etc/libvirt/qemu/networks/default.xml```
重新启动网卡
1 2 sudo virsh net-destroy default sudo virsh net-start default
kickstart 自动装机 virt-install 命令 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 virt-install \ --hvm --virt-type kvm \ --accelerate \ --name vm-1 \ --os-type linux \ --os-variant centos-stream8 \ --vcpus 2 \ --ram 4096 \ --disk path=/dev/mapper/lv_name \ --network "bridge:br0,model=virtio" \ --nographics \ --location https://mirrors.aliyun.com/centos/8-stream/BaseOS/x86_64/os/ \ --initrd-inject=./ks.cfg \ --cpu host \ --extra-args "ks=file:/ks.cfg console=tty0 console=ttyS0,115200n8 net.ifnames=0 biosdevname=0"
后面的 net.ifnames=0 biosdevname=0
是内核参数,将网卡设备名固定为 eth0..eth1 等 –os-type 可以通过命令 osinfo-query os
获取
kickstart 内容
在系统安装后桌面上会生成一份 anaconda-ks.cfg
这个就是安装这个系统使用的 kickstart 配置
安装 centos8 stream
的 ks.cfg
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 install url --url="https://mirrors.aliyun.com/centos/8-stream/BaseOS/x86_64/os/" repo --name="CentOS" --baseurl="https://mirrors.aliyun.com/centos/8-stream/BaseOS/x86_64/os/" --cost=100 lang en_US.UTF-8 keyboard us network --onboot yes --device eth0 --bootproto static --ip 10.0.0.120 --netmask 255.255.0.0 --gateway 10.0.0.8 --noipv6 --nameserver 10.0.0.35,10.0.0.30 network --hostname=vm-name rootpw --iscrypted $6$7ljjIEi8rX8ydAOv$N4qtXrPQZIp5n5pbLf /BQ/1BgE0ODHoXGJzCiWCYl006hOhZeITXl.yz0kpRvolScvAMOZ..XzPIX7iiRtV5v/ firewall --service=ssh authconfig --enableshadow --passalgo=sha512 selinux --enforcing timezone --utc Asia/Shanghai text bootloader --location=mbr --driveorder=vda --append=" crashkernel=auto console=ttyS0,115200n8 net.ifnames=0 biosdevname=0" clearpart --all --drives=vda part /boot --fstype=xfs --size=500 part pv.01 --grow volgroup vg_os pv.01 logvol / --fstype=xfs --name=lv_root --vgname=vg_os --percent 90 zerombr %packages @core curl %end
kvm 透传主机 usb 设备 1 sudo usermod -aG kvm $USER
kvm 修改配置 修改内存大小 1 2 sudo virsh setmaxmem <vm-name> 16G --config sudo virsh setmem <vm-name> 16G --config