学习怎么创建个基于已经安装好的 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 –y 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/{p_w_picpaths,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 上来完成安装了。这里就不做介绍了!!