首页 > 系统相关 >centos7制作自启动镜像

centos7制作自启动镜像

时间:2023-02-02 13:34:00浏览次数:62  
标签:name nmcli isolinux -- centos7 rc 自启动 镜像 con

一个合格的镜像是会可以不用他人操心自己安装的

为了工作方便,自备一个centos7的自启动iso

1. 挂载iso,并拷贝文件

mount /dev/sr0 /mnt
mkdir /mkos
mount /dev/sdb /mkos
cp -a /mnt/. /mkos/
cd /mkos

2. ks文件准备

cat /mkos/.ks.santiagod 
#version=RHEL7
# Use graphical/text install  #图形化/字符安装界面
#text
graphical

#使用系统上的第一个光驱执行安装,光盘安装配置
#cdrom
#装机使用的yum源
#repo --name="AppStream" --baseurl=file:///run/install/sources/mount-0000-cdrom/AppStream

#要实际运行安装,必须指定 cdrom、harddrive、hmc、nfs、liveimg 或 url 之一
url --url=file:///run/install/repo/

#最小化安装,及其他预装应用
%packages
@^minimal
kexec-tools
bash-completion

curl
wget
tar
unzip
ipmitool

make
gcc

%end

#使用美式键盘
keyboard --xlayouts='us'
#系统默认语言设置,即环境变量$LANG,--addsupport添加对附加语言的支持
lang en_US.UTF-8 --addsupport=zh_CN

#设置主机名
network  --hostname=santiagod.ks
#IP设置,需指明device,否则会取消后续所有network指令
#network --bootproto=static --ip=192.168.116.10 --netmask=255.255.255.0 --gateway=192.168.116.1 --nameserver=8.8.8.8,114.114.114.114 --device=ens192


#enable时,系统第一次引导时启动 Initial Setup,设置语言、鼠标、键盘、root 密码、安全级别、时区以及默认网络配置。默认为disable
firstboot --disable

#使用这个选项在没有用户互动的情况下接受最终用户许可证协议(End User License Agreement,EULA)。指定这个选项可防止 Initial Setup 在完成安装并第一次重启系统后提示您接受该许可证
eula --agreed

#指定使用sda并忽略其他盘
#ignoredisk --only-use=sda,vda
#清理盘上的所有分区表
#clearpart --all --initlabel
#基于 UEFI 的 AMD64、Intel 64 和 64 位 ARM 需要 200 MiB EFI 系统分区。推荐的最小值是 200 MiB,默认大小为 600 MiB,最大为 600 MiB。BIOS 系统不需要 EFI 系统分区
#part /boot/efi --fstype="efi" --ondisk=sda,vda --size=600 --fsoptions="umask=0077,shortname=winnt"
#将sda创建为ID:311的物理卷,最小10G,若磁盘大于10G,也全部做成物理卷
#--grow 自增长
#part pv.311 --fstype="lvmpv" --ondisk=sda,vda --size=10240 --grow
#boot分区,建议大小1G
#part /boot --fstype="xfs" --ondisk=sda,vda --size=1024
#将pv.311加入卷组,默认pe大小4M
#volgroup santiagod --pesize=4096 pv.311
#逻辑卷-交换空间,视磁盘大小而定,为安装时的系统盘大小10%
#logvol swap --fstype="swap" --recommended --name=swap --vgname=santiagod
#逻辑卷-根分区,虽然 5 GiB 根文件系统允许您最小安装,但建议至少分配 10 GiB,以便可以尽可能安装您想要的软件包组
#logvol / --fstype="xfs" --size=10240 --grow --name=root --vgname=santiagod

#系统时区上海,使用UTC时间,默认开启时间同步
timezone Asia/Shanghai --isUtc 

# Root password: Admin123!
rootpw --iscrypted $6$uMfDCfQnqrZgk/yL$F.DkU0TF2k14QNqLUv.cc8X16ZUXGe/8Q./rspkY1tKnmOywrgcBx.eEA7u9oWT/u2T6jzNM410EL1Uy5oPk9/

#禁用selinux与firewalld
firewall --disabled
selinux  --disabled

#安装完成后,重启系统
#--eject - 在重新启动前尝试弹出可引导介质(DVD、USB 或其他介质)
reboot --eject

%include /tmp/part-include

#禁用kdump
%addon com_redhat_kdump --disable --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
%end


#------------------------------------------------------------------------------------------------------------------------------------------------------
%pre

