Linux x86 ISO系统镜像定制

news/2025/1/8 18:29:52/文章来源:https://www.cnblogs.com/rebrobot/p/18660335

 

https://www.ctyun.cn/developer/article/564382087626821

 

 

一、流程简介

  1. 准备目标系统iso镜像,将其解压到某个目录下。(Linux中可以挂载后再复制光盘内容到目录下,或者Windows直接打开然后复制到共享目录下等方法)
  2. 添加需要新增的文件、脚本、软件包等到该目录下,可以自己创建新目录进行管理
  3. 配置kickstart文件,设置用户密码、磁盘分区、安装后运行脚本等
  4. 修改grub.cfg(UEFI安装模式)或isolinux.cfg(BOOT安装),在安装菜单栏选项中补充inst.ks配置,指定kickstart配置文件路径
  5. 通过genisoimage命令生成新镜像

二、定制镜像示例

(一)x86系统

  1. 解压iso镜像到某个目录下,几个关键的目录说明:
    1. configuration是自己创建的文件夹,将ks配置、shell脚本、驱动等文件都放在该目录中
    2. EFI放着UEFI模式安装时使用的引导文件
    3. isolinux放着BOOT模式安装时使用的
    4. Package放着所有的rpm包
  2. 将所需的shell脚本、驱动包等放入configuration中相应的目录下,如drivers、shell目录
  3. 将ks配置文件放到configuration/ks目录下,ks文件可以找一台已经安装好的系统,基于/root/anaconda-ks.cfg为基础进行修改,或者通过kickstart图形化工具配置生成
    kickstart官方文档介绍:第 27 章 Kickstart 安装 Red Hat Enterprise Linux 7 | Red Hat Customer Portal
    这里为BOOT和EFI安装模式分别创建了ks-server-7.cfg和ks-server-7-uefi.cfg的ks配置文件
  4. 修改ks配置文件,以BOOT安装模式的ks-server-7.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 --hostname=localhost.localdomain --activate
    #network  --bootproto=dhcp --device=eth0
    network  --bootproto=dhcp --device=ens33
    # Reboot after installation
    reboot
    # Root password,在这里设置root密码,使用sha512加密
    rootpw --iscrypted $6$16_CHARACTER_SAL$7J8EKTQ9M5Ds81llIXBThGsfeuvOdywLs/whlUgfiroltnTm8tPPULCauZGgB8jybcRJ7ILBSCY4VBA8RGUcZ/
    # SELinux configuration
    selinux --disabled
    # System services
    services --disabled="chronyd"
    # Do not configure the X Window System
    skipx
    # System timezone
    timezone Asia/Shanghai --isUtc --nontp
    # System bootloader configuration 需要保证系统有sda磁盘
    bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
    # Clear the Master Boot Record
    zerombr
    # Partition clearing information
    clearpart --all --initlabel# Disk partitioning information 磁盘自动分区,需要保证有sda磁盘,size单位为MB
    part /boot --fstype="ext4" --size=2001 --ondisk=sda
    part / --fstype="xfs" --grow --size=153601 --ondisk=sda
    part /home --fstype="xfs" --size=20480 --ondisk=sda#firewall --enabled --service=ssh# 指定需要预安装的包,@^minimal和@core的内容可以在光盘目录下的comps.xml查看
    %packages
    @^minimal
    @core
    # ...此处省略一些包
    %end%addon com_redhat_kdump --enable --reserve-mb='auto'
    %end# 安装后脚本,使用--nochroot将会在临时系统中执行,此时iso挂载在/run/install/repo,安装系统挂载在/mnt/sysimage
    # 可以在这里将iso中文件的拷贝到安装系统中,如果使用挂载的方式经测试有个问题是不确定iso挂载的盘符,例如有可能是/dev/cdrom、/dev/sdb等,没办法写死
    # --log可以指定日志到安装系统目录中
    %post --nochroot --log=/mnt/sysimage/root/ks-post-stage1.log
    # iso mount on /run/install/repo, centos mount on /mnt/sysimage
    mkdir -p /mnt/sysimage/root/ks-install/drivers
    # 拷贝一些驱动文件和脚本到安装系统中
    cp /run/install/repo/configuration/drivers/xxx.zip /mnt/sysimage/root/ks-install/drivers
    %end# 安装后脚本,不指定--nochroot,此时将会在安装系统中执行
    # 可以在这里进行一些脚本的运行,配置文件、服务等等操作,等同于开机后的shell环境
    # --log可以指定日志到安装系统目录中
    %post --log=/root/ks-post-stage2.log
    sed -i '/ssh/d' /etc/firewalld/zones/public.xml || true
    # exec shell ...%end
  5. 修改启动引导文件
    对于BOOT安装模式,修改iso中的isolinux/isolinux.cfg,找到 Install CentOS 7 菜单,补充s配置inst.ks=hd:LABEL=CentOS\x207\x20x86_64:/configuration/ks/ks-server-7.cfg,hd:LABEL=CentOS\x207\x20x86_64为安装介质所在盘符

  6. 对于UEFI安装模式,修改iso中的EFI/BOOT/grub.cfg,找到 Install CentOS 7 菜单,补充配置inst.ks=hd:LABEL=CentOS\x207\x20x86_64:/configuration/ks/ks-server-7-uefi.cfg
  7. genisoimage生成镜像
    #!/bin/sh
    # 指定需要制作的目标镜像的生成路径
    current_dir=`pwd`
    package_name=$current_dir/centos.iso 
    # 指定iso镜像解压并修改后的所在路径
    cdrom=$current_dir/iso_dir
    cd $cdrom
    rm -rf repodata/
    createrepo -g comps.xml ./
    genisoimage -joliet-long -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -cache-inodes -T -eltorito-alt-boot -e images/efiboot.img -no-emul-boot -V "CentOS 7 x86_64" -o $package_name $cdrom
    

 

