文章总览:制作Centos7自动安装镜像
通过kickstart软件,我们已经有了一个初始化的ks.cfg脚本了。下面要做的就是在这个脚本上添加上我们要加入的内容。
在此处做一些背景说明。虽然我前面的文章只写了应用rmp包的制作,但是实际上我制作了两个rmp包,一个是应用包。另外一个是一些系统配置文件,包含my.cnf rc.local profile
这三个文件放在一个叫做DeviceController-cfg-1.0.0.rpm 的文件中,而这三个文件将会被安装在/opt/wedo/cfg/tmp 目录下,然后通过复制的方式,将他们放在真正的系统目录下。至于为什么采用复制,而不直接安装到他们真正的位置,是因为rc.local 和 profile这样的文件直接安装的话,会出现文件冲突的错误,所以换了一种方法。 好了,背景描述完毕。首先看一下我们通过软件自动生成的ks.cfg文件:
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard 'us'
# Root password
rootpw --iscrypted $1$5p2JcWPk$SDMLkZJoSSKMwHSNwAvHf.
# System language
lang zh_CN
# System authorization information
auth --useshadow --passalgo=sha512
# Use CDROM installation media
cdrom
# Use text mode install
text
firstboot --disable
# SELinux configuration
selinux --disabled
# Firewall configuration
firewall --disabled
# Network information
network --bootproto=static --device=em1 --gateway=192.168.0.1 --ip=192.168.0.2 --nameserver=192.168.0.1 --netmask=255.255.255.0
# Reboot after installation
reboot
# System timezone
timezone Asia/Shanghai
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all
# Disk partitioning information
part /boot/efi --fstype="vfat" --size=200
part /boot --fstype="ext4" --size 102400
part swap --fstype="swap" --size=16384
part / --fstype="ext4" --size=92160
part /home --fstype="ext4" --size=102400
part /var/log --fstype="ext4" --size=204800
part /var/data/mysql --fstype="ext4" --size=204800
part /var/data/others --fstype="ext4" --grow --size=1
%packages
%end
%post
%end
与之前看到的ks.cfg文件相比,里面多了分区的信息, 上述partitioning部分,这部分很好懂,自己手工编辑也行。不过我是用工具生成的,再次提一句,如果你打算用uefi的方式安装,一定要增加一个/boot/efi分区。
好了,下面我们进入正题:
1.Packages 安装包部分
在这一段,我们需要输入我们要安装的组件,包括系统组件和我们自己制作的两个RPM安装包。 关于系统组件,一个稳妥的办法是,从一个已经安装好的机子上或者是验证机,或者是测试机上面复制出安装列表来,而不是用kickstart的界面选择。反正,我们要安装之前,总是需要装一台测试机进行测试的,就用那个测试机做模板就好了,或者干脆就在测试机上制作这个自动化镜像。 千万注意的是:无论怎么做,按照列表来源所在的那台服务器的操作系统版本和你要制作的镜像的操作系统版本必须一致。否则可能出现错误。
好了,下面是具体的做法。
登录测试机或者模板服务器,进入/root 目录。 ls一下, 可以看到有一个叫做anaconda-ks.cfg的文件。 其实,这个文件就是你当初安装操作系统之后形成的记录,里面有我们需要的信息。他就是一个ks.cfg文件(这也是为啥我们前面做ks文件,要对root密码加密的原因。如果不加密,你又没改过root密码的话,从这个文件里面是可以看到的)。
打开这个anaconda-ks.cfg文件,找到%packages 到%end 之间的那段内容,复制出来。例如:
@^graphical-server-environment
@base
@core
@desktop-debugging
@dial-up
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@hardware-monitoring
@input-methods
@internet-browser
@multimedia
@print-client
@x11
chrony
kexec-tools
这样我们就有了一个标准的安装组件的列表了。 注意: 这里的列表只含你在装操作系统的时候所安装的组件。装完操作系统之后再装的,不在里面。
然后,我们在这个列表上,加上我们自定义的安装组件, 起名字叫做deviceController, 请务必记住这个名字,在下一篇文章中我们要针对这个进行配置。 因为你在这里只是告诉操作系统我需要装deviceContoller这个组件了,但是这个组件里面到底有什么样的东西? 操作系统还不知道,需要更多的工作。
完善后的列表如下:
@^graphical-server-environment
@base
@core
@desktop-debugging
@dial-up
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@hardware-monitoring
@input-methods
@internet-browser
@multimedia
@print-client
@x11
@DeviceController
chrony
kexec-tools
2. 加入POST脚本
我们计划在安装之后,分别创建两个用户,用于查看日志和访问数据, 另外还需要初始化几个路径,所以我们在%post段加入如下的脚本
%post
useradd logUser
echo logUserPass | passwd --stdin logUser
useradd dataUser
echo dataUserPass | passwd --stdin dataUser
mkdir -p /home/data/others/camera
mkdir -p /home/data/others/security
mkdir -p /home/data/others/history
\cp /opt/wedo/cfg/tmp/profile /etc/profile
\cp /opt/wedo/cfg/tmp/rc.local /etc/rc.d/rc.local
\cp /opt/wedo/cfg/tmp/my.cnf /etc/my.cnf
chmod +x /etc/rc.d/rc.local
%end
这段命令没有什么可说的了,大家应该都很熟悉了。命令中的\cp 是为了在复制的时候系统不会提示文件已存在是否覆盖?
其中需要稍微提一点的是这里有个小坑, 在这个脚本中 为用户 设定的密码,即 logUserPass 这一段,不能含有特殊字符,只能是字母和数字,否则可能会出错。这个倒不是什么大问题,大家把密码起的长一些就好了。
好了,ks.cfg就搞定了。下一篇文章,我们会开始最后一步,制作真正的镜像 iso文件。而本系列最大坑也即将现身。