• 基于CentOS6定制自己的ISO安装光盘


    警告:转载请注明出处 https://www.cnblogs.com/BoyTNT/p/9322927.html 

    1.目标

    >> 基于CentOS-6.10-x86_64-minimal.iso进行定制,选它是因为包比较小
    >> 以text方式安装,安装过程尽量无需用户参与
    >> 固定root密码,并创建好内置用户与权限
    >> 隐藏与CentOS相关的信息,更换为自己的产品名称
    >> 携带自己的软件,如jre环境等

    2.环境准备

    >> 下载CentOS6.10,地址:http://mirrors.aliyun.com/centos/6.10/isos/x86_64/CentOS-6.10-x86_64-minimal.iso
    >> 准备linux环境,建议直接使用要定制的基础iso安装
    >> 以root登录系统,配置好网络
    >> 通过yum安装必备组件

    yum install anaconda createrepo mkisofs rpm-build

    >> 上传iso到/root,并挂载到/mnt/src,之后拷贝所有文件到工作目录下,注意包含两个隐藏文件.diskinfo和.treeinfo

    mkdir /mnt/src
    mount –o loop /root/CentOS-6.9-x86_64-minimal.iso /mnt/src
    mkdir /root/iso
    cp –r /mnt/src/. /root/iso

     

    3.修改欢迎界面

    3.1.修改背景图

    原始界面为:

    替换界面需要修改/root/iso/isolinux/splash.jpg,替换为需要的图片,保持文件名不变,图片大小640x480。

    3.2.修改产品名与选项

    修改/root/iso/isolinux/isolinux.cfg,原始内容为: 

    default vesamenu.c32
    #prompt 1
    timeout 600
    
    display boot.msg
    
    menu background splash.jpg
    menu title Welcome to CentOS 6.10!
    menu color border 0 #ffffffff #00000000
    menu color sel 7 #ffffffff #ff000000
    menu color title 0 #ffffffff #00000000
    menu color tabmsg 0 #ffffffff #00000000
    menu color unsel 0 #ffffffff #00000000
    menu color hotsel 0 #ff000000 #ffffffff
    menu color hotkey 7 #ffffffff #ff000000
    menu color scrollbar 0 #ffffffff #00000000
    
    label linux
      menu label ^Install or upgrade an existing system
      menu default
      kernel vmlinuz
      append initrd=initrd.img
    label vesa
      menu label Install system with ^basic video driver
      kernel vmlinuz
      append initrd=initrd.img nomodeset
    label rescue
      menu label ^Rescue installed system
      kernel vmlinuz
      append initrd=initrd.img rescue
    label local
      menu label Boot from ^local drive
      localboot 0xffff
    label memtest86
      menu label ^Memory test
      kernel memtest
      append -

    修改为:

    default vesamenu.c32
    #prompt 1
    timeout 150
    
    display boot.msg
    
    menu background splash.jpg
    menu title Welcome to RVS 3.0!
    menu color border 0 #ffffffff #00000000
    menu color sel 7 #ffffffff #ff000000
    menu color title 0 #ffffffff #00000000
    menu color tabmsg 0 #ffffffff #00000000
    menu color unsel 0 #ffffffff #00000000
    menu color hotsel 0 #ff000000 #ffffffff
    menu color hotkey 7 #ffffffff #ff000000
    menu color scrollbar 0 #ffffffff #00000000
    
    label linux
      menu label ^Install RVS 3.0
      menu default
      kernel vmlinuz
      append ks=cdrom:/isolinux/ks.cfg initrd=initrd.img
    label local
      menu label ^Boot from local drive
      localboot 0xffff

    做了以下几处调整:

    • 修改timeout,默认超时是60秒,改为15秒,即15秒内不做选择默认执行菜单中的default项
    • 修改memu title行,可以定制欢迎标题
    • 去掉部分菜单项,只保留安装(label linux)和从硬盘启动(label local)这两项
    • 调整了label linux项的文字,同时调整了append项,增加了对kickstart的支持,指定ks.cfg位置,此配置用于自动安装,后面会涉及

    4.修改安装过程

    4.1.调整安装界面名称

    安装界面左上角会显示产品名称,原始界面如下:

    想更换CentOS为自定义名称,需要调整/root/iso/isolinux/initrd.img:

    >> 解开initrd.img到工作目录

    mkdir /root/initrd
    cd /root/initrd
    xz -dc /root/iso/isolinux/initrd.img | cpio -id

    >> 修改.buildstamp文件,原始内容为:

    201806291108.x86_64
    CentOS
    6.10
    FINAL=YES
    http://bugs.centos.org/

    修改为:

    201806291108.x86_64
    RVS
    3.0
    FINAL=YES
    http://www.your-company.com.cn/

    >> 重新压缩img文件,并覆盖工作目录下的原文件,然后清理

    cd /root/initrd
    find . | cpio -c -o | xz -9 --format=lzma > /root/initrd.img
    cp /root/initrd.img /root/iso/isolinux/initrd.img
    cd /root
    rm –rf /root/initrd
    rm -rf /root/initrd.img

    4.2.定制自动安装参数

    定制自动安装参数需要依赖kickstart,生成/root/iso/isolinux/ks.cfg,填写内容为(#为注释行,不需要): 

    #全新安装,使用cdrom作为安装源
    install
    cdrom
    #使用text模式而不要用图形模式安装
    text
    #设置键盘与语言
    keyboard us
    lang en_US.UTF-8
    #设置root密码与认证加密方式,此处设置root密码为PASSWD1!
    rootpw --iscrypted $6$rUp4SXGKaN7Z.eix$/6tp2c9zsSwN8a2a.TmDcKHjhjAm.CFhlunvKZRqZAO.UQ8mrOT4Im/pCiL5d388VEEHMrhha0N3Q2BwqxHPV1
    auth --useshadow --passalgo=sha512
    #设置防火墙,放过ssh
    firewall --service=ssh
    #设置selinux
    selinux --enforcing
    #设置网络eth0,使用dhcp模式,设置hostname,不启用ipv6
    network --onboot=yes --device=eth0 --bootproto=dhcp --hostname=rvs --noipv6
    #不使用X Window
    skipx
    #安装完成后重启系统
    reboot
    #设置时区
    timezone Asia/Shanghai
    #设置启动引导参数
    bootloader --location=mbr --driveorder=sda
    #清除mbr
    zerombr
    #清除分区
    clearpart --all --initlabel 

    参数很多,可以参考以下文章:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/installation_guide/s1-kickstart2-options。或者如果你有图形界面,安装一个system-config-kickstart,可以进行图形化的参数设置。

    root密码是以加密方式设置的,可以通过以下方法得到密文: python -c 'import crypt; print(crypt.crypt("PASSWD1!"))' 

    4.3.添加自定义软件与脚本

    以安装oracle server jre为例:

    >> 在iso目录中创建软件存放目录,放入待安装的软件

    mkdir /root/iso/soft
    cp /root/server-jre-8u172-linux-x64.tar.gz /root/iso/soft

    >> 修改ks.cfg,以末尾添加内容

    %post
    mkdir -p /media/cdrom
    ln -s /dev/scd0 /dev/cdrom
    mount -o loop /dev/cdrom /media/cdrom
    
    tar -zxvf /media/cdrom/soft/server-jre-8u172-linux-x64.tar.gz -C /usr/local
    echo "JAVA_HOME=/usr/local/jdk1.8.0_172" >> /etc/profile
    echo "PATH=$JAVA_HOME/bin:$PATH" >> /etc/profile
    echo "export JAVA_HOME PATH" >> /etc/profile
    %end

    %post表示安装完成后执行的脚本,这里首先挂载光驱,然后解压jre并设置环境变量。

    5.修改产品名称

    产品名称出现在启动界面以及登录前,想变更需要修改centos-release-6-10.el6.centos.12.3.x86_64.rpm,但此包无法直接修改,需要从源码包修改,步骤如下:

    >> 下载源码包到/root,并解开

    cd /root
    wget http://vault.centos.org/6.10/os/Source/SPackages/centos-release-6-10.el6.centos.12.3.src.rpm
    rpm2cpio /root/centos-release-6-10.el6.centos.12.3.src.rpm | cpio -id

    >> 建立root用户的rpm环境,并将解压得到的文件放入

    echo "%_topdir /root/rpmbuild" > /root/.rpmmacros
    mkdir -pv /root/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
    cp centos-release-6-10.tar.gz /root/rpmbuild/SOURCES
    cp centos-release.spec /root/rpmbuild/SPECS

    >> 修改centos-release.spec,分别找到%define product_family和%define full_release_version这两行,改为需要的值:

    %define product_family RVS
    %define full_release_version 3.0

      注意%define base_release_version这一行不要修改,否则会生成错误。

    >> 重新生成rpm包,覆盖原始文件

    cd /root/rpmbuild/SPECS
    rpmbuild -bp centos-release.spec
    rpmbuild -bc centos-release.spec
    rpmbuild -bi centos-release.spec
    rpmbuild -bb centos-release.spec
    cp /root/rpmbuild/RPMS/x86_64/centos-release-6-10.el6.12.3.x86_64.rpm /root/iso/Packages/centos-release-6-10.el6.centos.12.3.x86_64.rpm

      执行每条命令时注意观察有无错误产生。

    >> 更新repodata数据

    cd /root/iso
    declare -x discinfo=`head -1 .discinfo`
    cp /root/iso/repodata/*-x86_64.xml /root/iso/comps.xml
    rm –rf /root/iso/repodata
    createrepo -u "media://$discinfo" -g comps.xml ./

     6.重新生成ISO

    cd /root
    mkisofs -o rvs-3.0.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T iso/ 

    成功后会在/root目录下生成rvs-3.0.iso。

    7.检验成果

    使用VMware虚拟机安装,欢迎页面,已显示RVS 3.0,且菜单项只剩2项:

     

      

    进入text模式,左上角显示产品名为RVS,安装过程中只需要选择磁盘,其它参数都不需要设置:

    安装完成后自动重启,GRUB里及启动过程右下角已显示RVS 3.0:

    启动完成,显示RVS release 3.0 (Final),以root登录,密码PASSWD1!,执行java命令可正常运行,查看IP已通过dhcp分配成功。

    大家可以在此基础上添加更多个性化的内容,来生成自己专属的iso安装包。

    如果对rpm包进行剪裁,需要重新生成repodata,但要注意的是rpm包之间有依赖,如果依赖关系出现问题,安装时会给出警告,可以继续,但完成后相应组件无法使用。


    PS:感谢 https://www.cnblogs.com/appresearch/p/5484450.html  的作者。

    警告:转载请注明出处 https://www.cnblogs.com/BoyTNT/p/9322927.html 

  • 相关阅读:
    【java】:G1回收器,S0一直是0,S1一直100
    为impala开启HDFS缓存
    [jvm] sun.jvm.hotspot.runtime.VMVersionMismatchException: Supported versions are 25.51b03
    [linux] httpd: AH00543: httpd: bad user name apache
    IOS – OpenGL ES 同心圆像素化马赛克效果 GPUImagePolarPixel
    C/C++ 实现内存特征码搜索
    驱动开发:实现驱动加载卸载工具
    C/C++ 使用SEH让崩溃进程转存
    neo4j
    keepalive主备切换失败问题分析及解决办法
  • 原文地址:https://www.cnblogs.com/BoyTNT/p/9322927.html
Copyright © 2020-2023  润新知