为OpenStack制作CentOS镜像的一种方法

UbuntuFedora都有官方的系统镜像,偏偏CentOS没有,网上能找到一些也都不甚靠谱,加之在我们自己的项目中有一些需要自己定制的东西,所以还是自己做镜像比较合适。
为OpenStack制作CentOS系统镜像,官方的在线文档以及网上很多资料中给出了一种方法,即利用virt-install或者kvm创建虚拟机之后通过vnc安装系统、配置系统参数,最后上传到OpenStack中,参考:
[1]

系统参数配置参考:
[3]
[4]

但是以上的这类方法对制作镜像的环境有一定要求,比如硬件必须支持VT技术,要安装一些软件,配置虚拟网卡等等,即使准备好了,也难免会遇上磁盘或者网络或者vnc等种种让新手无从下手的问题。
下面是另外一种为OpenStack制作CentOS镜像的方法,参考:
https://github.com/globocom/references/wiki/Building-a-CentOS-6.2-image-for-openstack[5]

制作过程:

1. 制作一个本地网络的软件源
这种制作镜像的方法需要从CentOS软件源中安装系统的内核和必要的软件,[5]中从美国的一个公共CentOS软件源安装,以天朝的网速半天也做不出一个镜像,可以在本地做一个源,不但做镜像可以用,以后安装和更新软件也可以用。制作方法参考:

本文中本地base和updates软件源的地址分别是:

2. 创建镜像
后续的所有操作都在root用户下做。
首先创建一个空的块文件并给文件创建ext4文件系统,这就是镜像文件了。bs和count相乘是文件大小,根据需要自己设,这里是2.5GB,如果只安装最小系统,1GB就绰绰有余了:

mkdir ~/centos-image
dd if=/dev/zero of=~/centos-image/centos.img bs=8192 count=327680
mkfs.ext4 ~/centos-image/centos.img

将块文件挂载到/mnt/centos-image目录下,初始化rpm数据库:

mkdir /mnt/centos-image
mount -o loop ~/centos-image/centos.img /mnt/centos-image
mkdir -p /mnt/centos-image/var/lib/rpm
rpm --rebuilddb --root=/mnt/centos-image
rpm -i --root=/mnt/centos-image --nodeps

最后的那个包名centos-release-6-4.el6.centos.10.x86_64.rpm和现在用的centos系统版本(6.4)是对应的,装其他版本系统时需要使用相应的软件源并改成对应的文件名。

往镜像文件中安装操作系统(下文称镜像系统):

yum --installroot=/mnt/centos-image install -y rpm-build yum initscripts kernel passwd dhclient openssh-clients openssh-server vim sudo Java-1.6.0-openjdk* java-1.7.0-openjdk*

这里除了最基本的系统内核和软件外,还安装了vim、sudo、jdk1.6和jdk1.7,需要安装其他包的话,列在后面即可。

3. 配置镜像系统参数

首先修改文件系统配置文件:

vi /mnt/centos-image/etc/fstab

写入如下的内容:

/dev/vda      /      ext4  defaults                    0      0

/dev/vdb      /opt  ext4  defaults                    0      2

修改默认hostname:

vi /mnt/centos-image/etc/sysconfig/network

写入如下内容:

NETWORKING=yes

HOSTNAME=ruc-xcloud

如果需要dns,可以加上dns配置:

vi /mnt/centos-image/etc/resolv.conf

写入dns服务器的地址,以google提供的免费dns为例,多个dns一行一个:

nameserver 8.8.8.8

修改eth0的配置文件,去掉UUID和MAC地址:

vi /mnt/centos-image/etc/sysconfig/network-scripts/ifcfg-eth0

配置后内容如下:

DEVICE=eth0
BOOTPROTO=dhcp
NM_CONTROLLED=yes
ONBOOT=yes
TYPE=Ethernet
DNS1=8.8.8.8

后面的DNS1和之前配置的dns对应,如果有多个dns,依次为DNS2、DNS3……

将软件源改到刚才搭建的本地软件源:

rm -rf /mnt/centos-image/etc/yum.repos.d/*
vi /mnt/centos-image/etc/yum.repos.d/CentOS-Base.repo

写入内容如下:

[base]
name=CentOS-$releasever - Base
baseurl=http://10.77.50.9/yum/centos-6.4
gpgcheck=1
gpgkey=http://10.77.50.9/yum/centos-6.4/RPM-GPG-KEY-CentOS-6

#released updates
[updates]
name=CentOS-$releasever - Updates
baseurl=http://10.77.50.9/yum/centos-6.4-updates
gpgcheck=0
enabled = 1

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/11736e28aca3832df04a5b43c504c260.html