本文以CentOS 7.2为例
1、制作完成的ISO在安装过程中可以选择自定义的软件包
2、制作完成的ISO全自动安装,不需要在安装过程中进行任何选择操作
一 CentOS原版镜像下载链接
二 使用VMware Workstation 14 Pro安装CentOS 7.2原版系统
安装过程:https://blog.csdn.net/guo_ridgepole/article/details/78973763
三 制作ISO过程操作记录
1 CentOS虚拟机下挂载原版镜像
原文链接:https://blog.csdn.net/u013943420/article/details/71875489
1) 查看光盘是否已挂载
ls -l /dev/cdrom |grep cd
2) 将ISO所在的/dev/cdrom挂载到/media
mount /dev/cdrom /media
2 安装制作发行版的工具
yum -y install createrepo mkisofs isomd5sum rsync
3 同步光盘文件到制作ISO的目录
#同步/media下的文件到/ISO路径下,除了Packages和repodata文件夹
/usr/bin/rsync -a --exclude=Packages/ --exclude=repodata/ /media/ /ISO/
# 在/ISO/文件夹下新建Packages和repodata文件夹
mkdir -p /ISO/{Packages,repodata}
4 拷贝当前系统已安装的软件包到/ISO/Packages目录下(最好还是拷贝全量的原Packages下的安装包,或者是yum安装过后再生成install.log否则依赖包会不完整)
1) 生成install.log
rpm -qa >> /root/install.log
2) 拷贝已安装rpm
awk '{print $0}' /root/install.log |xargs -i cp /media/Packages/{}.rpm /ISO/Packages/
5 配置yum下载指定软件包列表(rpms_list.txt)的所有依赖包
#!/bin/sh
for line in `cat /root/rpms_list.txt`
do
echo "download file>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>and it's denpendies"$line
yum install -y --downloadonly --downloaddir=/root/test/ $line
#或者先安装yum -y install yum-utils再yumdownloader $line
done
#yum查找.so或者某个依赖在哪个rpm包中
yum provides {.so名或者依赖名字}
#拷贝包到指定目录
cp /root/test/* /ISO/Packages/
6 修改isolinux.cfg文件
label linux
menu label ^Install CentOS 7
kernel vmlinuz
#这样是不自动安装
append initrd=initrd.img inst.stage2=hd:LABEL=CentOS7 quiet
#这样配置会自动安装
append initrd=initrd.img inst.stage2=hd:LABEL=CentOS7 inst.ks=cdrom:/isolinux/ks.cfg quiet
inst.ks为ks.cfg文件位置;
inst.stage2为安装介质位置,hd:LABEL为介质标签,例如CentOS7。这个和后续生成ISO镜像文件的命令genisoimage的参数-V有关。
最好是把所有hd:LABEL后面的值都替换为一个后面会用到的字符串,如CentOS7
7 修改自动化安装配置文件
cp /root/anaconda-ks.cfg /ISO/isolinux/ks.cfg
在%packages与%end中间加入需要自定义安装的包组
%packages
@^web-server-environment
@base
@core
@java-platform
@python-web
@web-server
kexec-tools
@{自定义包组的groupid}
%end
8 制作修改comps文件
1) 进入/ISO目录,将“*-x86_64-comps.xml”文件拷贝到/ISO/repodata路径下,并重命名成comps.xml。
cp /media/repodata/*-x86_64-comps.xml /ISO/repodata/comps.xml
2) 编辑comps文件
(1) 添加定制rpm包
<group>
<id>{自定义包组的groupid}</id>
<name>My Dependencies</name>
<default>true</default>
<uservisible>true</uservisible>
<packagelist>
<packagereq type="default">python-webob</packagereq>
......
</packagelist>
</group>
根据rpms_list.txt拼接packagereq
#!/bin/sh
for line in `cat rpms_list.txt`
do
echo " <packagereq type=\"default\">"$line"</packagereq>" >> /root/package.txt
done
(2) 在指定的环境中添加定制的groupid
<environment>
<id>web-server-environment</id>
<name>Basic Web Server</name>
<description>Server for serving static and dynamic internet content. </description>
<display_order>30</display_order>
<grouplist>
<groupid>base</groupid>
<groupid>core</groupid>
<groupid>web-server</groupid>
<groupid>{自定义包组的groupid}</groupid>
</grouplist>
</environment>
9 切换到ISO/路径下,由comps.xml生成repodata包。注意当有新包加入,或者更新comps.xml文件,均需要重新生成repodata文件夹
createrepo -g repodata/comps.xml ./
10 制作ISO镜像,注意参数中的-V,和上面的isolinux.cfg文件有关
cd /ISO
genisoimage -joliet-long -V CentOS7 -o CentOS-7-2.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -cache-inodes -T -eltorito-alt-boot -e images/efiboot.img -no-emul-boot /ISO
11 制作镜像MD5值
implantisomd5 /ISO/CentOS-7-2.iso
12 接下来安装系统,在界面中就会有自定义包组的选项,若配置自动安装则启动时全自动安装
参考链接:
https://o-my-chenjian.com/2017/11/20/DIY-A-CentOS7-System/
https://blog.csdn.net/u013943420/article/details/71875489
https://blog.csdn.net/u013870094/article/details/53179531
https://www.cnblogs.com/panyouming/p/8401038.html
https://yangfannie.com/771.html