基於CentOS6定製自己的ISO安裝光碟

来源:https://www.cnblogs.com/BoyTNT/archive/2018/07/17/9322927.html
-Advertisement-
Play Games

基於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 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 使用rm -rf 目錄名字 命令即可 -r 就是向下遞歸,不管有多少級目錄,一併刪除-f 就是直接強行刪除,不作任何提示的意思 ...
  • 1 bool OnShellCall(const char *shell_cmd, CString& result) 2 { 3 FILE* pipe = ::popen(shell_cmd, "r"); 4 if (!pipe) 5 { 6 return false; 7 } 8 9 char b ...
  • 簡述 sudo是一種許可權管理機制,管理員可以授權普通用戶去執行root的操作,而不需要知道root的密碼,它依賴於/etc/sudoers這個文件,可以授權給哪個用戶在哪個主機上能夠以管理員的身份執行什麼樣的管理命令,而且是有限的。/etc/sudoers文件相當於一個授權表,此文件的許可權只有管理員 ...
  • 學習目標: 瞭解Linux系統中驅動程式的概念、作用,為後續學習驅動程式編寫打下基礎! U-boot的目的是啟動內核,內核的目的是啟動應用程式。應用程式中可能會涉及到讀寫文件、點亮LED、獲取按鍵值等操作,而對於寫應用程式的人來說不必去關心具體硬體如何操作,僅僅只調用open、rend、write等 ...
  • 前言 今天在安裝ambari的時候,製作amberi本地yum源的時候出現了一個問題,虛擬機的磁碟空間不足了,後來發現是因為這個節點之前本來只打算作為數據節點使用的,後來所以後來只給它分配了20G的硬碟空間,但是最終它卻成為了伺服器節點,然後就導致了空間不足這個問題。而這就是今天這篇文章要解決的問題 ...
  • CRONTAB是一個用於設置周期性被執行的任務的工具,有了它,我們就可以從定時工作中解放出來。 一 : 檢查CRONTAB服務 1. 檢查CRONTAB工具是否已經在主機上安裝 : crontab -l (當然後面會介紹它真正的用途) 2. 檢查CRONTAB服務是否已經啟動 : service c ...
  • 1. 我的環境: 兩臺電腦,分別記為PC1和PC2,PC1有線或者無線連在路由器上,PC2無線連在同一個路由器上。(當然,我的PC1是win10系統,PC2是win7系統) 2. PC1只要一遠程連接PC2,就造成PC2的無線斷開,進而導致遠程桌面連接失敗。 至於原因,我猜測是當PC2電腦被遠程桌面 ...
  • yum 配置源 1 .打開 vi /etc/yum.repos.d/CentOS-Base.repo 註:yum預設載入這個文件 2.刪除 /etc/yum.repos.d/CentOS-Base.repo 裡面的文件內容 (1)使用#dd刪除 (2)echo > /etc/yum.repos.d/ ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...