kvm的相关介绍在此就省略了,同样的配方同样的味道,还是使用xml文件安装kvm虚拟机,但,Linux的安装和Windows的安装是有很大不同的。
本文中已经安装好的kvm镜像文件,安装用的ISO文件以及配置文件都放在网盘里了,下载地址:
链接:https://pan.baidu.com/s/1Lss524AqnKcPs3ZT-pgZ5g
提取码:kvms
一,
建立一个安装用的xml文件。
主要的安装配置linux_mini.xml文件内容如下:
此文件我们定义了这个虚拟机的名字是linux_mini,挂载了一个硬盘,该硬盘的格式是qcow2,使用的驱动是virtio,挂载了一个光驱,光驱内装载系统安装文件,文件名称是CentOS-7-x86_64-Minimal-1708.iso,使用的驱动是ide。vnc的端口定义的是5992,使用的vnc模式是vga。
- <!-- WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
virsh edit linux_mini
or other application using the libvirt API.
-->
- <domain type="kvm">
<name>linux_mini</name>
<uuid>187ca777-a965-4777-8e95-c1f0cfe2a363</uuid>
<memory unit="KiB">548576</memory>
<currentMemory unit="KiB">548576</currentMemory>
<vcpu placement="static">2</vcpu>
- <os>
<type arch="x86_64" machine="pc-i440fx-rhel7.6.0">hvm</type>
<boot dev="hd" />
</os>
- <features>
<acpi />
<apic />
</features>
- <cpu mode="host-model" check="partial">
<model fallback="allow" />
</cpu>
- <clock offset="utc">
<timer name="rtc" tickpolicy="catchup" />
<timer name="pit" tickpolicy="delay" />
<timer name="hpet" present="no" />
</clock>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
- <pm>
<suspend-to-mem enabled="no" />
<suspend-to-disk enabled="no" />
</pm>
- <devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
- <disk type="file" device="disk">
<driver name="qemu" type="qcow2" />
<source file="/opt/linux.img" />
<target dev="vda" bus="virtio" />
<address type="pci" domain="0x0000" bus="0x00" slot="0x06" function="0x0" />
</disk>
- <disk type="file" device="cdrom">
<driver name="qemu" type="raw" />
<source file="/opt/CentOS-7-x86_64-Minimal-1708.iso" />
<target dev="hda" bus="ide" />
<readonly />
<address type="drive" controller="0" bus="0" target="0" unit="0" />
</disk>
- <controller type="usb" index="0" model="ich9-ehci1">
<address type="pci" domain="0x0000" bus="0x00" slot="0x04" function="0x7" />
</controller>
- <controller type="usb" index="0" model="ich9-uhci1">
<master startport="0" />
<address type="pci" domain="0x0000" bus="0x00" slot="0x04" function="0x0" multifunction="on" />
</controller>
- <controller type="usb" index="0" model="ich9-uhci2">
<master startport="2" />
<address type="pci" domain="0x0000" bus="0x00" slot="0x04" function="0x1" />
</controller>
- <controller type="usb" index="0" model="ich9-uhci3">
<master startport="4" />
<address type="pci" domain="0x0000" bus="0x00" slot="0x04" function="0x2" />
</controller>
<controller type="pci" index="0" model="pci-root" />
- <controller type="ide" index="0">
<address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x1" />
</controller>
- <controller type="virtio-serial" index="0">
<address type="pci" domain="0x0000" bus="0x00" slot="0x05" function="0x0" />
</controller>
- <interface type="network">
<mac address="52:54:00:89:52:23" />
<source network="default" />
<model type="virtio" />
<address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x0" />
</interface>
- <serial type="pty">
- <target type="isa-serial" port="0">
<model name="isa-serial" />
</target>
</serial>
- <console type="pty">
<target type="serial" port="0" />
</console>
- <channel type="unix">
<target type="virtio" name="org.qemu.guest_agent.0" />
<address type="virtio-serial" controller="0" bus="0" port="1" />
</channel>
- <input type="tablet" bus="usb">
<address type="usb" bus="0" port="1" />
</input>
<input type="mouse" bus="ps2" />
<input type="keyboard" bus="ps2" />
- <graphics type="vnc" port="5992" autoport="no" listen="0.0.0.0">
<listen type="address" address="0.0.0.0" />
</graphics>
- <video>
<model type="vga" vram="16384" heads="1" primary="yes" />
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x0" />
</video>
- <memballoon model="virtio">
<address type="pci" domain="0x0000" bus="0x00" slot="0x07" function="0x0" />
</memballoon>
- <rng model="virtio">
<backend model="random">/dev/urandom</backend>
<address type="pci" domain="0x0000" bus="0x00" slot="0x08" function="0x0" />
</rng>
</devices>
</domain>
二,
如前所述,两个文件我们需要放置到xml定义的路径下,也就是opt目录下。
第一个文件,磁盘文件,该文件的生成命令为:
qemu-img create -f qcow2 linux.img 15G
第二个文件,也就是ISO文件,上传到opt目录下即可。
三,
启动前,我们应该要检查一下xml里的boot配置,确保是cdrom,也就是这段是cdrom:
<os>
<type arch='x86_64' machine='pc-i440fx-rhel7.6.0'>hvm</type>
<boot dev='cdrom'/>
</os>
四,
直接使用xml文件启动虚拟机,开始安装,安装命令为:
virsh create linxu_mini.xml
但是,很可惜,如果直接安装的话,会有软锁报错,因此,我们需要将内核升级成高版本的稳定内核。
这个bug修复后,在进行安装就和普通的安装一样了,只是建议分区的时候只划一个根分区和一个非常小的swap分区即可。具体分区方法过于基础,再次不予讨论。
这样的一个镜像在安装完毕后并重启kvm虚拟机后悔固化到前面所建立的linux.img 文件内,该文件是比较小的,大概会只有1.3G。
kvm的强大之处在于你只需要拷贝前面建立所用的xml文件和linux.img 文件,在其它的有kvm的环境机器上就可以一键启动一个linux系统了,虽然这个kvm镜像没有经过定制化,比如,网络和一些基础软件没有配置和安装,但,基本是开箱即用啦。