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

定制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}/*  
    
  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
    306
    
  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 替换为空格

    [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

相关文章:

定制Centos镜像

环境准备: 一台最小化安装的干净的系统,这里使用Centos7.9,一个Centos镜像,镜像也使用Centos7.9的。 [rootlocalhost ~]# cat /etc/system-release CentOS Linux release 7.9.2009 (Core) [rootlocalhost ~]# rpm -qa | wc -l 306 [rootloca…...

Java---判断素数的三种方法

我们首先先来了解一下什么是素数 素数:一个整数只能被1和自身整除 , 注意:0与1不是素数 目录 方法一:暴力法 方法二:除二法(优化) 方法三.根号法(最优法) 方法一:暴力法 最简单最暴力的方法就是根据定义,判断n是不是素数,让n除以2到n-1的所有数,只要遇到能除开…...

多级缓存(亿级并发解决方案)

多级缓存(亿级流量(并发)的缓存方案) 传统缓存的问题 传统缓存是请求到达tomcat后,先查询redis,如果未命中则查询数据库,问题如下: (1)请求要经过tomcat处…...

代理模式 - 代理模式的应用

引言 代理模式(Proxy Pattern)是一种结构型设计模式,它允许你提供一个代理对象来控制对另一个对象的访问。代理对象通常会在客户端和目标对象之间起到中介的作用,从而可以在不改变目标对象的情况下,增加额外的功能或控…...

编辑器Vim基本模式和指令 --【Linux基础开发工具】

文章目录 一、编辑器Vim 键盘布局二、Linux编辑器-vim使用三、vim的基本概念正常/普通/命令模式(Normal mode)插入模式(Insert mode)末行模式(last line mode) 四、vim的基本操作五、vim正常模式命令集插入模式从插入模式切换为命令模式移动光标删除文字复制替换撤销上一次操作…...

云计算如何与物联网(IoT)结合?

今天我们来聊一个既酷炫又实用的话题:云计算如何给物联网插上腾飞的翅膀。 智能时代的技术密码 想象一下,你家的冰箱会自动帮你订购即将用完的牛奶,工厂的机器能预测何时需要维修,城市的路灯会根据实时交通流量调整亮度。这些看…...

C#面试常考随笔4:int? 和 int的区别,以及int?的运用场景?

可空性 int?&#xff1a;它是int的可空类型&#xff0c;允许将null赋值给该变量。int?实际上是Nullable<int>的缩写形式&#xff0c;是一个可以为null的整数类型。例如&#xff1a;int? num2 null;或者int? num3 10;都是合法的。 内存分配与存储 int?&#xff…...

DeepSeek-R1试用

最近DeepSeek太火了&#xff0c;对配置要求不高。刚好放假&#xff0c;下载试试。发现开源大模型的生态做的挺好的&#xff0c;几分钟就能在本地部署一个大模型。 配置 NVIDIA RTX 2060 6GB&#xff08;最低要求 NVIDIA GTX 1060 6GB &#xff09; 下载Ollama Ollama是一个…...

Vue 3 30天精进之旅:Day 06 - 表单输入绑定

引言 在前几天的学习中&#xff0c;我们探讨了事件处理的基本概念及其在Vue中的应用。今天&#xff0c;我们将进一步了解Vue的表单输入绑定。这是构建用户交互式应用的核心部分&#xff0c;使得我们能够方便地处理用户输入并实时更新数据。本文将介绍如何在Vue中实现单向和双向…...

[创业之路-269]:《创业讨论会》- 系统之韵:从麻雀到5G系统的共通性探索

关键词&#xff1a; 从系统的角度&#xff0c;麻雀、人体系统、企业系统、软硬件系统、软件系统、通信系统、5G系统是类似的&#xff1a; 都有&#xff1a;内在看不见的规律、外在显性各种现象 都是&#xff1a;输入、处理、输出 都是&#xff1a;静态、要素、组成、结构、组织…...

使用C#对指定的MYSQL数据库进行备份以及常见问题

最近在开发过程中&#xff0c;需要做个MYSQL数据库的备份&#xff0c;大致总结了一下代码&#xff0c;以及常见的坑 string bakName "database" DateTime.Now.ToString("yyyyMMddHHmmss") ".sql";//备份后的数据库文件名var bakupFilePath &q…...

探索人工智能在计算机视觉领域的创新应用与挑战

一、引言 1.1 研究背景与意义 在科技飞速发展的当下&#xff0c;人工智能&#xff08;Artificial Intelligence, AI&#xff09;已然成为引领新一轮科技革命和产业变革的重要驱动力。作为 AI 领域的关键分支&#xff0c;计算机视觉&#xff08;Computer Vision, CV&#xff0…...

Charles 4.6.7 浏览器网络调试指南:HTTPS抓包(三)

概述 在现代互联网应用中&#xff0c;网络请求和响应是服务交互的核心。对于开发者和测试人员来说&#xff0c;能够准确捕获并分析这些请求&#xff0c;是保证系统稳定性和性能的关键。Charles作为一个强大的网络调试工具&#xff0c;不仅可以捕获普通的HTTP请求&#xff0c;还…...

STM32 对射式红外传感器配置

这次用的是STM32F103的开发板&#xff08;这里面的exti.c文件没有how to use this driver 配置说明&#xff09; 对射式红外传感器 由一个红外发光二极管和NPN光电三极管组成&#xff0c;M3固定安装孔&#xff0c;有输出状态指示灯&#xff0c;输出高电平灯灭&#xff0c;输出…...

12 款开源OCR发 PDF 识别框架

2024 年 12 款开源文档解析框架的选型对比评测&#xff1a;PDF解析、OCR识别功能解读、应用场景分析及优缺点比较 这是该系列的第二篇文章&#xff0c;聚焦于智能文档处理&#xff08;特别是 PDF 解析&#xff09;。无论是在模型预训练的数据收集阶段&#xff0c;还是基于 RAG…...

危机13小时:追踪一场GitHub投毒事件

事件概要 自北京时间 2024.12.4 晚间6点起&#xff0c; GitHub 上不断出现“幽灵仓库”&#xff0c;仓库中没有任何代码&#xff0c;只有诱导性的病毒文件。当天&#xff0c;他们成为了 GitHub 上 star 增速最快的仓库。超过 180 个虚假僵尸账户正在传播病毒&#xff0c;等待不…...

CVE-2020-0796永恒之蓝2.0(漏洞复现)

目录 前言 产生原因 影响范围 漏洞复现 复现环境 复现步骤 防御措施 总结 前言 在网络安全的战场上&#xff0c;漏洞一直是攻防双方关注的焦点。CVE-2020-0796&#xff0c;这个被称为 “永恒之蓝 2.0” 的漏洞&#xff0c;一度引起了广泛的关注与担忧。它究竟是怎样的…...

游戏策划的分类

P3游戏策划分类 1.程序2.美术3.策划 程序&#xff1a;一般分为客户端程序和服务器程序 客户端程序一般负责游戏的前端画面表现 服务器程序负责游戏的后端运算 美术&#xff1a;角色原画&#xff0c;角色模型动作&#xff0c;场景原画&#xff0c;场景模型&#xff0c;UI设计&a…...

单片机基础模块学习——PCF8591芯片

一、A/D、D/A模块 A——Analog 模拟信号&#xff1a;连续变化的信号&#xff08;很多传感器原始输出的信号都为此类信号&#xff09;D——Digital 数字信号&#xff1a;只有高电平和低电平两种变化&#xff08;单片机芯片、微控制芯片所能处理的都是数字信号&#xff09; 下面…...

深入探索 HTML5 拖拽效果 API:打造流畅交互体验

在现代的 Web 开发中&#xff0c;交互性和用户体验一直是开发者关注的重点。HTML5 的拖拽效果 API (Drag and Drop API) 提供了一种非常直观的方式来让网页元素或文件能够被拖动并放置到页面的指定位置&#xff0c;极大提升了用户的交互体验。本篇文章将深入探讨如何使用 HTML5…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

2021-03-15 iview一些问题

1.iview 在使用tree组件时&#xff0c;发现没有set类的方法&#xff0c;只有get&#xff0c;那么要改变tree值&#xff0c;只能遍历treeData&#xff0c;递归修改treeData的checked&#xff0c;发现无法更改&#xff0c;原因在于check模式下&#xff0c;子元素的勾选状态跟父节…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

Selenium常用函数介绍

目录 一&#xff0c;元素定位 1.1 cssSeector 1.2 xpath 二&#xff0c;操作测试对象 三&#xff0c;窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四&#xff0c;弹窗 五&#xff0c;等待 六&#xff0c;导航 七&#xff0c;文件上传 …...

Vite中定义@软链接

在webpack中可以直接通过符号表示src路径&#xff0c;但是vite中默认不可以。 如何实现&#xff1a; vite中提供了resolve.alias&#xff1a;通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...

pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)

目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 &#xff08;1&#xff09;输入单引号 &#xff08;2&#xff09;万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...