欢迎留言讨论,期待与你共同进步掘金人的第一篇博客 - 掘金 (juejin.cn)
本系列文章主要对如何制作OpenStack镜像的过程进行描述记录,涉及基本环境准备、常见类型操作系统的镜像制作。
让你可以从零开始安装一个操作系统,并支持个性化制作OpenStack镜像。
个性化制作OpenStack镜像|环境准备
个性化制作OpenStack镜像|Windows7
个性化制作OpenStack镜像|Windows10
个性化制作OpenStack镜像|Linux
个性化制作OpenStack镜像|Windows Server2019
省略部分前序步骤,请参考前面几篇文章。
Windows7镜像制作
1.文件准备
- cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso
- virtio-win-0.1.171.iso
- virtio-win-0.1.171_amd64.vfd
- 方便使用上述3个文件放到同一个文件下面
$ pwd
/home/centos
$ mkdir tmp
$ cd tmp/
$ ls
cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso virtio-win-0.1.171_amd64.vfd virtio-win-0.1.171.iso
2.创建镜像磁盘文件
创建一个安装虚拟机的镜像文件,这个文件相当于物理机的硬盘
格式为qcow2,
名称为win7.qcow2,
设置大小为64G。(PS:创建虚拟机的磁盘的时候注意查看物理机磁盘空间是否足够)
qemu-img create -f qcow2 -o preallocation=metadata win7.qcow2 64G
qemu-img info win7.qcow2
注意:上述命令在直接创建qcow2格式之后,注意镜像制作完成后压缩一下qcow2文件的占用空间。
也有可能是virt-install --connect具体命
令内容的不同,可详细比较CentOS中使用的命令。
3.网络配置
查看网桥,用于将虚拟机网卡桥接到某个网桥上:
brctl show
这个virbr0网桥用于自动生成的NAT网络,为了方便,一般创建一个跟物理网络直接桥接的网桥,比如创建的网桥名为br0:
sudo brctl addbr br0
brctl show
加入一张与物理网络连接的网卡,并且将网卡的IP设置到网桥上。
现在与物理网络相连的网卡是ens33,IP是172.28.0.151:
将ens33这张网卡加入br0的网桥:
sudo brctl addif br0 ens33
取消ens33的IPv4地址:
sudo ifconfig ens33 0.0.0.0
配置br0的IPv4地址为ens33原来的IP:
sudo ifconfig br0 172.28.0.151/24
再次查看网桥可以发现ens33已经连接到了br0上了:
brctl show
ens33的IP已经配置到br0上了:
4.开始制作
使用创建的磁盘安装虚拟机,以win7的iso镜像为例:
sudo virt-install --connect qemu:///system -n win7 \
--vcpus=1 -r 2048 \
--disk path=/home/win7.img,format=qcow2,device=disk,size=64,bus=virtio,cache=none \
--disk path=/home/cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso,device=cdrom,perms=rw \
--vnc --vnclisten=0.0.0.0 \
--os-type windows --os-variant=win7 \
--accelerate --network=default,model=virtio \
--disk path=/home/virtio-win-0.1.110.iso,device=cdrom,perms=rw \
--disk=/home/virtio-win-0.1.110_amd64.vfd,device=floppy
注:
#(1)-r 1024表示内存大小为1024M
#(2)--network=bridge:br0,model=virtio表示将网卡桥接到br0这个网桥上,网卡驱动为virtio
#(3)--disk path=/var/win7_ultimate_empty.qcow2,size=20,format=qcow2,bus=virtio,cache=none表示使用win7.qcow2作为硬盘,大小为20G,磁盘格式为qcow2,磁盘驱动为virtio,不使用缓存
#(4)--disk path=/home/hjj/cn_windows_7_ultimate_x64_dvd_x15-66043.iso,device=cdrom,perms=ro使用cn_windows_7_ultimate_x64_dvd_x15-66043.iso文件作为插入的CD光盘,ro代表只读
#(5)--os-type windows --os-variant=win7操作系统类型为windows,且变种为win7。此处可以只填写windows。
命令介绍与详解可以百度一下
如果装了virt-viewer,则会自动弹出win7的安装界面,不需执行5-7步,直接到第8步.
如果没装virt-viewer或未弹出则可以进行5-7步,使用其他机器连接。(另找一台能连接上此机器的电脑,系统为windows即可)
5.进行windows安装
需要注意的是:驱动的安装,其他安装步骤在此就不演示了。
使用virtio作为磁盘和网卡的驱动,由于一开始未安装virtio驱动,所以扫描不到磁盘:
需要先加载驱动程序,安装磁盘和网卡的virtio驱动:
磁盘驱动:
继续选择加载驱动程序,
网卡驱动:
接下来的过程就和安装普通win7一样了:
虚拟机在安装过程中可能会重启,如果重启时未自动开机,则可以使用virsh list --all查看所有创建的虚拟机,然后virsh start win7打开关闭的win7虚拟机。
6.镜像文件占用空间压缩
ubuntu@ubuntu:~/Desktop/ops$ qemu-img info win7.qcow2
ubuntu@ubuntu:~/Desktop/ops$ qemu-img convert -O qcow2 win7.qcow2 win7_new.qcow2
ubuntu@ubuntu:~/Desktop/ops$ ll -lh win7*
-rw-r--r-- 1 ubuntu ubuntu 7.3G Sep 30 10:41 win7_new.qcow2
-rw-r--r-- 1 root root 65G Sep 30 10:33 win7.qcow2
ubuntu@ubuntu:~/Desktop/ops$
7.上传镜像
将安装好系统的qcow2文件上传到openstack平台即可使用此镜象启动实例。
当实例安装了软件需要保存时即可创建快照,此快照为硬盘快照,使用快照创建的实例就都安装了此软件。