定制Centos7.9镜像
Ps:因为工作内容;有一部份是需要重装系统;系统版本镜像为centos7.9。可每次装完都需要下载一些基础包;最近因为设备过多;网卡名称太乱;导致做后续配置太繁琐;不规整;索性自己定制个系统;
# mkdir /root/iso
# mkdir /MISO
# yum install createrepo mkisofs isomd5sum squashfs-tools
# wget https://mirrors.163.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-Minimal-2009.iso
# mount -o loop,rw CentOS-7-x86_64-Minimal-2009.iso /MISO
# cp -a /MISO/* /root/iso/
default vesamenu.timeout 100
##安装系统时的默认引导时间; 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 ###安装系统背景图片;更换背景界面;替换为需要的图片,保持文件名不变,图片大小640x480
menu title SinoCache ISO 7.9 ##可以定制欢迎标题
menu vshift 8
menu rows 18
menu margin 8
#menu hidden
menu helpmsgrow 15
menu tabmsgrow 13
………………………………………………
label linux
menu label ^Install SinoCache ISO 7.9 ###定制系统标题
menu default ###默认引导选项
kernel vmlinuz
append initrd=initrd.img ks=cdrom:/isolinux/ks.cfg inst.stage2=hd:LABEL=CentOS quiet net.ifnames=0 biosdevname=0
##ks=cdrom:/isolinux/ks.cfg :创建自动化安装配置文件;可以用系统默认生成的anaconda-ks.cfg文件。
##inst.stage2=hd:LABEL= :为安装介质位置,hd:LABEL为介质标签,例如:CentOS
##net.ifnames=0 biosdevname=0 :用于禁用centos7的”一致性网络设备命名法”;centos6系统网卡命名为ethX形式;centos7系统网卡名各种各样在工作中太无序了;很烦;使用这个参数可以将网卡名改为ethX ###可以将这个标签选项注销。
#label check
# menu label Test this ^media & install SinoCache ISO 7.9
# kernel vmlinuz
# append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 rd.live.check quiet net.ifnames=0 biosdevname=0
#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
#使用CD-ROM安装介质
cdrom
# 使用图形化安装
graphical
# 在第一次启动时运行安装代理
firstboot --enable
ignoredisk --only-use=sda
# 键盘布局
keyboard --vckeymap=us --xlayouts='us'
# 设置语言
lang en_US.UTF-8 # Network information
network --bootproto=dhcp --device=eth0 --onboot=off --ipv6=auto
network --bootproto=dhcp --device=eth1 --onboot=off --ipv6=auto
network --bootproto=dhcp --device=eth2 --onboot=off --ipv6=auto
network --bootproto=dhcp --device=eth3 --onboot=off --ipv6=auto
network --bootproto=dhcp --device=eth4 --onboot=off --ipv6=auto
network --bootproto=dhcp --device=eth5 --onboot=off --ipv6=auto
#network --device=Wan --bondopts=mode=802.3ad,xmit_hash_policy=layer3+4 --bondslaves=eth0,eth3 --onboot=yes
network --hostname=ngaa.com.cn # 设置root密码
rootpw --iscrypted $6$sNStQWknxzURmZpv$PEFIX7tG1McnzRsGBUm4UnOyRr4Kg/R8CHcujTbPYMvZRfxVWd8aetfP7gWRHhHobKMay4rGQO6Uxq2CoZ7QF1
# System services
services --enabled="chronyd"
# 关闭 SELinux
selinux --disabled
# 关闭防火墙
firewall --disabled
# 系统服务开机自启
services --enabled="zabbix_agentd,sshd"
# 设置时区
timezone Asia/Shanghai --isUtc
# 系统引导配置
bootloader --append="console=tty0 audit=0 selinux=0 net.ifnames=0 biosdevname=0 crashkernel=auto" --location=mbr --boot-drive=sda
# 清空主引导分区记录MBR
zerombr
# 清除分区信息
clearpart --all --initlabel # 硬盘分区信息
part / --fstype="xfs" --ondisk=sda --size=102400
part /boot --fstype="xfs" --ondisk=sda --size=300
part swap --fstype="swap" --ondisk=sda --size=32768
part /data/cache1 --fstype="xfs" --ondisk=sda --size=92458 %packages
@^minimal
@core
chrony
kexec-tools
%end %addon com_redhat_kdump --enable --reserve-mb='auto'
%end %post
#配置sshd
/bin/sed -i '13a Port 7346' /etc/ssh/sshd_config; \\
/bin/sed -i '/PermitRootLogin /d' /etc/ssh/sshd_config; \\
/bin/sed -i '32a PermitRootLogin yes' /etc/ssh/sshd_config; \\
/bin/sed -i '59a PasswordAuthentication yes' /etc/ssh/sshd_config; \\
/bin/sed -i '/GSSAPIAuthentication /d' /etc/ssh/sshd_config; \\
/bin/sed -i '71a GSSAPIAuthentication no' /etc/ssh/sshd_config; \\
/bin/sed -i '/UsePAM /d' /etc/ssh/sshd_config; \\
/bin/sed -i '82a UsePAM yes' /etc/ssh/sshd_config; \\
/bin/sed -i '/UseDNS /d' /etc/ssh/sshd_config; \\
/bin/sed -i '98a UseDNS no' /etc/ssh/sshd_config; \\ #disable NetworkManager
systemctl stop NetworkManager
systemctl disable NetworkManager #配置PAM会话检查
cat > /etc/pam.d/sshd << EOF
#%PAM-1.0
auth required pam_sepermit.so
auth include password-auth
account required pam_nologin.so
account include password-auth
password include password-auth
# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
session required pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_selinux.so open env_params
session optional pam_keyinit.so force revoke
session include password-auth
EOF #配置DNS
echo 'nameserver 114.114.114.114' > /etc/resolv.conf
%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
%end reboot
##重装完系统自动重启。
%addon、%packages、%pre 和 %post 部分必须以 %end 结尾,否则安装程序会拒绝 Kickstart 文 件。
[main]
cachedir=/var/cache/yum/ ##将缓存目录做修改;原来目录太深了;·
keepcache=1 ##将原来的值0改为1(表示安装后保留软件包;为的是下载一些新系统预安装的软件;如wget等)
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
# yum -y install mtr vim net-tools wget iptables-services tcpdump traceroute zabbix_agentd iptraf-ng bind-utils ipmitool pciutils rsync
###上面的软件rpm包(包括依赖包)都会在/var/cache/yum/*/packages/目录下; *代表所使用的yum源仓库名称;根据自己使用yum仓库来决定。
[root@localhost packages]# pwd
/var/cache/yum/ali-updates/packages
[root@localhost packages]# ll | head -n5
total 359436
-rw-r--r--. 1 root root 1038100 Dec 1 09:13 bash-4.2.46-35.el7_9.x86_64.rpm
-rw-r--r--. 1 root root 1146744 Dec 1 09:13 bind-export-libs-9.11.4-26.P2.el7_9.8.x86_64.rpm
-rw-r--r--. 1 root root 161096 Dec 1 09:13 bind-libs-9.11.4-26.P2.el7_9.8.x86_64.rpm
-rw-r--r--. 1 root root 1179928 Dec 1 09:13 bind-libs-lite-9.11.4-26.P2.el7_9.8.x86_64.rpm
[root@localhost packages]# cp -a ./* /root/iso/Package
# cd /root/iso/repodata
# vim *-minimal-x86_64-comps.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE comps PUBLIC "-//CentOS//DTD Comps info//EN" "comps.dtd">
<comps>
<group>
<id>core</id>
<name>Core</name>
<name xml:lang="af">Kern</name>
…………………………
<name xml:lang="zh_TW">核心</name>
<name xml:lang="zu">Okuyikhona</name>
<description>Smallest possible installation.</description>
<description xml:lang="as">ন্যূনতম ইনস্টল।</description>
…………………………
<description xml:lang="zh_TW">最小型安裝。</description>
<default>false</default>
<uservisible>false</uservisible>
<packagelist>
<packagereq type="mandatory">audit</packagereq>
<packagereq type="mandatory">basesystem</packagereq>
<packagereq type="mandatory">bash</packagereq>
………………………………
<packagereq type="mandatory">yum</packagereq>
<packagereq type="default">aic94xx-firmware</packagereq>
<packagereq type="default">alsa-firmware</packagereq>
………………………………
<packagereq type="default">ql23xx-firmware</packagereq>
<packagereq type="default">rdma</packagereq>
<packagereq type="default">vim-enhanced</packagereq>
<packagereq type="default">net-tools</packagereq>
<packagereq type="default">tcpdump</packagereq>
<packagereq type="default">mtr</packagereq>
<packagereq type="default">iptabels-services</packagereq>
<packagereq type="default">traceroute</packagereq>
<packagereq type="default">ipmitool</packagereq>
<packagereq type="default">wget</packagereq>
<packagereq type="default">zabbix_agentd</packagereq>
<packagereq type="default">iptraf-ng</packagereq>
<packagereq type="default">ansible</packagereq>
<packagereq type="default">rsync</packagereq>
<packagereq type="default">pciutils</packagereq>
<packagereq type="default">kernel-devel</packagereq>
<packagereq type="default">kernel-headers</packagereq>
<packagereq type="optional">tboot</packagereq>
</packagelist>
</group>
<environment>
<id>minimal</id>
<name>Minimal Install</name>
<name xml:lang="as">নূন্যতম ইনস্টল</name>
…………………………
<description xml:lang="zh_CN">基本功能。</description>
<description xml:lang="zh_TW">基本功能。</description>
<display_order>5</display_order>
<grouplist>
<groupid>core</groupid>
<groupid>core</groupid>
</grouplist>
</environment>
</comps>
###在default标签下写自己要下载的软件。前提是制作目录/root/iso/Package/下有相应的rpm及依赖包。
# cd /root/iso/
# createrepo -g repodata/*-c7-minimal-x86_64-comps.xml .
###注意当有新包加入,或者更新*comps.xml文件,均需要重新生成repodata文件夹
unsquashfs /root/iso/LiveOS/squashfs.img
#会在root家用户目录下;出现一个squashfs-root/
mount -o loop,rw squashfs-root/LiveOS/rootfs.img /media
#把解压后的文件进行挂载,然后操作 #将解压后的文件重新打包
#mksquashfs squashfs-root/ squashfs.img
并将生成的squashfs.img替换原来的/root/iso/LiveOS/squashfs.img
# mkisofs -o /root/cnetos-7.9.iso -input-charset utf-8 -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T -joliet-long -V CentOS /root/iso/
## 注意参数中的-V,和上面的isolinux.cfg文件有关。
感谢这几位的博客及官网文档;
Kickstart官网文档 :https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/7/html/installation_guide/chap-installing-using-anaconda-x86
博客
https://www.cnblogs.com/yiy520/p/13307030.html
https://ieevee.com/tech/2016/08/20/kickstart.html
https://www.wumingx.com/linux/centos-iso.html
https://www.cnblogs.com/panyouming/p/8401038.html
https://www.jianshu.com/p/0edb49c3e9b4
https://blog.51cto.com/boytnt/2147184
https://www.cnblogs.com/yanh0606/p/10910808.html
定制Centos7.9镜像的更多相关文章
- Docker上定制CentOS7镜像
原文:Docker上定制CentOS7镜像 前言: 环境:centos7.5 64 位 正文: 第一步:下载centos7镜像 docker pull centos 第二步:建立centos7的容器 ...
- #openstack centos6 centos7 kvm镜像制作
#openstack centos6 centos7 kvm 镜像制作 openstack windows 2008镜像 制作 http://www.cnblogs.com/elvi/p/800129 ...
- 手把手教你从安装CentOS7.4镜像开始,搭建IoT视频监控系统
摘要:在CentOS7.4服务器版本的环境下安装nginx服务器.配置文件服务器.流媒体服务器. 本文分享自华为云社区<华为云ECS服务器安装CentOS7.4镜像,部署GINX服务器.搭建物联 ...
- 自定制Centos7.3系统镜像(ISO)
本文主要介绍如何根据官方的Centos镜像文件,在保留原有默认安装的RPM包的基础下,添加自己所需要的RPM包的,最终生成一个自定制版的ISO,节省了宝贵的时间并确保了安装的定制性.对于其他没有介绍的 ...
- 定制kickstart重建CentOS7.5镜像用于U盘引导安装
有什么问题或者疑惑,可以留言,全力解答. ISO 镜像制作 U 盘安装盘 U盘安装CentOS7.4 U盘实现CentOS7.3全自动安装系统 https://www.cnblogs.com/pany ...
- 使用Dockerfile定制ubuntu+nginx镜像
实验目的:书写Dockerfile,定制ubuntu 14.04 + nginx 1.14.0的镜像. 实验过程: 1. 下载nginx-1.14.0 http://nginx.org/downlo ...
- docker在centos7系统镜像下遇到的一些问题
一.成功安装服务后发现无法启动 报错为:Failed to get D-Bus connection: Operation not permitted 系统为centos7官方版镜像,源和依赖之类的都 ...
- 在CentOS7.5上安装Docker,在Docker中拉取CentOS7.5镜像并安装SSH服务
# 安装docker yum install -y docker # 启动docker systemctl start docker # 加入开机启动 systemctl enable docker ...
- centos7更换镜像源
更换软件源 由于国外的软件源在yum 安装时比较慢,更换为国内的源,以阿里的源的更换方式 下载wgetyum install wget -y echo 备份当前的yum源mv /etc/yum.rep ...
随机推荐
- Windows 10 安装 Git 与初次运行前的配置
Windows 10 安装 Git 与初次运行前的配置 在 Windows 上安装 初次运行 Git 前的配置 用户信息 文本编辑器 检查配置信息 获取 Git 仓库 在现有目录中初始化仓库 克隆现有 ...
- HIVE优化学习笔记
概述 之前写过关于hive的已经有两篇随笔了,但是作者依然还是一枚小白,现在把那些杂七杂八的总结一下,供以后查阅和总结.今天的文章介绍一下hive的优化.hive是好多公司都在使用的东西,也有好多大公 ...
- 使用.NET 6开发TodoList应用(26)——实现Configuration和Option的强类型绑定
系列导航及源代码 使用.NET 6开发TodoList应用文章索引 需求 在上一篇文章使用.NET 6开发TodoList应用(25)--实现RefreshToken中,我们通过使用Configura ...
- 使用NSSM把任意exe程序注册成Windows服务
1.登录NSSM官网下载最新版本: http://www.nssm.cc/download 2.解压之后可以看到win32和win64位的nssm.exe,根据自己的电脑选择使用 3.拷贝一份nssm ...
- 输出2到n之间的全部素数
本题要求输出2到n之间的全部素数,每行输出10个.素数就是只能被1和自身整除的正整数.注意:1不是素数,2是素数. 输入格式: 输入在一行中给出一个长整型范围内的整数. 输出格式: 输出素数,每个数占 ...
- 《剑指offer》面试题31. 栈的压入、弹出序列
问题描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2 ...
- Fastjson反序列化漏洞分析 1.2.22-1.2.24
Fastjson反序列化漏洞分析 1.2.22-1.2.24 Fastjson是Alibaba开发的Java语言编写的高性能JSON库,用于将数据在JSON和Java Object之间互相转换,提供两 ...
- VS code远程连接Linux 开发C++ 配置详细介绍
VS code 远程连接服务器,编译C++ 一.前期准备 1.VS code安装 Remote-SSH插件 2.Windows安装SSH. 3.Linux服务器连接测试. a.接通测试使用ping命令 ...
- golang中的匿名函数三种用法
package main import ( "fmt" "strconv" ) func main() { // 匿名函数的使用:方式1 f1 := func( ...
- TF-IDF计算相似度为什么要对稀疏向量建立索引?
TF-IDF的向量表示的稀疏问题 之前在看tf-idf代码时候思考了一个问题,不知道对于初学的大部分同学有没有这样一个疑惑,用tf-idf值构成的向量,维度可能跟词表的大小有关,那么对于一句话来说,这 ...