定制Centos镜像(一)

环境准备:
一台最小化安装的干净的系统,这里使用Centos7.9,一个Centos镜像,镜像也使用Centos7.9的。

[root@localhost ~]# cat /etc/system-release
CentOS Linux release 7.9.2009 (Core)
[root@localhost ~]# rpm -qa | wc -l
306
[root@localhost ~]# du -sh CentOS-7-x86_64-DVD-2009.iso
4.4G    CentOS-7-x86_64-DVD-2009.iso
[root@localhost ~]# ls
anaconda-ks.cfg  CentOS-7-x86_64-DVD-2009.iso
  1. 将CentOS-7-x86_64-DVD-2009.iso挂在,并复制到新的目录中

    挂载前,确保挂在点是一个空目录

    [root@localhost ~]# mount -o loop CentOS-7-x86_64-DVD-2009.iso /mnt
    mount: /dev/loop0 is write-protected, mounting read-only
    [root@localhost ~]# cp -rp /mnt Centos-install
    [root@localhost ~]# ls
    anaconda-ks.cfg  CentOS-7-x86_64-DVD-2009.iso  Centos-install
    
  2. 获取最小化安装的所有的包,清空Centos-install中Packages,repodata目录

    [root@localhost ~]# rpm -qa > install.txt
    [root@localhost ~]# rm -rf Centos-install/{Packages,repodata}/*  
    

    实验uefi引导安装会比bios安装多一些包,由于我本地环境使用的是bios安装,所以rpm -qa安装的包里面会少那些包,所以需要重新写入到 install.txt 文件中,以便把包放到 Centos-install/Packages/中
    [root@192 ~]# ls /mnt/Packages/ | egrep ‘dosfstools|efibootmgr|efivar-libs|grub2-efi-x64|mokutil|shim-x64’
    dosfstools-3.0.20-10.el7.x86_64.rpm
    efibootmgr-17-2.el7.x86_64.rpm
    efivar-libs-36-12.el7.x86_64.rpm
    grub2-efi-x64-2.02-0.86.el7.centos.x86_64.rpm
    mokutil-15-8.el7.x86_64.rpm
    shim-x64-15-8.el7.x86_64.rpm
    [root@192 ~]# echo “dosfstools-3.0.20-10.el7.x86_64
    efibootmgr-17-2.el7.x86_64
    efivar-libs-36-12.el7.x86_64
    grub2-efi-x64-2.02-0.86.el7.centos.x86_64
    mokutil-15-8.el7.x86_64
    shim-x64-15-8.el7.x86_64” >> install.txt

  3. 根据install.txt文件中的包,从 /mnt 复制到 Centos-install/Packages/

    安装 createrepo 工具:yum -y install createrepo -y

    [root@localhost ~]# awk '{ print $0 }' install.txt | xargs -i cp /mnt/Packages/{}.rpm Centos-install/Packages/
    [root@localhost ~]# ls Centos-install/Packages/ | wc -l
    312
    
  4. /mnt/repodata中将 *-comps.xml 复制到 Centos-install/repodata/comps.xml ,并重新生成软件包组信息的 Yum 软件仓库元数据。

    下载 createrepo 命令:yum -y install createrepo
    在使用 createrepo -g 如果需要指定时comps.xml文件时必须使用 绝对路径,如果comps.xml文件在当前目录下就不用指定路径。

    [root@localhost ~]# cp /mnt/repodata/*-comps.xml Centos-install/repodata/comps.xml
    [root@localhost ~]# ls Centos-install/repodata/
    comps.xml
    [root@localhost ~]# createrepo -g /root/Centos-install/repodata/comps.xml ./Centos-install
    [root@localhost ~]# ls Centos-install/repodata/
    02b45f1cc69b21bf60d81c3fa1d6d7eb5aaa199d1d5f8f3b95e0dfba03db5f4a-other.xml.gz
    0cc929b79a939ad31e0b1d149acfaec55983e818ed245826478b181469161412-primary.sqlite.bz2
    467105b47343286ebebc4d4019c162b4d8810c7479221acb162b5e53c9640b92-primary.xml.gz
    9e702e7199868a3272a66aad7784bc31693aa03931b9c470ce894bdcbaa69da1-filelists.sqlite.bz2
    a4e2b46586aa556c3b6f814dad5b16db5a669984d66b68e873586cd7c7253301-comps.xml.gz
    cca56f3cffa18f1e52302dbfcf2f0250a94c8a37acd8347ed6317cb52c8369dc-comps.xml
    d67ef1422af3b7925046da4e083b1f8a583a698b5a910ab246aefadb4a40c4ea-filelists.xml.gz
    fbeecdbfda867a1415e997673f8ed0773152d6dee49f0fc35f7eaa721e46bede-other.sqlite.bz2
    repomd.xml
    
  5. 创建ks文件

    bios 和 uefi 的ks文件的区别就在与 bios 没有 efi 分区。

    5.1.1. 创建bios引导的ks文件。

    我的 root 密码是 adm@123 ,使用 openssl passwd -1 “yourpasswd” 生成你的密码
    将ks文件放到 Centos-install/isolinux ,放到哪里都可以 / 目录在 Centos-install

    [root@localhost ~]# cat  Centos-install/isolinux/bios.cfg
    #version=DEVEL
    # System authorization information
    auth --enableshadow --passalgo=sha512
    # Use CDROM installation media
    cdrom
    # Use graphical install
    graphical
    # Run the Setup Agent on first boot
    firstboot --enable
    ignoredisk --only-use=sda
    # Keyboard layouts
    keyboard --vckeymap=us --xlayouts='us'
    # System language
    lang en_US.UTF-8# Network information
    network  --bootproto=dhcp --device=ens33 --onboot=off --ipv6=auto --no-activate
    network  --hostname=localhost.localdomain# Root password
    rootpw --iscrypted $6$RtMoOaOfFr8GOMd1$hKlvaWqJD8Ch32drhZVOB2NYFl/zhSsNvj8p1Urvoi8DPpfAFejz06wZ5gKfdoPVhUFZNvOMF/MlUkEXT5L5S.
    # System services
    services --enabled="chronyd"
    # System timezone
    timezone America/New_York --isUtc
    # System bootloader configuration
    bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
    # Partition clearing information
    clearpart --all --drives=sda
    # Disk partitioning information
    part /boot --fstype="ext4" --ondisk=sda --size=200
    part / --fstype="xfs" --ondisk=sda --grow
    %packages
    @^minimal
    @core
    chrony
    kexec-tools%end%addon com_redhat_kdump --enable --reserve-mb='auto'%end%anaconda
    pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
    pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
    pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
    %endfirewall --disable
    selinux  --disable
    reboot
    

    5.1.2. 创建uefi引导的ks文件

    将ks文件放到 Centos-install/EFI/BOOT ,放到哪里都可以 / 目录在 Centos-install
    相比与 bios ks文件,uefi ks文件 多了一个 uefi分区 :
    part /boot/efi --fstype="efi" --ondisk=sda --size=200 --fsoptions="umask=0077,shortname=winnt"

    [root@192 ~]# cat Centos-install/EFI/BOOT/uefi.cfg
    #version=DEVEL
    # System authorization information
    auth --enableshadow --passalgo=sha512
    # Use CDROM installation media
    cdrom
    # Use graphical install
    graphical
    # Run the Setup Agent on first boot
    firstboot --enable
    ignoredisk --only-use=sda
    # Keyboard layouts
    keyboard --vckeymap=us --xlayouts='us'
    # System language
    lang en_US.UTF-8# Network information
    network  --bootproto=dhcp --device=ens33 --onboot=off --ipv6=auto --no-activate
    network  --hostname=localhost.localdomain# Root password
    rootpw --iscrypted $6$RtMoOaOfFr8GOMd1$hKlvaWqJD8Ch32drhZVOB2NYFl/zhSsNvj8p1Urvoi8DPpfAFejz06wZ5gKfdoPVhUFZNvOMF/MlUkEXT5L5S.
    # System services
    services --enabled="chronyd"
    # System timezone
    timezone America/New_York --isUtc
    # System bootloader configuration
    bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
    # Partition clearing information
    clearpart --all --drives=sda
    # Disk partitioning information
    part /boot --fstype="ext4" --ondisk=sda --size=200
    part /boot/efi --fstype="efi" --ondisk=sda --size=200 --fsoptions="umask=0077,shortname=winnt"
    part / --fstype="xfs" --ondisk=sda --grow
    %packages
    @^minimal
    @core
    chrony
    kexec-tools%end%addon com_redhat_kdump --enable --reserve-mb='auto'%end%anaconda
    pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
    pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
    pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
    %endfirewall --disable
    selinux  --disable
    reboot
    
  6. 修改引导文件

    显示安装 DVD 卷名称: yum -y install genisoimage
    [root@192 ~]# isoinfo -d -i CentOS-7-x86_64-DVD-2009.iso | grep “Volume id” | sed -e ‘s/Volume id: //’ -e ‘s/ /\x20/g’
    CentOS\x207\x20x86_64

    6.1. 修改bios引导文件

    [root@192 ~]# cat Centos-install/isolinux/isolinux.cfg
    default linux
    prompt 1
    timeout 3display boot.msglabel linuxmenu label ^Audo install Centos7.9 systemmenu defaultkernel vmlinuzappend initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 inst.ks=hd:LABEL=CentOS\x207\x20x86_64:/isolinux/bios.cfg  quiet
    

    6.2. 修改uefi引导文件
    [root@192 ~]# cat Centos-install/EFI/BOOT/grub.cfg

    [root@192 ~]# cat Centos-install/EFI/BOOT/grub.cfg
    set default=0
    set timeout=3echo -e "\nWelcome to the Centos 7.9 installer!\n\n"menuentry 'Auto install Centos7.9 system' {linuxefi  /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 inst.ks=hd:LABEL=CentOS\x207\x20x86_64:/EFI/BOOT/uefi.cfg  quietinitrdefi /images/pxeboot/initrd.img
    }
    
  7. 创建自定义的iso镜像

    CentOS 7 x86_64 就是将之前的DVD 卷名称CentOS\x207\x20x86_64\x20 替换为空格
    安装mkisofs:yum -y install genisoimage

    [root@192 ~]# cd Centos-install/
    [root@192 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-20250127.iso -graft-points /root/Centos-install
    Warning: creating filesystem that does not conform to ISO-9660.
    Size of boot image is 4 sectors -> No emulation
    Size of boot image is 17600 sectors -> No emulation1.02% done, estimate finish Mon Jan 27 07:26:09 20252.05% done, estimate finish Mon Jan 27 07:26:09 20253.07% done, estimate finish Mon Jan 27 07:26:09 20254.10% done, estimate finish Mon Jan 27 07:26:09 2025
    ... ...97.24% done, estimate finish Mon Jan 27 07:26:13 202598.26% done, estimate finish Mon Jan 27 07:26:13 202599.28% done, estimate finish Mon Jan 27 07:26:13 2025
    Total translation table size: 87138
    Total rockridge attributes bytes: 38415
    Total directory bytes: 71680
    Path table size(bytes): 140
    Max brk space used 6d000
    488518 extents written (954 MB)
    
  8. 使用创建好的Centos-build-20250127.iso 镜像测试bios和uefi引导安装
    此处忽略自行测试。

redhat 官网自定义镜像安装手册:

https://docs.redhat.com/zh-cn/documentation/red_hat_enterprise_linux/7/html/installation_guide/sect-simple-install-kickstart#sect-simple-install-kickstart

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/68397.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android - 通过Logcat Manager简单获取Android手机的Log

由于工作需要,经常需要获取Android手机的Log。 平常都是通过adb命令来获取,每次都要写命令。 偶然的一个机会,我从外网发现了一个工具 Logcat Manager,只需要通过简单的双击即可获取Android的Log,这里也分享一下。 目…

c++学习第十三天

创作过程中难免有不足,若您发现本文内容有误,恳请不吝赐教。 提示:以下是本篇文章正文内容,下面案例可供参考 一、vector 1.介绍 1. vector是表示可变大小数组的序列容器。 2. 就像数组一样,vector也采用的连续存储空…

「数学::质数」分解质因子 / LeetCode 2521(C++)

概述 由算数基本定理,我们知道任意一个大于1的自然数可以表示为一些质数的乘积: LeetCode 2521: 给你一个正整数数组 nums ,对 nums 所有元素求积之后,找出并返回乘积中 不同质因数 的数目。 注意: 质数 是…

docker-compose Zookeeper 集群搭建

文章目录 前言docker-compose Zookeeper 集群搭建1. Zookeeper下载2. 制作Dockerfile文件3. 构建镜像4. docker-compose 管理5. docker-compose构建/启动6. 验证6.1 docker ps6.2 使用 zkCli.sh 连接并验证集群 前言 如果您觉得有用的话,记得给博主点个赞&#xff0…

Vue.js 使用 Vuex 管理组件间的共享状态

Vue.js 使用 Vuex 管理组件间的共享状态 今天咱们来聊聊如何用 Vuex 来管理 Vue.js 应用中各个组件之间的共享状态。如果你曾经在项目中为了让组件共享数据而头疼,那么这篇文章就是为你准备的。 什么是 Vuex? 简单来说,Vuex 就是 Vue.js 的…

WIN11 UEFI漏洞被发现, 可以绕过安全启动机制

近日,一个新的UEFI漏洞被发现,可通过多个系统恢复工具传播,微软已经正式将该漏洞标记为追踪编号“CVE-2024-7344”。根据报告的说明,该漏洞能让攻击者绕过安全启动机制,并部署对操作系统隐形的引导工具包。 据TomsH…

R语言学习笔记之高效数据操作

一、概要 数据操作是R语言的一大优势,用户可以利用基本包或者拓展包在R语言中进行复杂的数据操作,包括排序、更新、分组汇总等。R数据操作包:data.table和tidyfst两个扩展包。 data.table是当前R中处理数据最快的工具,可以实现快…

本地大模型编程实战(04)给文本自动打标签

文章目录 准备实例化本地大模型情感分析更精细的控制总结代码 使用本地大模型可以根据需要给文本打标签,本文介绍了如何基于 langchain 和本地部署的大模型给文本打标签。 本文使用 llama3.1 作为本地大模型,它的性能比非开源大模型要查一下,…

视频外绘技术总结:Be-Your-Outpainter、Follow-Your-Canvas、M3DDM

Diffusion Models专栏文章汇总:入门与实战 前言:视频Inpaint的技术很火,但是OutPaint却热度不高,这篇博客总结比较经典的几篇视频Outpaint技术。其实Outpaint在runway等工具上很火,可是学术界对此关注比较少,博主从这三年的顶会中找到了最具代表性的三篇论文解读。 目录 …

Java对象注入的常见方式

在 Java 中,对象注入(依赖注入,Dependency Injection)是实现松耦合设计的重要方式,常见的有以下几种实现形式: 1. 构造器注入(Constructor Injection) 通过类的构造函数注入依赖对象…

【数据结构】 并查集 + 路径压缩与按秩合并 python

目录 前言模板朴素实现路径压缩按秩合并按树高为秩按节点数为秩 总结 前言 并查集的基本实现通常使用森林来表示不同的集合,每个集合用一棵树表示,树的每个节点有一个指向其父节点的指针。 如果一个节点是它自己的父节点,那么它就是该集合的代…

低代码系统-产品架构案例介绍、得帆云(八)

产品名称 得帆云DeCode低代码平台-私有化 得帆云DeMDM主数据管理平台 得帆云DeCode低代码平台-公有云 得帆云DePortal企业门户 得帆云DeFusion融合集成平台 得帆云DeHoop数据中台 名词 概念 云原生 指自己搭建的运维平台,区别于阿里云、腾讯云 Dehoop 指…

.NET 8 项目 Docker 方式部署到 Linux 系统详细操作步骤

本文将详细介绍如何将一个 .NET 8 项目通过 Docker 部署到 Linux 系统中。以下步骤包括从项目的创建、Dockerfile 的编写、镜像构建、到最后在 Linux 上的容器运行。 1. 环境准备 在开始之前,请确保你已经具备以下环境: Linux 系统(如 Ubu…

【PyTorch】5.张量索引操作

目录 1. 简单行、列索引 2. 列表索引 3. 范围索引 4. 布尔索引 5. 多维索引 个人主页:Icomi 在深度学习蓬勃发展的当下,PyTorch 是不可或缺的工具。它作为强大的深度学习框架,为构建和训练神经网络提供了高效且灵活的平台。神经网络作为…

springboot 动态线程池

在Spring Boot中,可以使用ThreadPoolTaskExecutor类来创建动态线程池。以下是一个示例: 首先,需要在配置文件中配置线程池的属性,例如最小线程数、最大线程数、线程存活时间等。可以在application.properties或application.yml中…

强化学习 - 基于策略搜索和策略优化: 高斯策略

最近在做毕设需要用强化学习来做控制,对强化学习的知识点做一下总结。 高斯策略 高斯策略属于强化学习中的基于策略优化的分支(Policy Optimization),尤其是策略梯度方法(Policy Gradient Methods) 的一部…

基于微信小程序高校课堂教学管理系统 课堂管理系统微信小程序(源码+文档)

目录 一.研究目的 二.需求分析 三.数据库设计 四.系统页面展示 五.免费源码获取 一.研究目的 困扰管理层的许多问题当中,高校课堂教学管理也是不敢忽视的一块。但是管理好高校课堂教学又面临很多麻烦需要解决,如何在工作琐碎,记录繁多的情况下将高校课堂教学的当前情况反…

论文阅读笔记:VMamba: Visual State Space Model

论文阅读笔记:VMamba: Visual State Space Model 1 背景2 创新点3 方法4 模块4.1 2D选择性扫描模块(SS2D)4.2 加速VMamba 5 效果5.1 和SOTA方法对比5.2 SS2D和自注意力5.3 有效感受野5.4 扫描模式 论文:https://arxiv.org/pdf/240…

【文星索引】搜索引擎项目测试报告

目录 一、项目背景二、 项目功能2.1 数据收集与索引2.2 API搜索功能2.3 用户体验与界面设计2.4 性能优化与维护 三、测试报告3.1 功能测试3.2 界面测试3.3 性能测试3.4 兼容性测试3.5 自动化测试 四、测试总结4.1 功能测试方面4.2 性能测试方面4.3 用户界面测试方面 一、项目背…

DBO-高斯回归预测matlab

蜣螂优化算法(Dung Beetle Optimizer, DBO)是一种新型的群智能优化算法,在2022年底提出,主要是受蜣螂的的滚球、跳舞、觅食、偷窃和繁殖行为的启发。 本次研究使用的是 Excel 格式的股票预测数据。数据集按照 8:1:1 的比例&#x…