cnetos7 ISO 映象自定義製作

记忆抹不去發表於2024-03-12

  簡介:

   此自定義映象針對centos7 系統版本,透過tar 打包原系統服務將其放入ISO映象中在安裝時執行解壓匯入新安裝系統中實現系統服務的自定義安裝。針對cnetos7 目前只測試出這一種方案,暫時沒找到其他好的方案實現系統的模板ISO製作,目前版本存在缺陷映象中的tar包非加密存在安全問題。如果有更好的方案還請大佬指導。

  製作系統tar包

   原系統將服務進行刪減,刪除沒用的日誌和快取資料保證系統的最小可用。刪減完成後執行以下命令將系統打包:

tar cvpzf backup.tar.gz --exclude=/proc --exclude=/lost+found --exclude=/dev --exclude=/etc/fstab --exclude=/boot  --exclude=/backup.tar.gz --exclude=/mnt --exclude=/sys --exclude=/media  --exclude=/etc/sysconfig/network-scripts/ / 

   使用原centos7 mini映象進行掛載修改

  

#映象名稱:CentOS-7-x86_64-Minimal-2009.iso
#將其掛載到系統中(隨便一個作業系統用來製作系統映象)
#安裝必要依賴
yum install -y  genisoimage

#掛載映象
mount -o loop  ./CentOS-7-x86_64-Minimal-2009.iso  /mnt

#複製映象到/ISO目錄
mkdir  /ISO
cp -a  /mnt/*  /ISO

#修改映象內容
#1、製作應答檔案ks.cfg
#2、修改/ISO/isolinux/isolinux.cfg
#3、修改/ISO/isolinux/grub.conf
#4、修改/ISO/EFI/BOOT/grub.cfg
#5、修改映象的LABEL為CentOS7 原系統為 CentOS\x207\x20x86_64 由於帶空格所以有\x20 為了有些系統不識別這裡給換成CentOS7
#6、放入tar包

cat>/ISO/isolinux/ks.cfg<<EOF
#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 --onboot=on --ipv6=auto --no-activate
network  --hostname=localhost.localdomain

# Root password
rootpw --iscrypted $6$rOMaGigzYAyI5Ata$3RzuCFJ2Oksrr6ZpLf0sJI2C8qa4dkP.k1RhCpf5hm5Si4lWvBE8YyOVmZ5uMyI6eIXhKfewTciTr7OKyO/bB0
# System services
services --disabled="chronyd"
# System timezone
timezone Asia/Shanghai --isUtc --nontp
# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
# Partition clearing information
clearpart --none --initlabel
# Disk partitioning information
part pv.156 --fstype="lvmpv" --ondisk=sda --size=9215
part /boot --fstype="xfs" --ondisk=sda --size=1024
volgroup centos --pesize=4096 pv.156
logvol /  --fstype="xfs" --grow --maxsize=51200 --size=1024 --name=root --vgname=centos
logvol swap  --fstype="swap" --size=1023 --name=swap --vgname=centos

%packages
@^minimal
@core
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
%end

%post --nochroot
cp /run/install/repo/Packages/backup.tar.gz /mnt/sysimage/
chmod +x /mnt/sysimage/etc/rc.d/rc.local
echo "cd / && tar xpfz backup.tar.gz -C /  && rm -f /backup.tar.gz && rm -f /etc/sysconfig/network-scripts/ifcfg-ens192 && reboot " >>  /mnt/sysimage/etc/rc.d/rc.local
%end
EOF

#其中倒數第二行有個: rm -f /etc/sysconfig/network-scripts/ifcfg-ens192  是刪除原系統網路卡配置檔案,需要根據自己系統進行修改。

#isolinux.cfg  quiet後增加inst.ks=cdrom:/isolinux/ks.cfg
#debug --graphics
default=1
splashimage=@SPLASHPATH@
timeout 60
hiddenmenu
title Install CentOS 7
findiso
kernel @KERNELPATH@ @ROOT@ quiet inst.ks=cdrom:/isolinux/ks.cfg
initrd @INITRDPATH@

#/ISO/isolinux/grub.conf   quiet後增加inst.ks=cdrom:/isolinux/ks.cfg
#debug --graphics
default=1
splashimage=@SPLASHPATH@
timeout 60
hiddenmenu
title Install CentOS 7
findiso
kernel @KERNELPATH@ @ROOT@ quiet inst.ks=cdrom:/isolinux/ks.cfg
initrd @INITRDPATH@


#/ISO/EFI/BOOT/grub.cfg   /images/pxeboot/vmlinuz之後增加 inst.ks=hd:LABEL=CentOS7:/isolinux/ks.cfg
### BEGIN /etc/grub.d/10_linux ###
menuentry'Install CentOS 7' --class fedora --class gnu-linux --class gnu --class os {
  linuxefi /images/pxeboot/vmlinuz inst.ks=hd:LABEL=CentOS7:/isolinux/ks.cfg  inst.stage2=hd:LABEL=CentOS7  quiet
  initrdefi /images/pxeboot/initrd.img
}

#修改  CentOS\x207\x20x86_64 為  CentOS7
sed -i 's/CentOS\\x207\\x20x86_64/CentOS7/g' /ISO/isolinux/isolinux.cfg
sed -i 's/CentOS\\x207\\x20x86_64/CentOS7/g' /ISO/EFI/BOOT/grub.cfg
sed -i 's/CentOS 7 x86_64/CentOS7/g' /ISO/EFI/BOOT/grub.cfg



#放入tar包
cp  backup.tar.gz  /ISO/Packages

#重新制作映象
cd  /
genisoimage -joliet-long -V "CentOS7" -o CentOS7-test.iso -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 /ISO

#使伺服器BOIS模式能夠識別隨身碟系統
isohybrid CentOS7-test.iso

  

相關文章