美文网首页
制作自定义CentOS的ISO安装盘

制作自定义CentOS的ISO安装盘

作者: 早就是优势 | 来源:发表于2018-10-17 15:07 被阅读0次

    一、下载CentOS镜像文件

    CentOS镜像链接:http://vault.centos.org/
    本文以CentOS 7.3为例

    二、使用vmware安装centos

    安装过程自行百度

    三、制作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 install -y createrepo mkisofs isomd5sum squashfs-tools
    

    3、拷贝文件

    #拷贝/media/下的文件到ISO/路径下
    mkdir /ISO
    cp -r /media/* /ISO/
    cp /media/.discinfo /ISO/
    cp /media/.treeinfo /ISO/
    chmod +w /ISO/isolinux/isolinux.cfg
    #清空ISO文件夹下的Packages和repodata文件夹
    rm -rf /ISO/Packages/*
    rm -rf /ISO/repodata/*
    

    4、拷贝相关软件包到/ISO/Packages目录下

    在使用Centos系统安装完成后会生成/root/install.log,该文件记录了系统安装时安装的RPM包信息。如果没有该文件,可以手动生成(新安装的干净系统):

    1)生成install.log

    rpm -qa >> /root/install.log
    

    2)拷贝rpm包的脚本

    awk '{print $0}'  /root/install.log |xargs -i cp /media/Packages/{}.rpm /ISO/Packages/
    

    因为需要自定制iso,需要预安装其他的包,将解决好依赖关系的包全部放入/ISO/Packages/中

    3)配置yum下载指定软件包列表(rpms_list.txt)的所有依赖包

    (1)只下载不安装
    #!/bin/sh
    # (1) 只下载不安装   
    for line in `cat rpms_list.txt`
        do
            echo $line
            yum install -y --downloadonly --downloaddir=/root/test/ $line
        done
    echo "安装包下载完毕,下面整理包名"
    #(2)获取下载的所有包的名字到指定文件
    cd /root/test
    for file in $(ls *)
        do
            echo $file >> /root/rpm_names.txt
        done
    echo "包名全称整理完毕,下面替换后缀"
    #(3)去除 “.rpm”
    sed -i "s/.rpm//g" /root/rpm_names.txt
    echo "替换完毕"
    #拷贝包到指定目录
    cp /root/test/* /ISO/Packages/
    

    5、修改isolinux.cfg文件,将“append initrd=initrd.img”后面的当前行内容删除,并加入“ks=cdrom:/isolinux/ks.cfg”。

    label linux
        menu label ^Install CentOS Linux 7
        kernel vmlinuz
        append initrd=initrd.img ks=cdrom:/isolinux/ks.cfg
    

    6、修改自动化安装配置文件

    cp /root/anaconda-ks.cfg /ISO/isolinux/ks.cfg
    

    在%packages与%end中间加入需要自定义安装的包全称,带版本号,本例使用如下的一个rpm包,并且要记得将该rpm包放到/ISO/Packages目录下


    添加自定义rpm包的位置

    在指定字符串“kexec-tools”后面添加rpm_names.txt中的所有包名

    #!/bin/sh
    for line in `cat rpm_names.txt`
    do
        sed -i "/kexec-tools/a\\"$line""  ks.cfg
    done
    

    7、生成comps.xml文件

    1)进入/ISO/repodata 目录,将“*-x86_64-comps.xml”文件拷贝到/ISO/repodata路径下,并重命名成comps.xml。

    cp /media/repodata/*-x86_64-comps.xml  /ISO/repodata/comps.xml
    

    2)切换到ISO/路径下,生成comps.xml文件

    createrepo -g repodata/comps.xml ./
    

    8、进入到ISO目录,生成ISO文件

    mkisofs -o CentOS-7.3.iso -input-charset utf-8 -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T -joliet-long  /ISO/
    

    9、生成ISO文件MD5值

    /usr/bin/implantisomd5 /ISO/CentOS-7.3.iso
    

    10、使用生成的ISO镜像去安装系统时就会默认把自定义的rpm装上

    11、若不自动安装则需配置isolinux.cfg

    label linux
    menu label ^Install CentOS 7
    kernel vmlinuz
    append initrd=initrd.img inst.stage2=hd:LABEL=CentOS7 quiet
    

    inst.stage2为安装介质位置,hd:LABEL为介质标签,例如CentOS7。这个和生成ISO镜像文件的命令genisoimage的参数-V有关。

    制作命令

    # 注意参数中的-V,和上面的isolinux.cfg文件有关
    genisoimage -joliet-long -V CentOS7 -o CentOS-7-3.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
    

    参考链接:
    https://blog.csdn.net/u013943420/article/details/71875489
    http://yangfannie.com/771.html
    https://blog.csdn.net/u013870094/article/details/53179531
    https://www.cnblogs.com/panyouming/p/8401038.html
    貌似这个是最详细的:
    https://o-my-chenjian.com/2017/11/20/DIY-A-CentOS7-System/

    欢迎扫码关注公众号,不定期更新一些干货

    相关文章

      网友评论

          本文标题:制作自定义CentOS的ISO安装盘

          本文链接:https://www.haomeiwen.com/subject/iotrzftx.html