当前位置: 首页 > article >正文

定制Centos镜像(二)

本章是对上篇文章的扩展:
https://blog.csdn.net/qq_50247813/article/details/145286244

上篇文章学习了如何自定义镜像安装。这篇介绍如何在定制镜像的时候安装其他软件; (源文件参考上篇文章)

根据上篇文章的步骤,只需要把第6步做完

  1. 自定义安装的时候安装: vim-enhanced,net-tools,telnet,wget,rsync,lsof,docker-ce 软件

    vim 软件包名全称是 vim-enhanced

    1.1. 将需要安装的软件包以及依赖下载到 Centos-install/Packages里面

    由于Centos默认的yum源的docker版本很低,所有docker安装不使用默认的源,使用阿里云的yum源。
    # yum install -y yum-utils
    # yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

    # yum install --downloadonly --downloaddir=/root/Centos-install/Packages/ vim-enhanced net-tools telnet wget rsync lsof
    # yum install --downloadonly --enablerepo=docker-ce-stable --downloaddir=/root/Centos-install/Packages/  docker-ce
    

    1.2. 重新修改 *-comps.xml 文件,将vim-enhanced,net-tools,telnet,wget,rsync,lsof,docker添加进去。

    必须在最小型安裝后面的packagelist里面添加包名。
    <packagereq type=“default”>vim-enhanced 中 type=“default” 表示该软件包是软件包组的 默认成员,当用户安装这个软件包组时,vim-enhanced 软件包将被自动安装,但用户可以选择不安装它。
    还有其他选项:
    type=“mandatory”:这个属性表示该软件包是软件包组的 强制性成员。当用户安装这个软件包组时,软件包将被自动安装,而无需用户手动选择。
    type=“optional”:这个属性表示该软件包是软件包组的 可选成员。当用户安装这个软件包组时, 软件包不会自动安装,用户可以选择是否安装它。

    # cd /root/Centos-install/repodata/
    # shopt -s  extglob
    # rm -f !(*-comps.xml)
    # mv *-comps.xml comps.xml
    # cat  comps.xml
    <name xml:lang="zh_CN">核心</name>
    <name xml:lang="zh_TW">核心</name>
    <name xml:lang="zu">Okuyikhona</name>
    <description>Smallest possible installation.</description>
    <description xml:lang="as">ন্যূনতম ইনস্টল।</description>
    <description xml:lang="bn">ন্যূনতম ইনস্টলেশন।</description>
    <description xml:lang="cs">Nejmenší možná instalace.</description>
    <description xml:lang="de">Kleinstmögliche Installation.</description>
    <description xml:lang="de_CH">Kleinstmögliche Installation.</description>
    <description xml:lang="es">La instalación más pequeña posible.</description>
    <description xml:lang="fr">Plus petite installation possible.</description>
    <description xml:lang="gu">નાનામાં નાના શક્ય સ્થાપન.</description>
    <description xml:lang="hi">लघुतम संभावित संस्थापन.</description>
    <description xml:lang="ia">Le minime possibile installation.</description>
    <description xml:lang="it">Minima installazione possibile.</description>
    <description xml:lang="ja">最小限のインストール</description>
    <description xml:lang="kn">ಅತ್ಯಲ್ಪಸಾಧ್ಯ ಅನುಸ್ಥಾಪನೆ.</description>
    <description xml:lang="ko">가능한 최소 설치</description>
    <description xml:lang="ml">സാധ്യമായ ഏറ്റവും ചെറിയ ഇന്<200d>സ്റ്റലേഷന്<200d>.</description>
    <description xml:lang="mr">शक्यतया सर्वात लहान प्रतिष्ठापन.</description>
    <description xml:lang="or">କ୍ଷୁଦ୍ରତମ ସମ୍ଭାବ୍ଯ ସ୍ଥାପନା।</description>
    <description xml:lang="pa">ਘੱਟੋ-ਘੱਟ ਸੰਭਵ ਇੰਸਟਾਲੇਸ਼ਨ।</description>
    <description xml:lang="pl">Najmniejsza możliwa instalacja.</description>
    <description xml:lang="pt_BR">Menor instalação possível</description>
    <description xml:lang="ru">Минимально возможная установка</description>
    <description xml:lang="sv">Minsta möjliga installation</description>
    <description xml:lang="ta">மிகச் சிறிய செயல்படுத்தக்கூடிய நிறுவல்.</description>
    <description xml:lang="te">సాధ్యమగు అతిచిన్న సంస్థాపన.</description>
    <description xml:lang="uk">Мінімально можливе встановлення.</description>
    <description xml:lang="zh">最小型安裝。</description>
    <description xml:lang="zh_CN">最小可能安装。</description>
    <description xml:lang="zh_TW">最小型安裝。</description>
    <default>false</default>
    <uservisible>false</uservisible>
    <packagelist>
    ... ...
      <packagereq type="default">vim-enhanced</packagereq>
      <packagereq type="default">net-tools</packagereq>
      <packagereq type="default">telnet</packagereq>
      <packagereq type="default">wget</packagereq>
      <packagereq type="default">rsync</packagereq>
      <packagereq type="default">lsof</packagereq>
      <packagereq type="default">docker-ce</packagereq>
    ... ...
    </packagelist>
    

    1.3. 重新生成yum元数据

    # createrepo -g /root/Centos-install/repodata/comps.xml /root/Centos-install
    Spawning worker 0 with 365 pkgs
    Workers Finished
    Saving Primary metadata
    Saving file lists metadata
    Saving other metadata
    Generating sqlite DBs
    Sqlite DBs complete
    
  2. 在ks中配置启动docker,并把默认的yum源修改为阿里云

    由于涉及到uefi和bios引导所有两个ks文件都需要修改,修改内容一致,这里只展示一个。
    在系统安装完后执行。

    # cat Centos-install/isolinux/bios.cfg
    ... ...
    %post
    
    rm -rf /etc/yum.repos.d/*
    echo "[base]
    name=CentOS-$releasever - Base - mirrors.aliyun.com
    failovermethod=priority
    baseurl=http://mirrors.aliyun.com/centos/\$releasever/os/\$basearch/
    http://mirrors.aliyuncs.com/centos/\$releasever/os/\$basearch/
    http://mirrors.cloud.aliyuncs.com/centos/\$releasever/os/\$basearch/
    gpgcheck=1
    gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7 " > /etc/yum.repos.d/CentOS-Base.repo
    
    systemctl enable docker --now
    
    %end
    ... ...
    
  3. 创建自定义iso镜像。

    # cd Centos-install/
    # mkisofs -untranslated-filenames -volid "CentOS 7 x86_64" -J -joliet-long -rational-rock -translation-table -input-charset utf-8 -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot -e images/efiboot.img -no-emul-boot -o /root/Centos-build-20250201.iso -graft-points /root/Centos-install
    
  4. 使用自定义的iso镜像创建系统后,测试效果。

    [root@192 ~]# rpm -qa | egrep 'vim-enhanced|net-tools|telnet|wget|rsync|lsof'
    vim-enhanced-7.4.629-8.el7_9.x86_64
    net-tools-2.0-0.25.20131004git.el7.x86_64
    lsof-4.87-6.el7.x86_64
    rsync-3.1.2-12.el7_9.x86_64
    wget-1.14-18.el7_6.1.x86_64
    telnet-0.17-66.el7.x86_64
    [root@192 ~]# rpm -qa | grep docker
    docker-ce-26.1.4-1.el7.x86_64
    docker-compose-plugin-2.27.1-1.el7.x86_64
    docker-ce-cli-26.1.4-1.el7.x86_64
    docker-ce-rootless-extras-26.1.4-1.el7.x86_64
    docker-buildx-plugin-0.14.1-1.el7.x86_64
    
    [root@192 ~]# systemctl status docker
    ● docker.service - Docker Application Container Engine
       Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
       Active: active (running) since Fri 2025-01-31 20:24:03 EST; 7h left
         Docs: https://docs.docker.com
     Main PID: 866 (dockerd)
        Tasks: 8
       Memory: 105.8M
       CGroup: /system.slice/docker.service
               └─866 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
    
    Jan 31 20:24:02 localhost.localdomain systemd[1]: Starting Docker Application Container Engine...
    Jan 31 20:24:02 localhost.localdomain dockerd[866]: time="2025-01-31T20:24:02.852110125-05:00" level=info msg="Starting up"
    Jan 31 20:24:02 localhost.localdomain dockerd[866]: time="2025-01-31T20:24:02.960516801-05:00" level=info msg="Loading containers: start."
    Jan 31 20:24:03 localhost.localdomain dockerd[866]: time="2025-01-31T20:24:03.168511723-05:00" level=info msg="Loading containers: done."
    Jan 31 20:24:03 localhost.localdomain dockerd[866]: time="2025-01-31T20:24:03.182787827-05:00" level=info msg="Docker daemon" commit=de5c9cf containerd-snap...on=26.1.4
    Jan 31 20:24:03 localhost.localdomain dockerd[866]: time="2025-01-31T20:24:03.183180333-05:00" level=info msg="Daemon has completed initialization"
    Jan 31 20:24:03 localhost.localdomain dockerd[866]: time="2025-01-31T20:24:03.252357348-05:00" level=info msg="API listen on /run/docker.sock"
    Jan 31 20:24:03 localhost.localdomain systemd[1]: Started Docker Application Container Engine.
    Hint: Some lines were ellipsized, use -l to show in full.
    
    [root@192 ~]# cat /etc/yum.repos.d/CentOS-Base.repo
    [base]
    name=CentOS- - Base - mirrors.aliyun.com
    failovermethod=priority
    baseurl=http://mirrors.aliyun.com/centos//os//
    http://mirrors.aliyuncs.com/centos//os//
    http://mirrors.cloud.aliyuncs.com/centos//os//
    gpgcheck=1
    gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
    

    测试结果与实际情况符合。


http://www.kler.cn/a/533992.html

相关文章:

  • android 自定义通话录音
  • Android原生开发入门
  • github下载失败网页打开失败 若你已经知道github地址如何cmd下载
  • 【PyQt】pyqt小案例实现简易文本编辑器
  • JavaScript模块化
  • Unity 2D实战小游戏开发跳跳鸟 - 计分逻辑开发
  • 使用 ElementUI 和 Spring 实现稳定可靠的文件上传和下载功能
  • 【大数据技术】编写Python代码实现词频统计(python+hadoop+mapreduce+yarn)
  • WPS的word的水印去除
  • docker 实战练习1
  • 数码分享官 | 华硕灵耀14 双屏 2025,科技与美学的完美碰撞
  • 2025年02月05日Github流行趋势
  • 冒泡排序的原理及优化
  • 【3分钟极速部署】在本地快速部署deepseek
  • Linux中系统相关指令(一)
  • 国防科大:双目标优化防止LLM灾难性遗忘
  • uniapp引入cloudflare人机验证
  • Docker深度解析:Docker 安装
  • 【蓝桥杯嵌入式】LED
  • C#中堆和栈的区别
  • 5. scala高阶之traits
  • C# 程序计算圆的面积(Program to find area of a circle)
  • Git、Github和Gitee完整讲解:丛基础到进阶功能
  • 鸿蒙Harmony-Refresh 容器组件
  • 【kafka的零拷贝原理】
  • [Java]函数式编程