基於CentOS6定製本身的ISO安裝光盤

警告:轉載請註明出處 http://www.javashuo.com/article/p-euuhxuzu-nc.html html

1.目標

>> 基於CentOS-6.10-x86_64-minimal.iso進行定製,選它是由於包比較小
>> 以text方式安裝,安裝過程儘可能無需用戶參與
>> 固定root密碼,並建立好內置用戶與權限
>> 隱藏與CentOS相關的信息,更換爲本身的產品名稱
>> 攜帶本身的軟件,如jre環境等java

 

2.環境準備

>> 下載CentOS6.10,地址:http://mirrors.aliyun.com/centos/6.10/isos/x86_64/CentOS-6.10-x86_64-minimal.iso
>> 準備linux環境,建議直接使用要定製的基礎iso安裝
>> 以root登陸系統,配置好網絡
>> 經過yum安裝必備組件python

yum install anaconda createrepo mkisofs rpm-build

>> 上傳iso到/root,並掛載到/mnt/src,以後拷貝全部文件到工做目錄下,注意包含兩個隱藏文件.diskinfo和.treeinfolinux

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.修改背景圖

原始界面爲:centos

替換界面須要修改/root/iso/isolinux/splash.jpg,替換爲須要的圖片,保持文件名不變,圖片大小640x480。網絡

3.2.修改產品名與選項

修改/root/iso/isolinux/isolinux.cfg,原始內容爲: oracle

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 -

修改成:app

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

 

作了如下幾處調整:ssh

  • 修改timeout,默認超時是60秒,改成15秒,即15秒內不作選擇默認執行菜單中的default項
  • 修改memu title行,能夠定製歡迎標題
  • 去掉部分菜單項,只保留安裝(label linux)和從硬盤啓動(label local)這兩項
  • 調整了label linux項的文字,同時調整了append項,增長了對kickstart的支持,指定ks.cfg位置,此配置用於自動安裝,後面會涉及

 

4.修改安裝過程

4.1.調整安裝界面名稱

安裝界面左上角會顯示產品名稱,原始界面以下:ide

 

想更換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 > /root/initrd.img
cp /root/initrd.img /root/iso/isolinux/initrd.img
cd /root
rm –rf /root/initrd
rm -rf /root/initrd.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安裝包。

若是對rpm包進行剪裁,須要從新生成repodata,但要注意的是rpm包之間有依賴,若是依賴關係出現問題,安裝時會給出警告,能夠繼續,但完成後相應組件沒法使用。


PS:感謝 https://www.cnblogs.com/appresearch/p/5484450.html  的做者。

 

警告:轉載請註明出處 http://www.javashuo.com/article/p-euuhxuzu-nc.html