基於CentOS-6.10-x86_64-minimal.iso定製自己的iso,實現自動化安裝,並攜帶定製化軟體做好初始化,適應於CentOS6系列。 ...
警告:轉載請註明出處 https://www.cnblogs.com/BoyTNT/p/9322927.html
1.目標
>> 基於CentOS-6.10-x86_64-minimal.iso進行定製,選它是因為包比較小
>> 以text方式安裝,安裝過程儘量無需用戶參與
>> 固定root密碼,並創建好內置用戶與許可權
>> 隱藏與CentOS相關的信息,更換為自己的產品名稱
>> 攜帶自己的軟體,如jre環境等
2.環境準備
>> 下載CentOS6.10,地址:http://mirrors.aliyun.com/centos/6.10/isos/x86_64/CentOS-6.10-x86_64-minimal.iso
>> 準備linux環境,建議直接使用要定製的基礎iso安裝
>> 以root登錄系統,配置好網路
>> 通過yum安裝必備組件
yum install anaconda createrepo mkisofs rpm-build
>> 上傳iso到/root,並掛載到/mnt/src,之後拷貝所有文件到工作目錄下,註意包含兩個隱藏文件.diskinfo和.treeinfo
mkdir /mnt/src mount –o loop /root/CentOS-6.9-x86_64-minimal.iso /mnt/src mkdir /root/iso cp –r /mnt/src/. /root/iso
3.修改歡迎界面
3.1.修改背景圖
原始界面為:
替換界面需要修改/root/iso/isolinux/splash.jpg,替換為需要的圖片,保持文件名不變,圖片大小640x480。
3.2.修改產品名與選項
修改/root/iso/isolinux/isolinux.cfg,原始內容為:
default vesamenu.c32 #prompt 1 timeout 600 display boot.msg menu background splash.jpg menu title Welcome to CentOS 6.10! menu color border 0 #ffffffff #00000000 menu color sel 7 #ffffffff #ff000000 menu color title 0 #ffffffff #00000000 menu color tabmsg 0 #ffffffff #00000000 menu color unsel 0 #ffffffff #00000000 menu color hotsel 0 #ff000000 #ffffffff menu color hotkey 7 #ffffffff #ff000000 menu color scrollbar 0 #ffffffff #00000000 label linux menu label ^Install or upgrade an existing system menu default kernel vmlinuz append initrd=initrd.img label vesa menu label Install system with ^basic video driver kernel vmlinuz append initrd=initrd.img nomodeset label rescue menu label ^Rescue installed system kernel vmlinuz append initrd=initrd.img rescue label local menu label Boot from ^local drive localboot 0xffff label memtest86 menu label ^Memory test kernel memtest append -
修改為:
default vesamenu.c32 #prompt 1 timeout 150 display boot.msg menu background splash.jpg menu title Welcome to RVS 3.0! menu color border 0 #ffffffff #00000000 menu color sel 7 #ffffffff #ff000000 menu color title 0 #ffffffff #00000000 menu color tabmsg 0 #ffffffff #00000000 menu color unsel 0 #ffffffff #00000000 menu color hotsel 0 #ff000000 #ffffffff menu color hotkey 7 #ffffffff #ff000000 menu color scrollbar 0 #ffffffff #00000000 label linux menu label ^Install RVS 3.0 menu default kernel vmlinuz append ks=cdrom:/isolinux/ks.cfg initrd=initrd.img label local menu label ^Boot from local drive localboot 0xffff
做了以處幾處調整:
- 修改timeout,預設超時是60秒,改為15秒,即15秒內不做選擇預設執行菜單中的default項
- 修改memu title行,可以定製歡迎標題
- 去掉部分菜單項,只保留安裝(label linux)和從硬碟啟動(label local)這兩項
- 調整了label linux項的文字,同時調整了append項,增加了對kickstart的支持,指定ks.cfg位置,此配置用於自動安裝,後面會涉及
4.修改安裝過程
4.1.調整安裝界面名稱
安裝界面左上角會顯示產品名稱,原始界面如下:
想更換CentOS為自定義名稱,需要調整/root/iso/isolinux/initrd.img:
>> 解開initrd.img到工作目錄
mkdir /root/initrd cd /root/initrd xz -dc /root/iso/isolinux/initrd.img | cpio -id
>> 修改.buildstamp文件,原始內容為:
201806291108.x86_64 CentOS 6.10 FINAL=YES http://bugs.centos.org/
修改為:
201806291108.x86_64 RVS 3.0 FINAL=YES http://www.your-company.com.cn/
>> 重新壓縮img文件,並覆蓋工作目錄下的原文件,然後清理
cd /root/initrd find . | cpio -c -o | xz -9 --format=lzma > initrd2.img cp initrd2.img /root/iso/isolinux/initrd.img cd /root rm –rf /root/initrd
這裡比較奇怪的是,如果直接壓縮生成initrd.img,文件會比較大,但壓縮initrd2.img就能基本等於原尺寸。
4.2.定製自動安裝參數
定製自動安裝參數需要依賴kickstart,生成/root/iso/isolinux/ks.cfg,填寫內容為(#為註釋行,不需要):
#全新安裝,使用cdrom作為安裝源 install cdrom #使用text模式而不要用圖形模式安裝 text #設置鍵盤與語言 keyboard us lang en_US.UTF-8 #設置root密碼與認證加密方式,此處設置root密碼為PASSWD1! rootpw --iscrypted $6$rUp4SXGKaN7Z.eix$/6tp2c9zsSwN8a2a.TmDcKHjhjAm.CFhlunvKZRqZAO.UQ8mrOT4Im/pCiL5d388VEEHMrhha0N3Q2BwqxHPV1 auth --useshadow --passalgo=sha512 #設置防火牆,放過ssh firewall --service=ssh #設置selinux selinux –-enforcing #設置網路eth0,使用dhcp模式,設置hostname,不啟用ipv6 network --onboot=yes --device=eth0 --bootproto=dhcp –hostname=rvs --noipv6 #不使用X Window skipx #安裝完成後重啟系統 reboot #設置時區 timezone Asia/Shanghai #設置啟動引導參數 bootloader --location=mbr --driveorder=sda #清除mbr zerombr #清除分區 clearpart --all --initlabel
參數很多,可以參考以下文章:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/installation_guide/s1-kickstart2-options。或者如果你有圖形界面,安裝一個system-config-kickstart,可以進行圖形化的參數設置。
root密碼是以加密方式設置的,可以通過以下方法得到密文: python -c 'import crypt; print(crypt.crypt("PASSWD1!"))'
4.3.添加自定義軟體與腳本
以安裝oracle server jre為例:
>> 在iso目錄中創建軟體存放目錄,放入待安裝的軟體
mkdir /root/iso/soft cp /root/server-jre-8u172-linux-x64.tar.gz /root/iso/soft
>> 修改ks.cfg,以末尾添加內容
%post mkdir -p /media/cdrom ln -s /dev/scd0 /dev/cdrom mount -o loop /dev/cdrom /media/cdrom tar -zxvf /media/cdrom/soft/server-jre-8u172-linux-x64.tar.gz -C /usr/local echo "JAVA_HOME=/usr/local/jdk1.8.0_172" >> /etc/profile echo "PATH=\$JAVA_HOME/bin:\$PATH" >> /etc/profile echo "export JAVA_HOME PATH" >> /etc/profile %end
%post表示安裝完成後執行的腳本,這裡首先掛載光碟機,然後解壓jre並設置環境變數。
5.修改產品名稱
產品名稱出現在啟動界面以及登錄前,想變更需要修改centos-release-6-10.el6.centos.12.3.x86_64.rpm,但此包無法直接修改,需要從源碼包修改,步驟如下:
>> 下載源碼包到/root,並解開
cd /root wget http://vault.centos.org/6.10/os/Source/SPackages/centos-release-6-10.el6.centos.12.3.src.rpm rpm2cpio /root/centos-release-6-10.el6.centos.12.3.src.rpm | cpio -id
>> 建立root用戶的rpm環境,並將解壓得到的文件放入
echo "%_topdir /root/rpmbuild" > /root/.rpmmacros mkdir -pv /root/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS} cp centos-release-6-10.tar.gz /root/rpmbuild/SOURCES cp centos-release.spec /root/rpmbuild/SPECS
>> 修改centos-release.spec,分別找到%define product_family和%define full_release_version這兩行,改為需要的值:
%define product_family RVS %define full_release_version 3.0
註意%define base_release_version這一行不要修改,否則會生成錯誤。
>> 重新生成rpm包,覆蓋原始文件
cd /root/rpmbuild/SPECS rpmbuild -bp centos-release.spec rpmbuild -bc centos-release.spec rpmbuild -bi centos-release.spec rpmbuild -bb centos-release.spec cp /root/rpmbuild/RPMS/x86_64/centos-release-6-10.el6.12.3.x86_64.rpm /root/iso/Packages/centos-release-6-10.el6.centos.12.3.x86_64.rpm
執行每條命令時註意觀察有無錯誤產生。
>> 更新repodata數據
cd /root/iso declare -x discinfo=`head -1 .discinfo` cp /root/iso/repodata/*-x86_64.xml /root/iso/comps.xml rm –rf /root/iso/repodata createrepo -u "media://$discinfo" -g comps.xml ./
6.重新生成ISO
cd /root mkisofs -o rvs-3.0.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T iso/
成功後會在/root目錄下生成rvs-3.0.iso。
7.檢驗成果
使用VMware虛擬機安裝,歡迎頁面,已顯示RVS 3.0,且菜單項只剩2項:
進入text模式,左上角顯示產品名為RVS,安裝過程中只需要選擇磁碟,其它參數都不需要設置:
安裝完成後自動重啟,GRUB里及啟動過程右下角已顯示RVS 3.0:
啟動完成,顯示RVS release 3.0 (Final),以root登錄,密碼PASSWD1!,執行java命令可正常運行,查看IP已通過dhcp分配成功。
大家可以在此基礎上添加更多個性化的內容,來生成自己專屬的iso安裝包。
PS:感謝 https://www.cnblogs.com/appresearch/p/5484450.html 的作者。
警告:轉載請註明出處 https://www.cnblogs.com/BoyTNT/p/9322927.html