开发者
资源
虚拟机镜像制作
虚拟机镜像制作
发表于2023/09/14
2k17

当前欧拉系统和centos的大多数镜像都可以在官方镜像网站直接下载。

欧拉系统镜像地址(以openEuler-20.03-LTS-SP1为例):

https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS-SP1/virtual_machine_img/

有些镜像可能只有ISO但是没有qcow2格式的虚拟机镜像,或者我们在某些情况下需要定制化镜像(譬如要预装某些服务和软件),这种情况下需要我们自己制作镜像,本文以鲲鹏服务器(arm架构)为例为大家介绍制作虚拟机镜像的步骤。

1,环境准备

虚拟机镜像的制作在物理机上进行,需安装libvirt和qemu。除此之外还需要一些能修改镜像的工具和虚拟化的辅助软件。

建议在openEuler操作系统上制作镜像,在安装虚拟化软件时会方便很多。

以openEuler系统为例,执行以下命令安装虚拟化软件:

yum install libstdc++

yum install qemu qemu* libvirt virt-install guestfish libguestfs-tools #如果提示没有guestfish就不要这个了

yum  upgrade libguestfs-tools

执行以下命令进行验证:

virsh version

虚拟机在安装软件时需要联网,可以以NAT方式连接。

执行以下命令开启ipv4转发功能:

sysctl -w net.ipv4.ip_forward=1

使用NAT方式可以使KVM的虚拟机快速联网,在虚拟机启动后修改网卡文件中的ONBOOT=yes,然后执行service network restart即可联网,同时虚拟机和宿主机可以互相ping通。

2,制作镜像

本文以制作centos7.6的虚拟机镜像为例。

执行以下命令创建镜像文件:

qemu-img create -f qcow2 /root/CentOS7.6.qcow2 40G

创建虚拟机并安装操作系统:

virt-install --name centos76 --ram 4096 --vcpus 4  --os-type=linux --disk path=/root/CentOS7.6.qcow2,format=qcow2,device=disk,bus=virtio  --network network=default,model=virtio --cdrom  /root/CentOS-7-aarch64-Everything-1810.iso --graphics vnc,listen=0.0.0.0,port=7788

这条命令执行以后会等待操作系统安装完成,需要使用vnc连接进入到虚拟机进行操作系统安装。

以mobalxterm为例,可以通过vnc界面进入:

da8c71801e7d0b07cb102854dd39a5da_554x414.jpg%40900-0-90-f.jpg

接下来在VNC界面中输入服务器端口号和上面命令中配置的端口号7788即可进入安装操作系统界面:

9f18c729632b02d01e0747c2e6ec9264_553x391.jpg%40900-0-90-f.jpg

接下来开始安装操作系统(如果屏幕不适配,可以最大化mobalxterm窗口再还原刷新):

082988b194316a63f03b282deceb89fd_553x323.jpg%40900-0-90-f.jpg

选择最小化安装,并勾选下图所示的选项:

b78994e34a31f277b16fcdc3c8a364ac_554x316.jpg%40900-0-90-f.jpg

磁盘分区选择手动分区并选择Standard Partition:

1b261b24b6143b92cb3e89996bb56a60_554x320.jpg%40900-0-90-f.jpg

磁盘分区只需要两个分区就行了,注意这里磁盘驱动为virtio,所以磁盘名为vda:

2f64394e208f5849ff2c9ed2ed0de318_554x376.jpg%40900-0-90-f.jpg

最后开始安装操作系统并设置root密码,等待安装完成会,点击reboot,退出vnc:

ea7805d342b761e39596605eb35e6d0f_553x398.jpg%40900-0-90-f.jpg

Reboot之后通过virsh console centos76进入虚拟机:

9e52eca608a231a65519106c3ce778ce_554x276.jpg%40900-0-90-f.jpg

如果ip没有自动获取到,修改/etc/sysconfig/network-scripts/ifcfg-eth0文件,将其中的ONBOOT修改为yes:

34FD6AB8-2709-4024-9671-4EC9E2363C89.png

执行以下命令,重启network服务,就可以访问外网了:

service network restart

接下来在虚拟机内执行以下命令:

yum install -y acpid net-tools

chkconfig acpid on

yum install NetworkManager

chkconfig NetworkManager on

yum install cloud-init

echo "NOZEROCONF=yes" >> /etc/sysconfig/network

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

setenforce 0

systemctl disable firewalld

systemctl stop firewalld

vi /etc/ssh/sshd_config #修改以下两项

PermitRootLogin yes

PasswordAuthentication yes

安装好对应的服务之后,执行以下命令关闭虚拟机:

poweroff

到这里虚拟机的镜像已经初步制作好了(存放位置为/root/CentOS7.6.qcow2,这个镜像已经可以用了),接下来进行一些收尾工作。

执行以下命令清理虚拟机内的临时数据:

virt-sysprep -d centos76

执行以下命令压缩镜像,减少镜像体积:

virt-sparsify --compress /root/CentOS7.6.qcow2 /root/centos7.6.qcow2

压缩前的镜像大小为1.6G左右,压缩后的镜像大小仅有600多M。

将centos7.6.qcow2上传到openstack,就可以创建虚拟机进行验证了。

更多镜像制作相关的原理,以及windows镜像的制作,可以参考以下链接:

https://blog.csdn.net/jcxch/article/details/50560143

收藏举报
Level 1
0
帖子
0
粉丝
0
获赞