CentOS iso 镜像定制

发布时间:2026/9/14 12:49:10

CentOS iso 镜像定制 CentOS iso 镜像定制内核 kernelimages/pxeboot/vmlinuz根文件系统 initrdimages/pxeboot/initrd.img开机引导系统安装的内核vmlinuz及RAM镜像(initrd.img)在引导系统时会载入内存给系统的安装提供一个Linux安装引导平台文件夹中还有在不同模式下显示信息的boot.msg文件Anaconda是RedHat、CentOS、Fedora等Linux的安装管理程序使用Python编写。可以提供文本、图形等安装管理方式并支持Kickstart等脚本提供自动安装的功能。mksquashfs /mnt /root/install.img –all-root -noF usr/bin/anaconda 安装程序的主执行文件 usr/lib/anaconda/iw/ 图形安装模式的模块 usr/lib/anaconda/textw/ 文本安装模式的模块。 usr/share/anaconda/pixmaps/ 图形安装过程的图片 usr/share/anaconda/ui/ 安装过程中显示的文字 usr/lib/anaconda/dispatch.py 来控制整个安装的流程当一个Next或Back按钮被单击时的跳转 usr/lib/anaconda/vnc.py 用于控制对VNC进行设置当在安装过程中请求了VNC时1、下载并上传CentOS-7-x86_64-Minimal-1810.iso到虚拟机。centos下载地址2、创建目录media并挂载iso。mkdir /media mount CentOS-7-x86_64-Minimal-1810.iso /media3、创建镜像目录并拷贝/media下的所有文件。mkdir /root/TMPOS cp -pRf /media/* /root/TMPOS/ cp /media/.discinfo /root/TMPOS/ cp /media/.treeinfo /root/TMPOS/4、修改centos-release可选。iso 系统定制%define product_family CentOS http://rpm.pbone.net/index.php3/stat/3/srodzaj/2/search/centos-release-7-3.1611.el7.centos.src.rpm5、修改centos-logos可选。tar -xf centos-logos-70.0.6.tar.xz tar -cvf centos-logos-70.0.6.tar.xz centos-logos-70.0.6/ cd centos-logos-70.0.6/pixmaps6、修改isolinux可选。mkdir tmp cp initrd.img tmp/ xz -dc initrd.img |cpio -id vim .buildstamp ... ProductCentOS ... cd usr/share/pixmaps find . |cpio -c -o |xz -9 --formatlzma initrd.img7、修改LiveOS可选。cd LiveOS/ unsquashfs squashfs.img cd squashfs-root mkdir t mount -o rw rootfs.img t cd usr/share/anaconda/pixmaps/ cd usr/share/anaconda/pixmaps/rnotes/en/ vim etc/os-release vim etc/redhat-release vim etc/system-release vim etc/centos-release vim usr/lib64/python2.7/site-packages/pyanaconda/ui/gui/hubs/progress.py #self.set_warning(_(Use of this product is subject to the license agreement found at %s) % eulaLocation) umoun t rm -rf t rm -rf squashfs.img mksquashfs squashfs-root/ squashfs.img -all-root -noF rm -rf squashfs-root8、准备ks.cfg文件 isolinux/ks.cfg。安装前运行自定义脚本 %pre表示系统安装前此时ISO镜像文件被挂载到内存中Linux的/mnt/source 安装后运行自定义脚本 %post 在系统安装后执行 –不带参数其实就是在真实的操作系统里操作。 –nochroot 已安装的真实操作系统被挂载到内存虚拟操作系统中的/mnt/sysimage目录。这个参数的用途主要是配合%pre使用的。先将光盘里的文件copy到内存运行的虚拟操作系统再从内存虚拟操作系统copy到已安装的真实操作系统操作。 %post --nochroot mkdir /media mount /dev/cdrom /media/ cp /media/test1.txt /mnt/sysimage/root/ %end [说明]上面命令实现了从ISO镜像中拷贝文本文件到安装好的真实操作系统中。 #versionDEVEL # Install OS instead of upgrade install # Keyboard layouts keyboard --vckeymapus --xlayoutsus # Reboot after installation reboot # Root password rootpw 123456 user --namekyos --password123456 --groupsusers # System timezone timezone Asia/Shanghai --isUtc --nontp # System language lang en_US.UTF-8 # Firewall configuration firewall --disabled # SELinux configuration selinux --disabled # System authorization information auth --useshadow --passalgosha512 # Use graphical install #graphical text firstboot --enable # SELinux configuration selinux --disabled # ignore unsupported hardware warning unsupported_hardware # SKIP CONFIGURING X skipx # Network information network --hostnamekyos #Allow partition the system as needed %include /tmp/partition.ks %pre #!/bin/sh drives for drv in ls -1 /sys/block | grep sd\|hd\|vd\|cciss; do if (grep -q 0 /sys/block/${drv}/removable); then decho ${drv} | sed -e s/!/\// drives${drives} ${d} fi done default_driveecho ${drives} | awk {print $1} act_memcat /proc/meminfo | grep MemTotal | awk {printf(%d,$2/1024)} if [ $act_mem -ge 16384 ];then act_mem16384 fi echo /tmp/partition.ks # System bootloader configuration echo bootloader --locationmbr --driveorder${default_drive} /tmp/partition.ks # Clear the Master Boot Record echo zerombr /tmp/partition.ks # Partition clearing information echo clearpart --all --drives${default_drive} /tmp/partition.ks echo part /boot --fstypexfs --ondisk${default_drive} --asprimary --size500 /tmp/partition.ks echo part /boot/efi --fstypeefi --ondisk${default_drive} --asprimary --size500 /tmp/partition.ks echo part swap --fstypeswap --ondisk${default_drive} --size${act_mem} /tmp/partition.ks echo part / --fstypexfs --grow --ondisk${default_drive} --size1 /tmp/partition.ks %end %packages core kolla %end %post --log/var/log/post.log #!/bin/bash #change net device to ethx #sed -i s/quiet/quiet net.ifnames0 biosdevname0/g /etc/default/grub #grub2-mkconfig -o /boot/grub2/grub.cfg cd /etc/sysconfig/network-scripts before_network_script$(ls ifcfg-*|grep -v lo|grep -v eth*) net_dev_num$(ls ifcfg-*|grep -v lo|wc -l) rm -rf $before_network_script for ((i0;i$net_dev_num;i)); do echo TYPEEthernet BOOTPROTOstatic DEVICEeth$i ONBOOTno DNS1 IPADDR GATEWAY NETMASK |tee /etc/sysconfig/network-scripts/ifcfg-eth$i done #add pcadmin to sudoers echo tmpos ALL(ALL) ALL /etc/sudoers # add tmpos to group users usermod -a -G users tmpos # kolla systemctl disable postfix systemctl disable NetworkManager systemctl enable docker systemctl enable ntpd.service mkdir -p /etc/systemd/system/docker.service.d tee /etc/systemd/system/docker.service.d/kolla.conf EOF [Service] MountFlagsshared EOF cp -r /usr/share/kolla-ansible/etc_examples/kolla /etc/kolla/ cp -r /usr/share/kystack /opt %end9、修改isolinux.cfg文件,isolinux/isolinux.cfg。找到lable linux在append里面添加kscdrom:/isolinux/ks.cfg net.ifnames0 biosdevname0修改LABLETMPOS在之后构建TMPOS时-V参数会用到。 net.ifnames0 biosdevname0 修改网卡名为ethx。 ... label linux menu label ^Install TMPOS kernel vmlinuz # append initrdinitrd.img inst.stage2hd:LABELCentOS\x207\x20x86_64 quiet append initrdinitrd.img kscdrom:/isolinux/ks.cfg inst.stage2hd:LABELTMPOS quiet net.ifnames0 biosdevname0 ... [说明]斜体部分可选代表是否在安装时对网络部分进行提示交互。 其他相关label可以根据需求注释掉。 注意点 1memu label 后面的内容是在光盘引导起来菜单的内容^后面的字母是菜单的快捷键 2通过inst.ks关键字指明ks.cfg文件位置 3inst.stages2标识的是系统按照介质位置这里使用hd:LABEL表明寻找的是label为TMPOS的安装介质使用LABEL关键字的好处是可以精确指定安装介质为什么label是TMPOS是因为我在制作光盘镜像的时候指定的方法在后面有介绍。 default vesamenu.c32 timeout 10 display boot.msg # Clear the screen when exiting the menu, instead of leaving the menu displayed. # For vesamenu, this means the graphical background is still displayed without # the menu itself for as long as the screen remains in graphics mode. menu clear menu background splash.png menu title KYOS menu vshift 8 menu rows 18 menu margin 8 #menu hidden menu helpmsgrow 15 menu tabmsgrow 13 # Border Area menu color border * #00000000 #00000000 none # Selected item menu color sel 0 #ffffffff #00000000 none # Title bar menu color title 0 #ff7ba3d0 #00000000 none # Press [Tab] message menu color tabmsg 0 #ff3a6496 #00000000 none # Unselected menu item menu color unsel 0 #84b8ffff #00000000 none # Selected hotkey menu color hotsel 0 #84b8ffff #00000000 none # Unselected hotkey menu color hotkey 0 #ffffffff #00000000 none # Help text menu color help 0 #ffffffff #00000000 none # A scrollbar of some type? Not sure. menu color scrollbar 0 #ffffffff #ff355594 none # Timeout msg menu color timeout 0 #ffffffff #00000000 none menu color timeout_msg 0 #ffffffff #00000000 none # Command prompt text menu color cmdmark 0 #84b8ffff #00000000 none menu color cmdline 0 #ffffffff #00000000 none # Do not display the actual menu unless the user presses a key. All that is displayed is a timeout message. menu tabmsg Press Enter to continue. menu separator # insert an empty line menu separator # insert an empty line label linux menu label ^Install TMPOS menu default kernel vmlinuz append initrdinitrd.img inst.stage2hd:LABELTMPOS quiet net.ifnames0 biosdevname0 inst.kshd:LABELTMPOS:/isolinux/ks.cfg menu separator # insert an empty line menu separator # insert an empty line menu end10、安装相关软件。yum -y install xorriso syslinux isomd5sum squashfs-tools createrepo11、准备efi启动。mkdir -p /root/TMPOS/efi_image dd bs1M count100 if/dev/zero of/root/TMPOS/efiboot.img mkfs.vfat -n EFI /root/TMPOS/efiboot.img umount -l /root/TMPOS/efi_image || true mount /root/TMPOS/efiboot.img /root/TMPOS/efi_image echo default0 /root/TMPOS/EFI/BOOT/BOOTX64.conf echo timeout 60 /root/TMPOS/EFI/BOOT/BOOTX64.conf echo hiddenmenu /root/TMPOS/EFI/BOOT/BOOTX64.conf echo title Install TMPOS /root/TMPOS/EFI/BOOT/BOOTX64.conf echo kernel /vmlinuz biosdevname0 showmenuyes inst.stage2hd:LABELTMPOS quiet inst.kshd:LABELTMPOS:/isolinux/ks.cfg /root/TMPOS/EFI/BOOT/BOOTX64.conf echo initrd /initrd.img /root/TMPOS/EFI/BOOT/BOOTX64.conf 修改 /root/TMPOS/EFI/BOOT/grub.cfg 添加 ... menuentry Install TMPOS --class fedora --class gnu-linux --class gnu --class os { linuxefi /images/pxeboot/vmlinuz inst.stage2hd:LABELTMPOS quiet net.ifnames0 biosdevname0 inst.kshd:LABELTMPOS:/isolinux/ks.cfg initrdefi /images/pxeboot/initrd.img ... cp -r /root/TMPOS/isolinux/vmlinuz /root/TMPOS/efi_image/ cp -r /root/TMPOS/isolinux/initrd.img /root/TMPOS/efi_image/ cp -rf /root/TMPOS/EFI/ /root/TMPOS/efi_image/ umount /root/TMPOS/efi_image mv -f /root/TMPOS/efiboot.img /root/TMPOS/images/ rm -rf /root/TMPOS/efi_image/12、准备安装源。1将需要的源追加复制到/root/TMPOS/Packages中。 2) 清除/root/TMPOS/repodata 中除了*.comps.xml外的其他文件并将新加的包名写入*.comps.xml里 packagereq typedefaultntp/packagereq packagereq typedefaultvim-enhanced/packagereq packagereq typedefaultiftop/packagereq packagereq typedefaulttelnet/packagereq packagereq typedefaultnmap/packagereq packagereq typedefaultmlocate/packagereq packagereq typedefaultnet-tools/packagereq packagereq typedefaultatop/packagereq packagereq typedefaultiftop/packagereq packagereq typedefaultvim/packagereq packagereq typedefaultwget/packagereq packagereq typedefaulttmux/packagereq packagereq typedefaultiotop/packagereq packagereq typedefaulthtop/packagereq packagereq typedefaultexpect/packagereq packagereq typedefaulttree/packagereq packagereq typedefaultpython2-pip/packagereq packagereq typedefaultepel-release/packagereq /packagelist /group group idkolla/id nameKolla/name name xml:langen_USKolla/name descriptionKolla packages/description defaulttrue/default uservisibletrue/uservisible packagelist packagereq typedefaultansible/packagereq packagereq typedefaultkolla-ansible/packagereq packagereq typedefaultdocker-ce/packagereq packagereq typedefaultpython-docker-py/packagereq packagereq typedefaultpython2-pbr/packagereq packagereq typedefaultpython2-oslo-utils/packagereq packagereq typedefaultpython2-oslo-config/packagereq packagereq typedefaultpython2-jinja2/packagereq packagereq typedefaultopenstack-selinux/packagereq packagereq typedefaultpython2-openstackclient/packagereq packagereq typedefaultpython2-magnumclient/packagereq /packagelist /group 3构建源 yum -y install createrepo cd /root/TMPOS createrepo -g repodata/*comps.xml . 4) 在/root/TMPOS/isolinux/ks.cf中添加相应组名 %packages core kolla %end13、构建TMPOS。mkisofs参数简介 -o 指定映像文件的名称。 -o /root/boot.iso 创建完后放在哪 -b指定在制作可开机光盘时所需的开机映像文件。 -c 制作可开机光盘时会将开机映像文件中的no-eltorito-catalog全部内容作成一个文件。 -c isolinux/boot.cat 指明引导时显示菜单的文件 -no-emul-boot 非模拟模式启动。 -boot-load-size 4 设置载入部分的数量。 -boot-info-table 在启动的图像中现实信息。 -joliet-long 使用 joliet 格式的目录与文件名称长文件名支持。 -R 或 -rock 使用 Rock RidgeExtensions 。 -J 或 -joliet 使用 Joliet 格式的目录与文件名称。 -v 或 -verbose 执行时显示详细的信息。 -T 或-translation-table 建立文件名的转换表适用于不支持 Rock Ridge Extensions 的系统上。 -V “CentOS 6.6 X86_64 boot disk”指明光盘标签为”CentOS 6.6 X86_64 boot disk“ xorriso -as mkisofs \ -V TMPOS -p tmp \ -J -R \ -graft-points \ -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table \ -isohybrid-mbr /usr/share/syslinux/isohdpfx.bin \ -eltorito-alt-boot -e images/efiboot.img -no-emul-boot \ -isohybrid-gpt-basdat \ -o /root/TMPOS/TMPOS.iso /root/TMPOS/ \ --boot-catalog-hide implantisomd5 /root/TMPOS/TMPOS.iso14、make.sh
延伸阅读

更多相关文章

2026/9/7 20:20:52

停车场查询-全国停车场实时查询-停车场实时查询API接口使用指南

前言 本文介绍一款停车场查询工具,可根据城市、周边查询停车场信息,包括:停车场名称、省份、城市、区县、详细地址、经纬度、停车场类型、收费情况、总车位数、剩余车位数。 API介绍 戳这里查看详情 根据城市 请求参数 名称类型必须说明…

2026/9/12 2:13:56

怀旧游戏集成镜像实战指南:虚拟机选择、环境配置与问题排查

这类老游戏、老系统的集成镜像,最核心的价值不是“能用”,而是“开箱即用”。你不需要自己折腾DOS环境、找驱动、配声卡、解决兼容性问题,作者已经把《霹雳酷乐猫2002》这款游戏和它所需的完整运行环境,打包成了一个或多个虚拟机镜…

2026/9/14 12:44:36

基于轻量化CNN的草莓品质检测系统设计与实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/14 12:44:36

低代码平台核心技术解析与企业实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/14 12:44:35

贪心算法实现文本两端对齐的技术解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/14 12:44:35

Android序列化方案对比:Serializable、Parcelable与kotlinx.serialization

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/14 12:44:35

ReasoningBank:复杂推理NLP框架解析与实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/14 12:39:35

GeneratePress 图片对齐精调:CSS 覆盖实战指南

如果你折腾过 GeneratePress(后面统一叫 GP),应该能感受到它最大的特点就是“省心”:轻量、加载快、默认样式干净。但干净的另一面是什么?就是很多东西你得自己动手补。尤其是图片对齐这个事儿,默认情况下它…

2026/9/14 2:17:50

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/14 0:03:22

KCF目标跟踪算法与OTB工程实现:毕业设计实战解析

简介:这是一份基于KCF核相关滤波算法、融合尺度池与抗遮挡处理的目标检测跟踪MATLAB完整源码,主要面向计算机相关专业准备毕业设计、课程设计或期末大作业的学生,也适合需要项目实战练习的初学者。源码在OTB数据集上完成验证,能够…

2026/9/14 0:03:22

语音情感识别实战:Keras实现LSTM、CNN、SVM与MLP多模型对比

简介:面向语音情感识别入门与进阶开发者,这份基于Keras的项目源码完整实现了LSTM、CNN、SVM、MLP四种模型,兼容Python3.8与Keras/TensorFlow2环境。压缩包内含49个文件,大小约70.31MB,主体包括Python脚本、yaml/json配…

2026/9/14 11:59:31

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/12 14:32:17

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/14 11:22:57

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码