簡介:
此自定義映象針對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