Linux KVM镜像制作
参考教程:
环境
我用的是centos7 桌面版,主要是想使用virt-manager, 有个客户端方便很多
查看CPU是否支持KVM虚拟化
egrep -c '(vmx|svm)' /proc/cpuinfo
# 返回值为0说明CPU不支持硬件虚拟化;返回1或更高值说明CPU支持。
# 通常情况,硬件虚拟化扩展是默认不启用的,要通过进入BIOS设置启用。
BIOS设置启用虚拟化(大概方法,各家机器各有不同,操作方式大致相同)
- 开机F12->BootMenu->
->Config->CPU - 将Intel® Virtualization Technology选为Enabled
- Intel® VT-d Feature选为Enabled
安装必要软件包
yum install -y libvirt-client cloud-utils virt-install libguestfs-tools openssh-askpass qemu-kvm.x86_64 qemu-img.x86_64 bridge-utils.x86_64 libvirt virt-manager
所需工具:
-
linux 系统
我只做了ubuntu、debian和centos的镜像,都是根据官方提供的云镜像制作的,和自己下载ISO做的镜像相比,镜像体积要小不少。
-
cloud_init [下载]
-
用于注入密码,许多的linux云镜像都是不提供密码的,需要用cloud_init注入密码,才能登陆到系统中。
-
源码:
#cloud-config system_info: default_user: name: idss home: /home/idss password: IDss@123 chpasswd: { expire: False } hostname: IDSS # 配置 sshd 允许使用密码登录 ssh_pwauth: True
-
源码制作成iso
cloud-localds cloud-init.iso cloud-init.cfg
-
-
idss_netwrok_init[linux下载]
非必要程序,因为配合ovs,源码就不放了。
开始制作
方式1
根据下载好的镜像,制作qcow2镜像
qemu-img convert -f qcow2 -O qcow2 ubuntu-20.04-server-cloudimg-amd64.img ubuntu20.qcow2
# 调整镜像大小
qemu-img resize ubuntu20.qcow2 50G
启动实例
virt-install --name ubuntu_20 --memory 1024 \
--disk ubuntu20.qcow2,device=disk,bus=virtio \
--disk cloud-init.iso,device=cdrom \
--os-type linux \
--os-variant ubuntu20.04 \
--virt-type kvm \
--graphics none \
--network network=default,model=virtio \
--import
方式2
- 这个我一般用于iso的制作
创建一个空的qcow2镜像
qemu-img create -f qcow2 ubuntu.qcow2 50G
创建实例
virt-install --name ubuntu20 --ram 1024 --vcpus 2 \
--disk path=ubuntu.qcow2,format=qcow2,device=disk,bus=virtio \
--cdrom ubuntu-20.04-amd64.ios \
--disk cloud-init.iso,device=cdrom \
--os-type linux \
--os-variant ubuntu20.04 \
--network network=default,model=virtio \
查看–os-variant的选项,可以用以下命令
osinfo-query os
实例操作
安装vim, wget, net-tools等工具,以及配置linux
idss_netwrok_init 自启 (非必要)
以ubuntu20为例子
mv idss_network_init /usr/bin/
chmod +x /usr/bin/idss_network_init
vim /etc/init.d/idss_network.sh
# /etc/init.d/idss_network.sh 内容
"""
#!/bin/bash
### BEGIN INIT INFO
# Provides: idss cloud network plug_in
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start test
# Description: start test
### END INIT INFO
# 开机启动网络组建
idss_network_init
echo "start idss_network_init"
"""
chmod +750 /etc/init.d/idss_network.sh
update-rc.d idss_network.sh defaults
禁止cloudinit开机自启
# 具体需要自行查看系统内的服务
systemctl disable cloud-init.service cloud-init.target ...
重启
重启并查看服务是否正常
并清理历史记录:
history -c && history -w
去除cloud_init.iso
关机,删除挂载的cloud_init.iso
清理实例
virt-sysprep -d [实例名]
导出
qemu-img convert -f qcow2 -O qcow2 [现有.qcow2] [新的.qcow2]