制作镜像前需配置镜像制作环境,需根据云平台类型选择,这里不做赘述。本文使用的是Linux自带的软件工具virt-manager。
本文阐述的镜像制作方法, 简称本方法。主要是针对国产化操作系统的镜像制作,制作出来的镜像供国产化云平台使用,也可以在其他云平台使用。镜像制作过程大致包含以下几个步骤:
1. 获取操作系统文件
2. 使用国产操作系统创建虚拟机
3. 系统安装
4. 网络配置
5. 云平台所需软件包安装
6. 镜像压缩及保存
系统不同,设置默认用户、系统分区、网络配置的顺序略有不同,以实际操作为准。本文以统信UOS 20 sp1版本为例,讲述国产云平台虚拟机的镜像制作方法。
1. 获取操作系统文件
获取操作系统文件需注意根据系统cpu架构选择对应架构的操作系统。目前国产化支持的架构有ARM、X86、MIPS、Alpha, 其中ARM/MIPS/Power/ALPHA均是基于精简指令集机器处理器的架构;X86则是基于复杂指令集的架构。本文所述的国产化云平台采用的是寄居架构的虚拟化技术,即在操作系统之上安装和运行虚拟化程序,这样虚拟机的系统依赖于物理机的操作系统虚拟机的操作系统需与物理机兼容,如果架构不一致,无法正常运行。
2. 使用国产操作系统创建虚拟机
加载操作系统的安装CD或者DVD ISO文件。如下图所示,安装方式选择本地镜像源。
选中所需要的ISO文件为启动镜像,需设置系统版本。
设置内存、CPU和虚拟机根磁盘的大小。内存建议1024 即1G, cpu建议1, 根磁盘建议20G, 磁盘类型设置为VirtIO。 这里设置的内存、cpu和根磁盘大小就是云平台虚拟机支持的最小配置,所以不建议太大。不然会造成诸多资源的浪费。
对虚拟机进行自定义配置。未其配置输入(键盘、鼠标和tablet),vnc以及video 、设置启动顺序,如下图
设置虚拟机的启动顺序为从虚拟光驱引导启动:
设置完毕后点击“Begin Installation”后开始安装。
3. 系统安装
以统信uos系统制作为例:
Uos系统设置主要是指系统语言设置、安装环境选择、安装位置选择等。出现引导界面,选择安装uos
等待加载文件,可能需要1分钟左右,稍作等待。
选择安装语言,建议选择简体中文(银河麒麟由于编解码问题建议选择英文):
根据需要选择安装基本环境。云平台虚拟机建议选择最小安装或图形化服务器。 最小 化 安装 就是, 安装 最基本的程序,使之可以运行,但有些扩展模块不 安装 。图形化服务器预装了图形化界面gui以及服务器需要的必要软件。桌面服务器供终端使用,预制了gui界面。
到安装位置处,选择手动安装。添加分区。选择盘,点击右侧加号开始设置分区。
选择分区属性。文件系统、挂载点以及大小。大小可以手动输入。设置完毕后点击新建。
最终设置分区如下图所示。Vda1类型 为ext4,挂载点为/boot, 建议大小300MB。 Vda2类型 为efi, 建议大小300MB。 Vda3类型 为交换空间,
, 建议大小2048MB 。 Vda4类型 为ext4, 挂载/ 。交换空间可以不要,根分区必须在最后,方便云平台的虚拟机创建后自动进行根目录扩容。分区类型建议不要选择lvm, 选择lvm后需要手动进行磁盘扩容,适合少量的虚拟机。国产系统多采用UEFI引导系统需要增加分区/boot/efi分区。
安装位置确定后选择开始安装。
等待安装完成。
安装完成,点击立即体验, 系统开始重启。
关闭虚机。修改启动方式为从磁盘启动,再启动虚机
选择时区
设置登录用户名和密码。
等待优化系统配置
之后使用设置的用户名密码登录。
登录系统后需进行系统配置,检查防火墙和selinux是否关闭,如果没有关闭需关闭。关闭命令:
sed -i's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
setenforce 0
为保障虚拟机可通过密码访问,需修改ssh配置文件。允许密码访问和允许root管理员登录。修改/etc/ssh/sshd_config 修改以下参数后重启sshd服务。
PermitRootLogin yes
PasswordAuthentication yes
4. 网络配置
为下一步安装软件的需要,虚机需要联通网络,所以需要配置网络,主要包括配置 ip地址、网关、掩码和dns服务器。UOS启动后自动获取了地址和DNS服务器。如下图。如果虚机不能上网, 可以跳过本步骤。配置成功的网络如下图:
Ping 是否通
5. 安装云平台软件
云平台需要的软件有cloud-init,cloud-guest-utils 和qemu-guest-agent
(1)镜像源设置
#统信uos镜像源地址:
#修改/etc/apt/sources.list文件,
deb [by-hash=force]
http://uos.packages.chinauos.com/uos eagle main contrib non-free
#执行update命令
apt update
(2)安装磁盘扩容服务
cloud-guest-utils包含了虚拟机启动阶段自动根分区的软件'growpart',该软件可被cloud-init调用完成虚拟机根分区的自动扩展。centos/rhel系统安装 cloud-utils-growpart;debian/ubuntu系统安装cloud-guest-utils。
安装命令:
apt install -y cloud-guest-utils
(3)安装cloud-init
cloud-init是linux的一个工具,当系统启动时,cloud-init可从nova metadata服务或者config drive中获取元数据,完成包括但不限于下面的定制化工作:
1. 设置默认语言环境
2. 设置主机名
3. 添加ssh键到.ssh /authorized_keys
4. 设置用户密码
5. 配置网络
6. 安装软件包
安装命令:
apt install cloud-init -y
#cloud-init配置(修改/etc/cloud/cloud.cfg):
disable_root: true
ssh_pwauth: 1
注: cloud-init版本至少为0.7.9, 否则在云平台无法自动进行网络配置等。
(4)安装qemu-guest-agent
QEMU Guest Agent是运行在虚拟机内部的一个守护程序(qemu-guest-agent.service),用它来辅助Hypervisor实现对Guest的管理。QEMU为宿主机和虚拟机提供了一个数据通道(channel),这个通道的两端分别是在虚拟机内看到的串口和在宿主机上看到的unix
socket文件。宿主机与虚拟机内的qga通讯就扩展了对虚拟机的控制能力,例如在宿主机上获取虚拟机的ip地址等。
安装命令:
apt install qemu-guest-agent -y
软件安装完毕后。需清理虚拟机的网卡信息,否则使用该镜像创建虚拟机时cloud-init检测到网络已创建,无法调用相关软件分配ip地址等。虚拟机上执行以下命令。
#删除网卡相关信息:
rm -rf /etc/udev/rules.d/70-persistent-net.rules
#删除网卡配置的静态IP的信息以及/etc/reslov.conf内的信息
6. 压缩镜像
qcow2的镜像具有更高的压缩率。通过压缩可使镜像更小,节约存储空间,方便传输和存储。
虚机关闭后执行以下命令:
#执行sysprep,清理虚拟机临时及缓存文件
virt-sysprep -d 虚机名
其中虚机名可通过virsh list –all查看
#压缩镜像
virt-sparsify --compress before.qcow2 after.qcow2
压缩后的镜像的保存使用。