当前位置: 首页 > 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…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络&#xff0c;将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具&#xff0c;支持 Chrome、Firefox、Safari 等主流浏览器&#xff0c;提供多语言 API&#xff08;Python、JavaScript、Java、.NET&#xff09;。它的特点包括&a…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增&#xff1a;通道注意力模块&#xff08;SE模块&#xff09; class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...