最近一段时间一直在研究OpenStack和Ceph的组合,把服务器集群给搭建了起来,也通过一些官方的Linux实例跑了起来。但是一直没有Windows 10的镜像,无奈,还是自己制作吧,毕竟也不是开源的系统,找不到也正常。(也不是懒得做,主要是手头的资源少)
说干就干!
一、环境准备
在VMware Workstation Pro 10上测试,采用CentOS7.0作为宿主机。要求有图形界面。VMware Workstation设置: 选择这个选项后,安装的速度会提高。
如果Virtual Machine Management环境不具备,安装以下包
1.1安装kvm内核
yum install -y qemu-kvm.x86_64 qemu-kvm-tools.x86_64 复制代码
1.2安装virt管理工具
yum install libvirt.x86_64 libvirt-cim.x86_64 yum install libvirt-client.x86_64 libvirt-java.noarch libvirt-python.x86_64 复制代码
安装图形界面管理虚拟机(对于远程的被管理主机,可以不安装)
yum install virt-manager yum install guestfish libguestfs-tools 复制代码
检查服务状态、启动服务
service libvirtd status service libvirtd start 复制代码
1.3(略)使用ubuntu安装kvm
# 如果使用的系统是ubuntu,请使用下面的命令安装kvm。后续的制作镜像步骤雷同 sudo apt-get install qemu-kvm sudo apt-get install qemu sudo apt-get install virt-manager sudo apt-get install virt-viewer sudo apt-get install libvirt-bin sudo apt-get install bridge-utils 复制代码
二、制作镜像
在系统工具中打开虚拟系统管理器
点击该按钮创建虚拟机
选择本地安装介质
选择virtio-win-0.1.141.iso驱动文件作为ISO image
系统的类型和版本选择win10
网络连接就默认。
选择虚拟机的配置,(这里的配置仅影响马上要新建的虚拟机,之后做成镜像上传后新建云虚拟机和他无关)一般2G内存 ,2个cpu够用了
选择存放虚拟机的地方。Virt-manager给的默认位置是/var/lib/libvirt/images下。
点击“加号”创建新的存储卷
创建虚拟机文件的名字和容器格式,(一定要选择qcow2格式)空间20G,点击完成
选择刚创建的存储卷,点击“选择卷”
自定义虚拟机的名字,勾选安装前自定义配置,选择网络NAT
选择增加硬件,选择win10系统iso镜像的路径(注意之前一开始新建虚拟机用的iso镜像是驱动镜像)
设备类型选择CDROW设备,总线类型选择IDE
网卡(NIC)部分,网络源NAT,设备型号选择virtio,点击应用
SATA磁盘,磁盘总线选择VirtIO,存储格式qcow2,点击应用
调整引导选项优先级,把系统镜像的cdrow调到最上面。点击应用。
记得前面配置硬件的对每个硬件的操作完成都要点击“应用”,检查配置无误后,点击左上角“开始安装”,开始装虚拟机系统
进入安装系统界面,一路点击“下一步”
这里系统没有发现磁盘,因为之前磁盘选的是virtio格式,而windows并不自带虚拟磁盘驱动,所以前面所述的virtio-win-0.1.141.iso文件派上用场。点击“加载驱动程序”
点击“浏览”
选择驱动安装位置,CD驱动器 --> viostor --> W8.1 --> amd64 (64位系统对应的是amd64,32位系统对应x86)
安装驱动 “Red HatVirtIO SCSI ...”(磁盘驱动)
发现驱动装好,磁盘被正确识别。点击“下一步”
系统开始安装
设置用户名、密码等一系列系统信息
安装完系统后,由于网卡驱动还没装,所以不能上网。右键计算机->属性->进入设备管理器。选择带有黄色警告标示的网卡(图中名为“以太网控制器”)。右键属性,选择“更新驱动程序”。
25、驱动成功安装,看到虚拟机能联网就大功告成,按照相同方法安装剩余的两个PCI驱动
26、驱动安装完成,镜像制作完成,关机进行镜像文件的压缩处理
三、镜像处理
(文件所显示的大小,与实际的占用空间不一致,实际占用小,但是拷贝到windows中占用空间为文件大小)
3.1 压缩镜像
用图形界面的虚拟机管理器制作的Windows镜像,文件大小即为新建虚拟机定义的磁盘大小,如果要c盘40G的话,生成的镜像文件就是40G大小,需要压缩后再上传。40G大小压缩后3G。
virt-sparsify --compress --convert qcow2 /var/lib/libvirt/images/ Windows10.qcow2 /var/lib/libvirt/images/ Windows10.qcow2 复制代码
(该命令包含在包里guestfish libguestfs-tools)
上面命令压缩未成功,使用下面命令压缩
qemu-img convert -c -O qcow2 /var/lib/libvirt/images/win10.qcow2 /var/lib/libvirt/images/Windows10.qcow2 复制代码
四、附录:
4.1 改变镜像文件大小
1、qemu-img resize命令 这个命令需要注意数据的备份,下面是转化的例子。 (该命令增加了D盘,并未将C盘增大)
qemu-img resize Windows10. qcow2 +5GB 复制代码
查询调整情况
qemu-img info Windows10. qcow2 复制代码
2、virt-resize命令
(通过该命令实现 镜像文件大小的调整,注意:针对根分区或c盘分区的扩大,解决不同C盘大小,多次安装操作系统做镜像的问题;) 查看分区情况(也许和你想的不一样)
[root@localhost ~]# virt-filesystems** --long -h --all -a /root/ Windows10-imange.qcow2 Name Type VFS Label MBR Size Parent /dev/sda1 filesystem ntfs 系统保留 - 100M - /dev/sda2 filesystem ntfs - - 20G - /dev/sda1 partition - - 07 100M /dev/sda /dev/sda2 partition - - 07 20G /dev/sda /dev/sda device - - - 20G - 复制代码
把qcow2格式的磁盘镜像转成raw
qemu-img convert -f qcow2 -O raw Windows10-imange.qcow2 Windows10-imange.raw 复制代码
利用truncate创建一个新的文件,大小比centos2.raw大5G
truncate -r Windows10-imange.raw Windows10-imange30g.raw truncate -s +5G Windows10-imange30g.raw 复制代码
开始调整
virt-resize --expand /dev/sda2 Windows10-imange.raw Windows10-imange30g.raw virt-resize --expand /dev/sda2 Windows10-imange.raw Windows10-imange30g.raw 复制代码
调整完后转回qcow2格式
qemu-img convert -f raw -O qcow2 Windows10-imange30g.raw Windows10-imange30g.qcow2 复制代码
系统管理中c盘增大了,但资源管理器中c盘没变。 登录windows 10 系统;
Cmd:>chkdsk c:/f 复制代码
转换文件格式 ---Convert disk image to disk image
virt-v2v -i disk disk.img -o local -os /var/tmp 复制代码
结尾
最后分享我制作的qcow2的windows 10 镜像。如果需要上文中的virtio-win-*.iso文件或我已经制作好的windows 10系统镜像,请联系我获取!