###设置系统盘
#找到大于10G的盘
vgname=santiagod disk=$(while read line;do awk 'BEGIN{} {if ($3 >= "10485760" && $2 == "0") print $4} END{}';done < /proc/partitions|grep -Ew 'sda|vda|hda') #disk=sda,vda,hda cat > /tmp/part-include << EOF_PART clearpart --all --initlabel #基于 UEFI 的 AMD64、Intel 64 和 64 位 ARM 需要 200 MiB EFI 系统分区。推荐的最小值是 200 MiB,默认大小为 600 MiB,最大为 600 MiB。BIOS 系统不需要 EFI 系统分区 part /boot/efi --fstype="efi" --ondisk=$disk --size=600 --fsoptions="umask=0077,shortname=winnt" #将sda创建为ID:311的物理卷,最小10G,若磁盘大于10G,也全部做成物理卷 #--grow 自增长 part pv.311 --fstype="lvmpv" --ondisk=$disk --size=10240 --grow #boot分区,建议大小1G part /boot --fstype="xfs" --ondisk=$disk --size=1024 #将pv.311加入卷组,默认pe大小4M volgroup $vgname --pesize=4096 pv.311 #逻辑卷-交换空间,视磁盘大小而定,为安装时的系统盘大小10% logvol swap --fstype="swap" --recommended --name=swap --vgname=$vgname #逻辑卷-根分区,虽然 5 GiB 根文件系统允许您最小安装,但建议至少分配 10 GiB,以便可以尽可能安装您想要的软件包组 logvol / --fstype="xfs" --size=10240 --grow --name=root --vgname=$vgname EOF_PART #------------------------------------------------------------------------------------------------------------- %end %post #!/bin/bash ###打标签 echo -e "\033[1;31mSantiagod \033[1;34mlinux \033[1;31m8\033[1;34m.15\033[0m\n" > /etc/issue #-------------------------------------------------------------------------------------------- ###内核调优 #kernel.sem 表示设置的信号量 #fs.aio-max-nr 表示系统范围异步 I/O 请求的最大并发数 #fs.file-max 表示一个进程可以打开的文件句柄的最大数量 #net.ipv4.ip_local_port_range 表示专用服务器模式下与用户进程通信时分配给用户的端口区间 #kernel.pid_max 表示进程ID数量上限 #验证:sysctl 模块名,如【sysctl kernel.sem】 cat > /etc/sysctl.d/Santiagod-98-sysctl.conf <<-\EOF_SYSCTL kernel.sem = 4010 641600 4010 1024 fs.aio-max-nr = 1048576 fs.file-max = 6815744 net.ipv4.ip_local_port_range = 9000 65501 net.core.rmem_default = 1048576 net.core.rmem_max = 1048576 net.core.wmem_default = 1048576 net.core.wmem_max = 1048576 vm.swappiness = 0 vm.dirty_background_bytes=102400000 vm.dirty_bytes=409600000 vm.min_free_kbytes=512000 kernel.pid_max = 4194303 EOF_SYSCTL #限制用户的最大线程数[nproc]和最大打开文件数[nofile],*代表所有用户,131072代表最大可接受的数 #有soft,hard和-,soft指的是当前系统生效的设置值,软限制也可以理解为警告值。hard表名系统中所能设定的最大值。 #soft的限制不能比hard限制高,用-表名同时设置了soft和hard的值。 #验证:ulimit -a cat > /etc/security/limits.d/Santiagod-20-nofile.conf <<-\EOF_LIMITS * soft nproc 131072 * hard nproc 131072 * soft nofile 131072 * hard nofile 131072 EOF_LIMITS #---------------------------------------------------------------------------------------------------------- ###Serial串口设置及网卡命名规则eth0模式 if [ $(systemd-detect-virt) = none ]; then dnf module disable virt -qy else ### linux-firmware is use-less in VM dnf remove -y linux-firmware ### Enable serial console && use ethN names in VMs CONF=/etc/default/grub grep GRUB_TERMINAL $CONF | grep -q serial || \ sed -i '/^GRUB_TERMINAL/s/_TERMINAL.*$/_TERMINAL="serial console"/' $CONF grep GRUB_SERIAL_C $CONF | grep -q serial || \ sed -i '/^GRUB_TERMINAL/aGRUB_SERIAL_COMMAND="serial --speed=115200"' $CONF grep GRUB_CMDLINE_ $CONF | grep -q ttyS0 || \ sed -i '/^GRUB_CMDLINE_/s/"$/ net.ifnames=0 biosdevname=0 console=ttyS0,115200n8"/' $CONF sed -i -e '/CMDLINE/s/rhgb/spectre_v2=off/' -e '/CMDLINE/s/quiet/nopti/' $CONF fi #grub2-mkconfig -o $(find /boot -name grub.cfg) #---------------------------------------------------------------------------------------- ###修改系统标签 #验证:more /etc/*release #rm -rf /etc/system-release mv -f /etc/centos-release /etc/system-release rm -rf /etc/{redhat,centos}-release sed -i '/URL/d' /etc/os-release sed -i 's/CentOS/Santiagod/g' /etc/{system,os}-release sed -i -e 's/centos/santiagod/g' -e 's/CENTOS/SANTIAGOD/g' /etc/{system,os}-release grub2-mkconfig -o /boot/grub2/grub.cfg #---------------------------------------------------------------------------------------- ### rc.local 删记录,设IP cat <<'EOF' >> /etc/rc.d/rc.local #START# find /root -type f -name \*-ks.cfg -exec rm -f {} \; find /tmp -type f -name ks-\* -exec rm -f {} \; find /var/log \( -name anaconda -o -name installer.log \) -exec rm -rf {} \; ### 预设IP nmcli -g UUID con | xargs -I{} nmcli con down {} nmcli -g UUID con | xargs -I{} nmcli con del {} IF2=$(nmcli -g DEVICE dev | grep -v lo | head -1) if [ -n "$IF2" ]; then nmcli con add type ethernet ifname $IF2 con-name $IF2 nmcli con mod $IF2 ipv4.method manual ipv4.addr 192.168.202.70/24 nmcli con mod $IF2 ipv4.gateway 192.168.202.1 autoconnect yes nmcli con reload nmcli con up $IF2 fi chmod -x /etc/rc.d/rc.local sed -i '/^#START#$/,/^#END#$/d' /etc/rc.d/rc.local #END# EOF chmod +x /etc/rc.d/rc.local #----------------------------------------------------------------------------------------- %end

 

 