genisoimage -joliet-long -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -cache-inodes -T -eltorito-alt-boot -e images/efiboot.img -no-emul-boot -V "CentOS 7 x86_64" -o $package_name $cdrom

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

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

相关文章

前端之canvas实现电子签约完成线上签署功能

电子签名,下载带有签名的合同png/pdf格式,前端/vue实现电子签功能。最近发现现在租房还是签合同,越来越多采用电子签约的方式进行,好处不用多说节约成本,节约时间。抱着好奇的心理,尝试自己动手实现一个电子签。原来并不复杂主要通过了canvas绘画能力进行实现的。最近发现…

git怎么玩

首先如果是windos下个git bash 1.自己用git,用于本地和github的交互!

电流传感器HLSR50-P KX022-1020加速度计 LM27761DSGR稳压器 MAX14752EUE SAF7755HV音频 DSP规格、产品特征、及应用

分享电流传感器HLSR50-P KX022-1020加速度计 LM27761DSGR稳压器 MAX14752EUE SAF7755HV音频 DSP规格、产品特征、及应用1、HLSR50-P是一款开环霍尔效应电流传感器,主要用于电子测量直流、交流和脉冲电流,同时确保初级和次级电路之间的电隔离。HLSR50-P 电流传感器规格用于测量…

招行面试: 分布式调度 设计,要考虑 哪些问题?

本文原文链接 文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录 博客园版 为您奉上珍贵的学习资源 : 免费赠送 :《尼恩Java面试宝典》 持续更新+ 史上最全 + 面试必备 2000页+ 面试必备 + 大厂必备 +涨薪必备 免费赠送 :《尼恩技术圣经+高并发系列PDF》 ,帮你 …

Idea中集成SceneBuilder以及使用讲解

目录1 Idea中集成SceneBuilder1.1 Idea中集成SceneBuilder1.2 SceneBuilder1.2.1 添加组件ControlsFX1.2.1.1页面展示1.2.2 hierarchy displays1.3 简单使用1.3.1 搭建项目1.3.2 fxml文件1.3.3 生成exe文件2 SceneBuilder页面讲解2.1 Properties窗口预览2.2 Text面板2.2.1 Text…

JavaFX基础之环境配置,架构,FXML

目录1 JavaFX1.1 简介1.2 环境准备1.2.1 手动管理依赖1.2.2 maven或Gradle管理1.3 JavaFX 架构1.3.1 JavaFX 架构图1.3.2 JavaFX组件1.3.2.1 舞台1.3.2.2 场景1.3.2.3 控件1.3.2.4 布局1.3.2.5 图表1.3.2.6 2D图形1.3.2.7 3D图形1.3.2.8 声音1.3.2.9 视频1.4 简单使用1.5 FXML1…

编译原理-期末

第一章编译原理的基础问答设 A机器 上有 语言L 的编译程序,可以用它来编制B机器上的语言的编译程序,试用 T形图 进行表示。 通过自展完成C语言的编写,试描述这个过程。 画出编译程序的总体结构图,简要说明每个模块的功能 如何理解“单词是程序设计语言中具有独立意义的最小…

ESP8266及继电器电路图解析

ESP8266及继电器介绍 ESP8266概述:ESP8266 是一款低成本、低功耗的 Wi-Fi 芯片,由乐鑫信息科技(Espressif Systems)开发。它集成了 TCP/IP 协议栈,能够实现串口与 Wi-Fi 之间的转换,广泛应用于物联网(IoT)领域,如智能家居、智能穿戴、工业控制等。 特点:低功耗:在睡…

docker-compose部署下Fastapi中使用sqlalchemy和Alembic

本篇介绍使用Fastapi + sqlalchemy + alembic 来完成后端服务的数据库管理,并且通过docker-compose来部署后端服务和数据库Mysql。包括:1. 数据库创建,数据库用户创建 2. 数据库服务发现 3. Fastapi 连接数据库 4. Alembic 连接数据库 5. 服务健康检查本篇介绍使用Fastapi +…

误删除了表?PolarDB MySQL帮你恢复!完成就送2025蛇年春联!

由于DDL语句无法回滚,如果误删除了表(例如DROP TABLE),可能会导致数据丢失。PolarDB MySQL提供表回收站的功能,删除的表会被临时转移到表回收站。 通过本次操作,带您体验如何使用PolarDB MySQL提供表回收站的功能,从表回收站恢复误删的表。 完成任务赢奖励,活动火热进行…

《墨香古韵:传统与现代的完美融合》——传世经典的美,划破时空的风格和型

《墨香古韵:传统与现代的完美融合》 由“解锁AI超能”的邦林AIGC出品 一直叹服古人用那样少的笔墨,就可以塑造一个让人无限联想、余味无穷的作品。 而上帝造人,诸多完美,唯独留下一个大大的Bug, 那就是人想象不出自己没见闻过的东西,而有大师也曾说过,人的想象力总是先于…

学习 - Linux - Centos安装jdk8

Centos安装jdk8 安装包下载地址: 通过网盘分享的文件:jdk 链接: https://pan.baidu.com/s/1dQTMZk7foPZhOcw55QM_lQ?pwd=sky1 提取码: sky1 二、上传至Centos系统解压文件并移动到usr/local目录下 解压 tar zxvf jdk-8u181-linux-x64.tar.gz 移动 mv jdk1.8.0_181 /usr/loca…