下載CentOS ISO鏡像文件
在CentOS mirrors 找到合適的站點下載 CentOS-7-x86_64-DVD-1611.iso ,這里我選擇網易鏡像進行下載:
# wget http://mirrors.163.com/centos/7.3.1611/isos/x86_64/CentOS-7-x86_64-DVD-1611.iso
開始安裝過程
安裝過程可以使用 virt-manager 或者 virt-install 命令,如果用 virt-install :
# qemu-img create -f qcow2 /tmp/CentOS-7-x86_64-v1.qcow2 10G
# virt-install --virt-type kvm --name centos7 --ram 1024 \
--disk /tmp/CentOS-7-x86_64-v1.qcow2,format=qcow2 \
--network=bridge:br0 \
--graphics vnc,listen=0.0.0.0 --noautoconsole \
--os-type=linux --os-variant=centos7.0 \
--location=/storage/isos/CentOS-7-x86_64-DVD-1611.iso
通過 --network=bridge:br0 指定網絡類型和接口。
逐步安裝
根據(jù)提示,逐步安裝。

配置網絡信息,確保能正確訪問互聯(lián)網,軟件選擇最小化安裝。

接著設置root 管理員密碼,普通用戶這里不用創(chuàng)建,最后等待安裝完成并重啟系統(tǒng)。
執(zhí)行virsh dumpxml matching-name 可查看對應信息:
# virsh dumpxml centos7
<domain type='kvm'>
<name>centos7</name>
...
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw'/>
<target dev='hda' bus='ide'/>
<readonly/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
...
</domain>
在主機運行virsh命令彈出磁盤,再重啟host。
# virsh attach-disk --type cdrom --mode readonly centos7 "" hda
Disk attached successfully
# virsh reboot centos7
Domain centos7 is being rebooted
安裝ACPI服務
以root身份登錄guest主機,安裝并設置開機啟用acpid服務:
# yum install acpid
# systemctl enable acpid
配置元數(shù)據(jù)
一般在實例創(chuàng)建最后一步時,必須要獲取到用戶的公鑰信息,還有用戶的數(shù)據(jù)和腳本,如何獲取到? 此時就需要guest host 安裝cloud-init程序包來獲取這些信息:
# yum install cloud-init
在基于CentOS的虛擬機上,公鑰信息會被存放在centos帳號下,也就是可以使用centos作為用戶名,通過密鑰遠程登錄。通過編輯/etc/cloud/cloud.cfg文件可以使用其他的用戶帳號名稱。
安裝cloud-utils-growpart 以允許調整分區(qū)大小
# yum install cloud-utils-growpart
禁用zeroconf 路由
對于訪問元數(shù)據(jù)服務的實例,必須禁用默認的zeroconf路由:
# echo "NOZEROCONF=yes" >> /etc/sysconfig/network
另外,還需要手動修改下網卡的配置文件:
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="dhcp"
ONBOOT="yes"
TYPE="Ethernet"
NM_CONTROLLED="no"
再自定義設置一些初始化的運行環(huán)境。
配置控制臺
為了讓 nova console-log 命令在CentOS 7能正常執(zhí)行,還需修改一下配置:
-
編輯
/etc/default/grub,在GRUB_CMDLINE_LINUX選項,刪除rhgb quiet,再添加console=tty0 console=ttyS0,115200n8。
例如:# cat /etc/default/grub GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="crashkernel=auto console=tty0 console=ttyS0,115200n8" GRUB_DISABLE_RECOVERY="true" -
運行下面命令進行修改保存:
# grub2-mkconfig -o /boot/grub2/grub.cfg
關閉實例
在實例內部,以root身份關閉實例:
# poweroff

清除MAC地址
在實例運行中,操作系統(tǒng)會將虛擬以太網卡的MAC地址記錄在/etc/sysconfig/network-scripts/ifcfg-eth0等位置。但是,每次使用鏡像啟動新實例時,虛擬以太網卡將會有不同的MAC地址,因此必須從配置文件中刪除該信息。
可以用virt-sysprep 程序,完成各種清理任務,如刪除MAC地址引用:
# virt-sysprep -d centos7
如果沒有virt-sysprep 這個命令,需要手動安裝:
# yum install libguestfs-tools
取消定義libvirt域
# virsh undefine centos7
Domain centos7 has been undefined
壓縮鏡像
# virt-sparsify --compress /tmp/CentOS-7.3-x86_64-Cloud.qcow2 CentOS-7.3-x86_64-Cloud.qcow2
至此,可以將鏡像上傳至 Image service 使用。
【參考】:
https://docs.openstack.org/image-guide/centos-image.html