3. 调整isolinux.cfg文件

sed -i 's/menu label ^Install CentOS 7/menu label ^Install CentOS 7 [manual]/' isolinux/isolinux.cfg
sed -i 's/menu label Test this ^media & install CentOS 7/menu label ^Install CentOS 7 [auto]/' isolinux/isolinux.cfg
sed -i 's/ rd.live.check/:\/.ks.santiagod/' isolinux/isolinux.cfg
sed -i 's/CentOS\\x207\\x20x86_64/auto-CentOS7-x86_64/g' /mkos/isolinux/isolinux.cfg

 

4. 制作bios启动的iso

genisoimage -o /root/auto-CentOS7.9-x86_64.iso \
-b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot \
-boot-load-size 4 \
-boot-info-table \
-V 'auto-CentOS7-x86_64' \
-p 'Santiagod' \
-A "made by Santiagod at $(timedatectl|awk '/Local time/{print $4,$5}')" \
-R -J -v -T /mkos

 

标签:name,nmcli,isolinux,--,centos7,rc,自启动,镜像,con
From: https://www.cnblogs.com/santia-god/p/17085716.html

相关文章

  • centos7配置ssh免密
    设定有三台虚拟机,生成密钥后,将密钥保存到hadoop101,再由hadoop101,分发给另外两台虚拟机#查看是否安转sudoyumlistinstalled|grepopenssh#z输入回车生成密钥ssh-keygen-......
  • centos7-minikube安装
    [root@localhost~]#vi/etc/yum.repos.d/docker.repo[root@localhost~]#yumrepolistLoadedplugins:fastestmirrorRepository'docker'ismissingnameinconfi......
  • docker镜像压缩导入导出
    docker镜像导出导入导出导入可以用save-load,或者export-import,这里以save-load为例将容器打成镜像dockercommit-a'用户名'-c'描述'mynginx:v0.0.1导出:docker......
  • CentOS7 RPM方式安装JDK
    1、下载jdkrpmJavaDownloads|Oracle中国https://www.oracle.com/cn/java/technologies/downloads/#jdk19-linux  xftp工具登录CENTos7上传文件  rmp-......
  • CentOS7创建应用程序的桌面快捷方式
    CentOS7创建应用程序的桌面快捷方式以Eclipse为例:1、​​gedit/home/用户名/桌面/eclipse.desktop​​2、将下面内容粘贴进去并保存退出[DesktopEntry]Name=EclipseC/C......
  • CentOS7安装NVIDIA显卡驱动
    CentOS7安装NVIDIA显卡驱动安装依赖项:yuminstall-ygccgcc-c++kernel-devel检查内核版本和内核版本是否一致,否则安装会报错:查看内核版本ls/boot|grepvmlinu查看源码......
  • 基于KubeSphere在K8S发布微服务ruoyi----9.可视化Pipeline:3构建镜像
      先在nacos创建dev命令空间    这3个配置文件有mysql连接信息,需修改IP,端口,密码     上一阶段编译好了之后,先检查一下某个微服务下有没生成targ......
  • Centos6、Centos7、Centos8关闭防火墙
    一、centos6关闭防火墙1.service命令关闭防火墙:serviceiptablesstop开启防火墙:serviceiptablesstart重启防火墙:serviceiptablesrestart查看防火墙状态:servicei......
  • 第一次在docker部署项目(没有镜像版)
    初次在docker中拉取git上的项目,第一次使用git需要初始化创建git文件夹:gitinit!!创建项目存放的文件夹mkdir文件夹名称例如:mkdirspzstest!!进入文件夹cdspzstest!......
  • CentOS7登录到控制台后无网络
    1、找到网卡配置文件ll/etc/sysconfig/network-scripts/|grepifcfg-en2、编辑配置文件开启系统启动时自动启动网络,并保存文件 vi /etc/sysconfig/network-scripts......