学习怎么创建个基于已经安装好的
linux
的
iso
安装盘,实现完全的自动化安装。
首先
linux
安装
Kickstart
根据脚本进行安装的方法;支持所有
Anaconda
特性;安装时自动生成
/root/anaconda-ks.cfg.
在我们正常安装后的
linux
的
root
家目录下都会有
anaconda-ks.cfg
和
install.log
这两个文件分别定义了
anaconda-ks.cfg
分为三部分组成,首先是
1
命令:,配置系统和安装方式;
2
,安装软件包
%package
部分:为安装选择软件包和组以
@
开头的定义是软件包组下面定义的是所安装的软件包;
3
,
scripts sections
脚本部分,主要定义了安装前的
%pre
所要执行的脚本但是大多命令可能会不支持的,和
%post
部分定义在安装完成后所要执行的脚本这里的命令一般情况下都支持的。
Linux
的安装可以通过网络安装(
ftp,http,nfs
)和光盘也可以通过
.
这里只说下怎么制作个通过本地安装的
iso
镜像
首先我们也可以自己制作个
kickstart
自动安装文件或者可以使用本地主机上
anaconda-ks.cfg
,要是自己制作饿
kickstart
文件就需要安装
system-config-kickstart
软件包命令:
yum �Cy install system-config-kickstart
安装完成后就可以运行
install system-config-kickstart
命令出现个图形的话的窗口这时我们就可以自己配置个完成自动化安装的文件了,可以按需要选择。完成后会自动生成个
anaconda-ks.cfg
文件,然后我们就要制作个引导程序了可以从我们的原光盘里拷贝出来一份。这里有个小脚本制作一个依靠本地已有的
anaconda-ks.cfg
文件和安装过的软件包来封装个
iso
镜像:
#!/bin/bash
export DDIR="/data/myiso"
export SDIR="/media/cdrom"
#
这个
MYRPM
函数定义的是提取该系统中安装过的软件包和从光盘拷贝所需要
#
的软件包和创建个软件包的关系
MYRPM(){
echo "creating the packs,please waiting....."
FILENAME='/tmp/packlist.txt'
#
这一步是提取安装系统中所需要的软件包,
grep "^Installing" /root/install.log |cut -d" " -f2 >/tmp/packlist.txt && sed -i -e 's/\(.*\)/\1.rpm/g' -e 's/^[1-9]\{1,\}:\(.*\)/\1/g' /tmp/packlist.txt
mkdir -p $DDIR/{Server,VT,Cluster,ClusterStorage} 2>> /tmp/error.txt
[ $? -eq 0 ]&&echo "Create is ok"
#
这个循环是把获取到的软件包从光盘上拷到相对应的目录中
while read line ;do
FILE=`find $SDIR -name $line`
MYPATH=`find $SDIR -name $line |cut -d"/" -f4`
cp $FILE $DDIR/$MYPATH/ 2>/dev/null
done <$FILENAME
[ $? -eq 0 ] && echo -e "The RPM is \033[1mok\033[0m." ||echo "PACK error!"
#
软件包拷贝完成后我们还需要一些而外东西,例如引导项,这些也是需要从光
#
盘上拷贝的如下:
cp -r $SDIR/{images,isolinux,.treeinfo,.discinfo,EULA,GPL,TRANS.TBL,eula.en_US} $DDIR
#
这一步是做软件包关联的,先判断是否存在做关联的命令然后开始做关联
[ -e /usr/bin/createrepo ] || rpm -i $DDIR/Server/createrepo-*.noarch.rpm &> /dev/null
for REPODIR in Server VT Cluster ClusterStorage;do
createrepo -g $SDIR/$REPODIR/repodata/comps-rhel5-*.xml $DDIR/$REPODIR
done
find $DDIR/isolinux -name "*" -exec chmod u+w {} \;
}
#KS
函数定义的是拷贝自动化的文件并作以修改,最后做个
iso
镜像
KS(){
#
拷贝系统上的
anaconda-ks.cfg
文件并作修改的
cp /root/anaconda-ks.cfg $DDIR/ks.cfg
sed -i -e '/^# not g/,/^%packages/s/^#\([a-z].*\)/\1/g' -e 's/^url.*$/cdrom/g' -e '/^%packages/i \reboot' -e 's/\(^clearpart.*\)/\1 --initlabel/g' $DDIR/ks.cfg
[ -d /etc/yum.repos.d ] ||mkdir /etc/yum.repos.d >/dev/null
cd $DDIR/isolinux
sed -i 's/\(^default linux\).*/\1 ks=cdrom:\/ks.cfg/g' isolinux.cfg
echo -e "The KS is \033[2mok\033[0m."
cd /data
#
这里是对上面的完成后做封装成
iso
镜像的
mkisofs -o mylinux.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -V -J -T myiso/ &>/dev/null
}
MYRPM
KS
完成以上的步骤后我们的镜像系统只有六七百兆比起原来的安装包小了许多,
如果我们有一个
ftp
服务器并且有
yum
库的话,我们只用封装个引导项和完成自动化的文件就可以从
ftp
上来完成安装了。这里就不做介绍了!!