制作自定义CentOS 7安装镜像ISO

in Linux with 0 comment

本文以CentOS 7.2为例

1、制作完成的ISO在安装过程中可以选择自定义的软件包
2、制作完成的ISO全自动安装,不需要在安装过程中进行任何选择操作

一 CentOS原版镜像下载链接

http://vault.centos.org/

二 使用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