一:准备工作
1、环境检查,看看CPU支不支持硬件虚拟
[root@centos-s-6vcpu-16gb-nyc1-01 ~]# egrep -c '(vmx|svm)' /proc/cpuinfo 6 [root@centos-s-6vcpu-16gb-nyc1-01 ~]#
2、安装kvm相关的包
[root@centos-s-6vcpu-16gb-nyc1-01 ~]# yum update -y [root@centos-s-6vcpu-16gb-nyc1-01 ~]# yum install qemu-kvm qemu-img virt-manager libvirt \ libvirt-python libvirt-client virt-install virt-viewer bridge-utils libguestfs-tools -y
3、启动libvirtd
[root@centos-s-6vcpu-16gb-nyc1-01 ~]# systemctl start libvirtd && systemctl enable libvirtd
4、检查KVM模块是否被加载
[root@centos-s-6vcpu-16gb-nyc1-01 ~]# lsmod | grep kvm kvm_intel 174841 0 kvm 578558 1 kvm_intel irqbypass 13503 1 kvm [root@centos-s-6vcpu-16gb-nyc1-01 ~]#
5、如果你和我一样是最小化安装CentOS 7,那么virt-manger将无法启动,所以需要安装x-window软件包。
[root@centos-s-6vcpu-16gb-nyc1-01 ~]# yum install "@X Window System" xorg-x11-xauth xorg-x11-fonts-* xorg-x11-utils -y
6、检查现有网络的状态,如果看到一个名为default状态为active的网络就是正常的
[root@centos-s-6vcpu-16gb-nyc1-01 ~]# virsh net-list --all Name State Autostart Persistent ---------------------------------------------------------- default active yes yes [root@centos-s-6vcpu-16gb-nyc1-01 ~]#
7、下载ISO镜像文件
[root@centos-s-6vcpu-16gb-nyc1-01 ~]# mkdir -p /data && cd /data [root@centos-s-6vcpu-16gb-nyc1-01 data]# axel -an 20 http://mirror.cc.columbia.edu/pub/linux/centos/7.5.1804/isos/x86_64/CentOS-7-x86_64-Everything-1804.iso -o CentOS-7.5.1804-x86_64-Everything.iso [root@centos-s-6vcpu-16gb-nyc1-01 data]# axel -an 20 http://mirrors.dtops.cc/iso2/Windows/cn_windows_server_2016_vl_feb_2018_x64_dvd_11636695.iso
8、使用命令创建一个KVM虚拟机
[root@centos-s-6vcpu-16gb-nyc1-01 data]# qemu-img info CentOS-7.5.1804-x86_64-Everything.iso image: CentOS-7.5.1804-x86_64-Everything.iso file format: raw virtual size: 8.8G (9397338112 bytes) disk size: 8.8G [root@centos-s-6vcpu-16gb-nyc1-01 data]# qemu-img create -f qcow2 centos.qcow2 40G Formatting 'centos.qcow2', fmt=qcow2 size=42949672960 encryption=off cluster_size=65536 lazy_refcounts=off [root@centos-s-6vcpu-16gb-nyc1-01 data]# NAME=centos && ROOT_DISK=centos.qcow2 && CDROM=`pwd`/CentOS-7.5.1804-x86_64-Everything.iso [root@centos-s-6vcpu-16gb-nyc1-01 data]# virt-install \ --virt-type kvm \ --name $NAME \ --ram 1024 \ --disk $ROOT_DISK,format=qcow2 \ --network network=default \ --graphics vnc,listen=0.0.0.0 \ --noautoconsole \ --os-type=linux \ --os-variant=rhel7 \ --cdrom=$CDROM Starting install... Domain installation still in progress. You can reconnect to the console to complete the installation process. [root@centos-s-6vcpu-16gb-nyc1-01 data]#
如果你网络很好,也可以采取在线安装的方式,这就不用单独下载系统镜像了
[root@centos-s-6vcpu-16gb-nyc1-01 data]# wget https://raw.githubusercontent.com/xiaoyawl/centos_init/master/CentOS-7-kickstart.cfg [root@centos-s-6vcpu-16gb-nyc1-01 data]# qemu-img create -f qcow2 centos7-test.qcow2 40G Formatting 'centos7-test.qcow2', fmt=qcow2 size=42949672960 encryption=off cluster_size=65536 lazy_refcounts=off [root@centos-s-6vcpu-16gb-nyc1-01 data]# NAME=centos7 && ROOT_DISK=centos7-test.qcow2 [root@centos-s-6vcpu-16gb-nyc1-01 data]# virt-install --virt-type kvm --name $NAME \ --memory 2048 \ --vcpus 2 \ --disk $ROOT_DISK,format=qcow2 \ --network network=default \ --os-type=linux \ --os-variant=rhel7 \ --initrd-inject /data/CentOS-7-kickstart.cfg \ --graphics vnc,listen=0.0.0.0 \ --noautoconsole \ --console pty,target_type=serial \ --location=http://ftp.sakura.ad.jp/pub/linux/centos/7/os/x86_64/ \ --extra-args="console=tty0 console=ttyS0,115200n8" \ --extra-args="ks=https://raw.githubusercontent.com/xiaoyawl/centos_init/master/CentOS-7-kickstart.cfg" Starting install... Retrieving file vmlinuz... | 5.9 MB 00:00:00 Retrieving file initrd.img... | 50 MB 00:00:01 Domain installation still in progress. You can reconnect to the console to complete the installation process. [root@centos-s-6vcpu-16gb-nyc1-01 data]#
---extra-args "ks=http://www.dwhd.org/script/kickstart/CentOS_7_x86_64_centos.cfg ksdevice=eth0 ip=10.10.21.76 netmask=255.255.255.240 dns=10.10.21.1 gateway=10.10.21.100"
为了进度,我这边同时开了两个kvm,下面是Windows 2016镜像的制作
[root@centos-s-6vcpu-16gb-nyc1-01 iso]# qemu-img info cn_windows_server_2016_vl_feb_2018_x64_dvd_11636695.iso image: cn_windows_server_2016_vl_feb_2018_x64_dvd_11636695.iso file format: raw virtual size: 5.9G (6302720000 bytes) disk size: 5.9G
[root@centos-s-6vcpu-16gb-nyc1-01 data]# mkdir virtio [root@centos-s-6vcpu-16gb-nyc1-01 data]# cd virtio [root@centos-s-6vcpu-16gb-nyc1-01 virtio]# wget -c 'https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso' [root@centos-s-6vcpu-16gb-nyc1-01 virtio]# wget -c https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win_amd64.vfd [root@centos-s-6vcpu-16gb-nyc1-01 virtio]# cd ..
[root@centos-s-6vcpu-16gb-nyc1-01 data]# 下面是我的目录结构 [root@centos-s-6vcpu-16gb-nyc1-01 data]# tree /data/ /data/ ├── centos7.5.1804-20180831.qcow2 ├── CentOS-7.5.1804-x86_64-Cloud-20180831.qcow2 ├── iso │ ├── CentOS-7.5.1804-x86_64-Everything.iso │ └── cn_windows_server_2016_vl_feb_2018_x64_dvd_11636695.iso ├── virtio │ ├── virtio-win_amd64.vfd │ └── virtio-win.iso └── windows2016.qcow2 2 directories, 7 files [root@centos-s-6vcpu-16gb-nyc1-01 data]#
[root@centos-s-6vcpu-16gb-nyc1-01 data]# qemu-img create -f qcow2 windows2016.qcow2 40G Formatting 'windows2016.qcow2', fmt=qcow2 size=42949672960 encryption=off cluster_size=65536 lazy_refcounts=off [root@centos-s-6vcpu-16gb-nyc1-01 data]# NAME=windows2016 && ROOT_DISK=windows2016.qcow2 && \ CDROM1=`pwd`/virtio/virtio-win.iso && \ CDROM2=`pwd`/iso/cn_windows_server_2016_vl_feb_2018_x64_dvd_11636695.iso [root@centos-s-6vcpu-16gb-nyc1-01 data]# virt-install \ --name $NAME \ --connect qemu:///system \ --arch=x86_64 \ --ram 8192 \ --vcpus 4 \ --cpu host \ --video cirrus \ --network network=default,model=virtio \ --features hyperv_relaxed=on,hyperv_spinlocks=on,hyperv_vapic=on \ --graphics vnc,listen=0.0.0.0 \ --noautoconsole \ --os-type windows \ --os-variant win2k16 \ --disk $ROOT_DISK,format=qcow2,device=disk,bus=virtio \ --disk path=$CDROM2,device=cdrom \ --cdrom=$CDROM1 Starting install... Domain installation still in progress. You can reconnect to the console to complete the installation process. [root@centos-s-6vcpu-16gb-nyc1-01 data]# [root@centos-s-6vcpu-16gb-nyc1-01 data]# virsh list --all Id Name State ---------------------------------------------------- 1 centos running 2 windows2016 running [root@centos-s-6vcpu-16gb-nyc1-01 data]#
9、连接KVM节点
由于我这里是远程连接的,所有我就直接使用了VNC连接,如果要是本地的话,还可以使用virt-manager、virt-viewer连接
10、为了方便等下进系统操作,我们这边来给新建的虚拟机做下远程管理端口映射
[root@centos-s-6vcpu-16gb-nyc1-01 data]# yum install -y git kernel-devel gcc gcc-c++ make && \ git clone https://github.com/kklis/proxy /usr/local/bin/proxy && \ cd /usr/local/bin/proxy && make && cd - echo 'export PATH="/usr/local/bin/proxy:$PATH"' > /etc/profile.d/proxy.sh && \ source /etc/profile.d/proxy.sh [root@centos-s-6vcpu-16gb-nyc1-01 data]# virsh list --all Id Name State ---------------------------------------------------- 10 windows2016 running - centos shut off [root@centos-s-6vcpu-16gb-nyc1-01 data]# virsh domifaddr 10 Name MAC address Protocol Address ------------------------------------------------------------------------------- vnet0 52:54:00:fe:e8:b7 ipv4 192.168.122.5/24 [root@centos-s-6vcpu-16gb-nyc1-01 data]# proxy -h proxy: option requires an argument -- 'h' Syntax: proxy [-b bind_address] -l local_port -h remote_host -p remote_port [-i "input parser"] [-o "output parser"] [-f (stay in foreground)] [-s (use syslog)] [root@centos-s-6vcpu-16gb-nyc1-01 data]# proxy -l 3389 -h 192.168.122.5 -p 3389 [root@centos-s-6vcpu-16gb-nyc1-01 data]# ss -tnl | grep 3389 LISTEN 0 20 *:3389 *:* [root@centos-s-6vcpu-16gb-nyc1-01 data]# ip addr s eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 5e:30:bc:a7:cb:2d brd ff:ff:ff:ff:ff:ff inet 142.93.58.27/20 brd 142.93.63.255 scope global eth0 valid_lft forever preferred_lft forever inet 10.10.0.5/16 brd 10.10.255.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::5c30:bcff:fea7:cb2d/64 scope link valid_lft forever preferred_lft forever [root@centos-s-6vcpu-16gb-nyc1-01 data]#
[root@centos-s-6vcpu-16gb-nyc1-01 data]# virsh list --all Id Name State ---------------------------------------------------- 10 windows2016 running 11 centos running [root@centos-s-6vcpu-16gb-nyc1-01 data]# virsh domifaddr 11 Name MAC address Protocol Address ------------------------------------------------------------------------------- vnet1 52:54:00:13:2a:ac ipv4 192.168.122.244/24 [root@centos-s-6vcpu-16gb-nyc1-01 data]# proxy -l 22992 -h 192.168.122.244 -p 22 [root@centos-s-6vcpu-16gb-nyc1-01 data]# ss -tnl | grep 22992 LISTEN 0 20 *:22992 *:* [root@centos-s-6vcpu-16gb-nyc1-01 data]# ip addr s eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 5e:30:bc:a7:cb:2d brd ff:ff:ff:ff:ff:ff inet 142.93.58.27/20 brd 142.93.63.255 scope global eth0 valid_lft forever preferred_lft forever inet 10.10.0.5/16 brd 10.10.255.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::5c30:bcff:fea7:cb2d/64 scope link valid_lft forever preferred_lft forever [root@centos-s-6vcpu-16gb-nyc1-01 data]#
11、将镜像虚拟机的光驱弹出
[root@centos-s-6vcpu-16gb-nyc1-01 data]# virsh list --all Id Name State ---------------------------------------------------- 10 windows2016 running 11 centos running 14 centos7 running [root@centos-s-6vcpu-16gb-nyc1-01 data]# virsh dumpxml centos | grep -I10 cdrom <devices> <emulator>/usr/libexec/qemu-kvm</emulator> <disk type='file' device='disk'> <driver name='qemu' type='qcow2'/> <source file='/data/centos.qcow2'/> <backingStore/> <target dev='vda' bus='virtio'/> <alias name='virtio-disk0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </disk> <disk type='file' device='cdrom'> <target dev='hda' bus='ide'/> <readonly/> <alias name='ide0-0-0'/> <address type='drive' controller='0' bus='0' target='0' unit='0'/> </disk> <controller type='usb' index='0' model='ich9-ehci1'> <alias name='usb'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x7'/> </controller> <controller type='usb' index='0' model='ich9-uhci1'> [root@centos-s-6vcpu-16gb-nyc1-01 data]#
通过上面的查询我们得知镜像挂载在了hda上了,下面弹出镜像
[root@centos-s-6vcpu-16gb-nyc1-01 data]# virsh attach-disk --type cdrom --mode readonly centos "" hda Disk attached successfully [root@centos-s-6vcpu-16gb-nyc1-01 data]#
12、所有的操作之前给虚拟机做个快照,原因大家懂的
[root@centos-s-6vcpu-16gb-nyc1-01 data]# virsh snapshot-create-as --domain centos --name "20180828_131612" --description "开始制作镜像-新系统-20180828_131632" Domain snapshot 20180828_131612 created [root@centos-s-6vcpu-16gb-nyc1-01 data]# virsh snapshot-list centos Name Creation Time State ------------------------------------------------------------ 20180828_131612 2018-08-28 05:17:37 +0000 running [root@centos-s-6vcpu-16gb-nyc1-01 data]#
二:开始制作CentOS镜像
1、给系统安装acpid,用于电源状态同步,不安装会出现无法关机重启的现象
[root@DT_Node-192_168_122_244 ~]# yum install acpid -y [root@DT_Node-192_168_122_244 ~]# systemctl enable acpid.service
2、配置元数据
一般在实例创建最后一步时,必须要获取到用户的公钥信息,还有用户的数据和脚本,如何获取到? 此时就需要guest host 安装cloud-init程序包来获取这些信息:
[root@DT_Node-192_168_122_244 ~]# yum install cloud-init -y
在基于CentOS的虚拟机上,公钥信息会被存放在centos帐号下,也就是可以使用centos作为用户名,通过密钥远程登录。通过编辑/etc/cloud/cloud.cfg文件可以使用其他的用户帐号名称。
[root@DT_Node-192_168_122_244 ~]# sed -ri 's/^(disable_root: ).*/\10/' /etc/cloud/cloud.cfg #启用root用户 [root@DT_Node-192_168_122_244 ~]# sed -ri 's/^(ssh_pwauth: ).*/\11/' /etc/cloud/cloud.cfg #允许密码登录 [root@DT_Node-192_168_122_244 ~]# echo 'datasource_list: ["OpenStack"] datasource: OpenStack: metadata_urls: ["http://169.254.169.254"] max_wait: -1 timeout: 10 retries: 5' >> /etc/cloud/cloud.cfg [root@DT_Node-192_168_122_244 ~]#
3、安装cloud-utils-growpart 以允许调整分区大小
[root@DT_Node-192_168_122_244 ~]# yum install cloud-utils-growpart -y
4、禁用zeroconf 路由
对于访问元数据服务的实例,必须禁用默认的zeroconf路由:
[root@DT_Node-192_168_122_244 ~]# echo "NOZEROCONF=yes" >> /etc/sysconfig/network [root@DT_Node-192_168_122_244 ~]# head -2 /etc/sysconfig/network # Created by anaconda NOZEROCONF=yes [root@DT_Node-192_168_122_244 ~]#
5、修改网卡配置
[root@DT_Node-192_168_122_244 ~]# echo 'DEVICE="eth0" BOOTPROTO="dhcp" ONBOOT="yes" TYPE="Ethernet" NM_CONTROLLED="no"' > /etc/sysconfig/network [root@DT_Node-192_168_122_244 ~]# cat /etc/sysconfig/network DEVICE="eth0" BOOTPROTO="dhcp" ONBOOT="yes" TYPE="Ethernet" NM_CONTROLLED="no" [root@DT_Node-192_168_122_244 ~]#
6、配置控制台
[root@DT_Node-192_168_122_244 ~]# grep 'GRUB_CMDLINE_LINUX' /etc/default/grub GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=DTVG/root rd.lvm.lv=DTVG/swap rhgb quiet ipv6.disable=1" [root@DT_Node-192_168_122_244 ~]# sed -ri 's/ (rhgb|quiet)//g' /etc/default/grub [root@DT_Node-192_168_122_244 ~]# sed -ri 's/^(GRUB_CMDLINE_LINUX.*)"$/\1 console=tty0 console=ttyS0,115200n8"/' /etc/default/grub [root@DT_Node-192_168_122_244 ~]# sed -ri 's/(crashkernel=)auto/\1256M/' /etc/default/grub [root@DT_Node-192_168_122_244 ~]# grep 'GRUB_CMDLINE_LINUX' /etc/default/grub GRUB_CMDLINE_LINUX="crashkernel=256M ipv6.disable=1 console=tty0 console=ttyS0,115200n8" [root@DT_Node-192_168_122_244 ~]# grub2-mkconfig -o /boot/grub2/grub.cfg Generating grub configuration file ... Found linux image: /boot/vmlinuz-4.18.5-1.el7.elrepo.x86_64 Found initrd image: /boot/initramfs-4.18.5-1.el7.elrepo.x86_64.img Found linux image: /boot/vmlinuz-3.10.0-862.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-862.el7.x86_64.img Found linux image: /boot/vmlinuz-0-rescue-e3627439b8094c4b905ee28ed2e3ebeb Found initrd image: /boot/initramfs-0-rescue-e3627439b8094c4b905ee28ed2e3ebeb.img done [root@DT_Node-192_168_122_244 ~]# awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg CentOS Linux (4.18.5-1.el7.elrepo.x86_64) 7 (Core) CentOS Linux (3.10.0-862.el7.x86_64) 7 (Core) CentOS Linux (0-rescue-e3627439b8094c4b905ee28ed2e3ebeb) 7 (Core) [root@DT_Node-192_168_122_244 ~]# grub2-set-default 0 [root@DT_Node-192_168_122_244 ~]#
7、关机
[root@DT_Node-192_168_122_244 ~]# poweroff
8、回到宿主机上来给虚拟机做清除动作
在实例运行中,操作系统会将虚拟以太网卡的MAC地址记录在/etc/sysconfig/network-scripts/ifcfg-eth0等位置。但是,每次使用镜像启动新实例时,虚拟以太网卡将会有不同的MAC地址,因此必须从配置文件中删除该信息。
可以用virt-sysprep 程序,完成各种清理任务,如删除MAC地址引用:
[root@centos-s-6vcpu-16gb-nyc1-01 ~]# virt-sysprep -d centos [ 0.0] Examining the guest ... [ 24.6] Performing "abrt-data" ... [ 24.6] Performing "backup-files" ... [ 26.5] Performing "bash-history" ... [ 26.5] Performing "blkid-tab" ... [ 26.5] Performing "crash-data" ... [ 26.5] Performing "cron-spool" ... [ 26.5] Performing "dhcp-client-state" ... [ 26.5] Performing "dhcp-server-state" ... [ 26.5] Performing "dovecot-data" ... [ 26.5] Performing "logfiles" ... [ 26.6] Performing "machine-id" ... [ 26.6] Performing "mail-spool" ... [ 26.6] Performing "net-hostname" ... [ 26.6] Performing "net-hwaddr" ... [ 26.6] Performing "pacct-log" ... [ 26.6] Performing "package-manager-cache" ... [ 26.7] Performing "pam-data" ... [ 26.7] Performing "passwd-backups" ... [ 26.7] Performing "puppet-data-log" ... [ 26.7] Performing "rh-subscription-manager" ... [ 26.7] Performing "rhn-systemid" ... [ 26.7] Performing "rpm-db" ... [ 26.7] Performing "samba-db-log" ... [ 26.7] Performing "script" ... [ 26.7] Performing "smolt-uuid" ... [ 26.7] Performing "ssh-hostkeys" ... [ 26.7] Performing "ssh-userdir" ... [ 26.7] Performing "sssd-db-log" ... [ 26.7] Performing "tmp-files" ... [ 26.8] Performing "udev-persistent-net" ... [ 26.8] Performing "utmp" ... [ 26.8] Performing "yum-uuid" ... [ 26.8] Performing "customize" ... [ 26.8] Setting a random seed [ 26.8] Setting the machine ID in /etc/machine-id [ 27.2] Performing "lvm-uuids" ... [root@centos-s-6vcpu-16gb-nyc1-01 ~]#
9、删除虚拟机的嗯快照
[root@centos-s-6vcpu-16gb-nyc1-01 data]# virsh list --all Id Name State ---------------------------------------------------- 10 windows2016 running 14 centos7 running - centos shut off [root@centos-s-6vcpu-16gb-nyc1-01 data]# virsh snapshot-list centos Name Creation Time State ------------------------------------------------------------ 20180828_131612 2018-08-28 05:17:37 +0000 running [root@centos-s-6vcpu-16gb-nyc1-01 data]# virsh list --all Id Name State ---------------------------------------------------- 10 windows2016 running 14 centos7 running - centos shut off [root@centos-s-6vcpu-16gb-nyc1-01 data]# virsh snapshot-list centos --tree 20180828_131612 [root@centos-s-6vcpu-16gb-nyc1-01 data]# virsh snapshot-list centos Name Creation Time State ------------------------------------------------------------ 20180828_131612 2018-08-28 05:17:37 +0000 running [root@centos-s-6vcpu-16gb-nyc1-01 data]# virsh snapshot-info centos --snapshotname 20180828_131612 Name: 20180828_131612 Domain: centos Current: yes State: running Location: internal Parent: - Children: 0 Descendants: 0 Metadata: yes [root@centos-s-6vcpu-16gb-nyc1-01 data]# virsh snapshot-delete --domain centos --snapshotname 20180828_131612 Domain snapshot 20180828_131612 deleted [root@centos-s-6vcpu-16gb-nyc1-01 data]# virsh snapshot-list centos Name Creation Time State ------------------------------------------------------------ [root@centos-s-6vcpu-16gb-nyc1-01 data]#
10、取消定义libvirt域
[root@centos-s-6vcpu-16gb-nyc1-01 data]# virsh undefine centos Domain centos has been undefined [root@centos-s-6vcpu-16gb-nyc1-01 data]# virsh list --all Id Name State ---------------------------------------------------- 10 windows2016 running 14 centos7 running [root@centos-s-6vcpu-16gb-nyc1-01 data]#
11、压缩镜像
[root@centos-s-6vcpu-16gb-nyc1-01 data]# virt-sparsify --compress /data/centos.qcow2 CentOS-7.5.1804-x86_64-Cloud.qcow2 [ 0.1] Create overlay file in /tmp to protect source disk [ 0.2] Examine source disk [ 4.2] Fill free space in /dev/DTVG/root with zero 100% ⟦▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒⟧ 00:00 [ 67.4] Clearing Linux swap on /dev/DTVG/swap 100% ⟦▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒⟧ 00:00 [ 73.4] Fill free space in /dev/sda1 with zero [ 75.7] Copy to destination and make sparse [ 262.9] Sparsify operation completed with no errors. virt-sparsify: Before deleting the old disk, carefully check that the target disk boots and works correctly.
1、到了这时候会发现找不到系统盘,没关系,我们加载下驱动就可以了,然后继续安装系统。
2、进了系统之后会发现网卡驱动也没有,我们再来安装网卡驱动
3、安装Cloudbase-Init
下载地址:http://www.cloudbase.it/downloads/CloudbaseInitSetup_Stable_x64.msi
为了让Cloudbase-Init在系统启动时运行脚本,设置PowerShell执行策略解除限制。
Windows PowerShell 版权所有 (C) 2016 Microsoft Corporation。保留所有权利。 PS C:\Windows\system32> Set-ExecutionPolicy Unrestricted 执行策略更改 执行策略可帮助你防止执行不信任的脚本。更改执行策略可能会产生安全风险,如 http://go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies 帮助主题所述。是否要更改执行策略? [Y] 是(Y) [A] 全是(A) [N] 否(N) [L] 全否(L) [S] 暂停(S) [?] 帮助 (默认值为“N”): Y PS C:\Windows\system32>
双击安装
在configuration options窗口,修改以下设置:
•日志输出串口:COM1
当安装完成后,在Complete the Cloudbase-Init Setup Wizard 窗口,选择Run
Sysprep和Shutdown 复选框,然后点击Finish。
等待虚机关闭。
你的镜像已经准备好上传到镜像服务了
下面是我的CentOS 7 cloud-init的配置文件
users: - default disable_root: False ssh_pwauth: True chpasswd: list: | centos:YWEwZDg2N2NkZDI0ZTUyNDMz expire: false growpart: mode: growpart devices: [ '/dev/vda2' ] # use runcmd to grow the VG, LV and root filesystem, as cloud-init # doesn't handle LVM resizing natively runcmd: - [ sh, -c, echo "=========Resize root filesystem=========" ] - [ partx, --update, /dev/vda >/dev/null 2>&1 ] - [ sh, -c, New_partition_No=$(sgdisk -p /dev/vda|awk 'END {print ($1+1)}') ] - [ sh, -c, First_sector=$(sgdisk -p /dev/vda|awk 'END {print($3+1)}') ] - [ sh, -c, sgdisk -g -n $New_partition_No:$First_sector -t $New_partition_No:8e00 -c $New_partition_No:"LVM Data Partition" -p /dev/vda ] - [ partx, --update, /dev/vda >/dev/null 2>&1 ] - [ sh, -c, pvcreate /dev/vda3 ] - [ sh, -c, vgextend LBVG /dev/vda3 ] - [ sh, -c, pvresize /dev/vda2 ] - [ sh, -c, lvextend -l +90%FREE /dev/mapper/LBVG-root ] - [ sh, -c, xfs_growfs /dev/mapper/LBVG-root >/dev/null 2>&1 ] - [ sh, -c, echo "=========Resize root filesystem Finish=========" ] mount_default_fields: [~, ~, 'auto', 'defaults,nofail', '0', '2'] resize_rootfs_tmp: /dev ssh_deletekeys: 0 ssh_genkeytypes: ~ syslog_fix_perms: ~ cloud_init_modules: - migrator - bootcmd - write-files - growpart - resizefs - set_hostname - update_hostname - update_etc_hosts - rsyslog - users-groups - ssh cloud_config_modules: - mounts - locale - set-passwords - rh_subscription - yum-add-repo - package-update-upgrade-install - timezone - puppet - chef - salt-minion - mcollective - disable-ec2-metadata - runcmd cloud_final_modules: - rightscale_userdata - scripts-per-once - scripts-per-boot - scripts-per-instance - scripts-user - ssh-authkey-fingerprints - keys-to-console - phone-home - final-message - power-state-change system_info: default_user: name: centos lock_passwd: true gecos: Cloud User groups: [wheel, adm, systemd-journal] sudo: ["ALL=(ALL) NOPASSWD:ALL"] shell: /bin/bash distro: rhel paths: cloud_dir: /var/lib/cloud templates_dir: /etc/cloud/templates ssh_svcname: sshd # vim:syntax=yaml
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