CentOS6.7定制化制作ISO


CentOS6.7定制化制作ISO
CentOS 6.7-minimal 為例。
歡迎大家轉載,並保留原文出處。內容若有錯誤或補充,請聯系: szyzln@126.com









本文主要講解如何在已有官方 CentOS 鏡像文件的情況下對系統默認安裝的 RPM 包進行剪裁,同時添加與公司業務相關的應用 RPM 包,生成一個定制版的 ISO 確保每次系統安裝后業務布署自動化和高度一致。


本文不對 Linux 內核進行任何剪裁和優化,不能帶你裝逼。






自動化部署文件

這個文件一般在你安裝完 CentOS /root 目錄下生成,分別記錄了你安裝系統時的系統配置情況和安裝了哪些軟件包。我們在制作定制版 ISO 時可以直接使用這個文件,可以減輕一些工作量。當然你直接創建一個文本文件並編輯為下面內容也是可以的。
# vi /root/ks.cfg
# Kickstart file automatically generated by anaconda.

 

#version=DEVEL
install
cdrom
lang zh_CN.UTF-8
keyboard us
rootpw  --iscrypted $6$wkkHFjodgcq5lXPL$Y6rKvuAbZcxGT144.EDLv17Sz706nxUJvDw1ODUEh.B21ZFSvO5NXsW1jeKEu1jxr45Q5NlM9gt95vt9PSpCA0
firewall --service=ssh
authconfig --enableshadow --passalgo=sha512
selinux --disabled
timezone --utc Asia/Shanghai
#bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
network --hostname YueKeOS --onboot yes  --bootproto dhcp  --nameserver 223.5.5.5,223.6.6.6
%pre
%end

 

%packages --nobase
@core
%end

 

%post
%end



准備環境

# yum install createrepo mkisofs isomd5sum squashfs-tools
# mkdir /root/YueKeOS
[ 說明] :以后統一將 ”/root/YueKeOS” 稱為 ISO 制作目錄。
# mount /dev/cdrom /media/
# cp -r /media/* /root/YueKeOS/
# cp  /media/.discinfo /root/YueKeOS/
# cp  /media/.treeinfo /root/YueKeOS/
# cp /root/anaconda-ks.cfg isolinux/ks.cfg
# chmod +w isolinux/isolinux.cfg
找到下面一行內容,在其后面加上一部分:
append initrd=initrd.img ks=cdrom:/isolinux/ks.cfg asknetwork
[ 說明] :斜體部分可選,代表是否在安裝時對網絡部分進行提示交互。





安裝前運行自定義腳本

%pre 表示系統安裝前,此時 ISO 鏡像文件被掛載到內存中 Linux /mnt/source
具體操作:暫無




安裝后運行自定義腳本

%post 在系統安裝后執行
-- 不帶參數,其實就是在真實的操作系統里操作。
--nochroot 已安裝的真實操作系統被掛載到內存虛擬操作系統中的 /mnt/sysimage 目錄。這個參數的用途主要是配合 %pre 使用的。先將光盤里的文件 copy 到內存運行的虛擬操作系統,再從內存虛擬操作系統 copy 到已安裝的真實操作操作。
%post --nochroot
mkdir /media
mount /dev/cdrom /media/
cp /media/test1.txt /mnt/sysimage/root/
%end
[ 說明] :上面命令實現了從 ISO 鏡像中拷貝文本文件到安裝好的真實操作系統中。



利用系統安裝得到RPM

簡單地來講,系統安裝主要是將光驅作為本地 YUM 源。那么只要找到第一次安裝到底安裝了哪些 RPM 包,則這些 RPM 包完全滿足 YUM 源,不存在任何依賴關系破損。
centos 系統安裝完成后生成的 /root/install.log 。這個文件記錄的恰恰是系統安裝時安裝了哪些 RPM ( 不管是系統默認還是用戶自定義勾選的 ) 。我們可以從光驅里拷貝對應的 RPM 包到 ISO 制作工作目錄里的 Packages 目錄。
第一步:清空 ISO 制作目錄里的Packages和repodata倆個目錄里的所有內容。並重新參照 install.log 從光驅里拷貝對應的 RPM 包。
# rm Packages/* repodata/* -rf
# awk '{print $2}'  /root/install.log |xargs -i cp /media/Packages/{}.rpm /root/YueKeOS/Packages/





系統首次更新

官方 ISO 可能比較舊,安裝后我們可能需要執行 “yum upgrade” 來升級。雖然這種更新不包括操作系統內核和跨越發行版本,但至少可以保證已安裝的軟件包升級到最新。
1 、修改 YUM 配置文件。以確保 YUM 命令操作會保存 RPM
# /etc/yum.conf
keepcache=1 1 為保存 0 為不保存 , 默認不保存
2、yum upgrade
3、拿到 YUM 命令下載到本機緩存庫里的包,並拷貝到 ISO 制作目錄里。
# mv /var/cache/yum/x86_64/6/updates/packages/* /root/YueKeOS/Packages
# mv /var/cache/yum/x86_64/6/base/packages/* /root/YueKeOS/Packages
4 、刪除舊的對應 RPM 包。當然也可以不用刪除。我這里的測試結果是系統最終安裝的版本是升級包的最新版本。






利用YUM來搜集RPM

很多情況下,除了系統最少安裝包外,我們還需要額外安裝業務相關軟件,比如常見的 VIM MySQL 等。系統默認 YUM 安裝 MySQL 5.1 ,版本太舊了。我們需要讓 ISO 集成更新的 MySQL 5.6 版本並默認安裝。

1 、修改 YUM 配置文件。以確保 YUM 命令操作會在本機保存下來 RPM
# /etc/yum.conf
keepcache=1 1 為保存 0 為不保存 , 默認不保存

 

2 yum install vim  
[ 說明] :從 yum 安裝界面上顯示信息, vim-enhanced 才是完整的軟件包名稱
3、yum install mysql-community-server
搭建 MySQL Yum 源,詳見官網說明:
httpp://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/

 

4 、將所有此次安裝的軟件安裝包和依賴包,全部轉移到 ISO 制作目錄的 Packages 目錄。







創建光驅YUM倉庫

1、准備資源庫列表 XML 文件
# cp /media/repodata/*minimal-x86_64.xml /root/minimal-x86_64.xml
<comps>
  <group>
    <id>core</id>
    <name>Core</name>
<description/>
    <default>true</default>
    <uservisible>false</uservisible>
     <packagelist>
     <packagereq type='mandatory'>acl</packagereq>
     <packagereq type='mandatory'>xfsprogs</packagereq>
     此處省略 N 行   
     <packagereq type='mandatory'>vim-enhanced</packagereq>
     <packagereq type='mandatory'>mysql-community-server</packagereq>

 

   </packagelist>
  </group>


<category>
    <id>core</id>
    <name>Core</name>
    <description>Minimal server packages set</description>
    <display_order>60</display_order>
    <grouplist>
      <groupid>core</groupid>
    </grouplist>
  </category>

 

</comps>
[ 說明1] :讓我們來打量一下 XML 文件,它接下來將被 “reaterepo -g 參數 這種形式來引用的。它的作用就是在生成 YUM 倉庫后將 RPM 列表歸為幾個 group 。哪些 group id 可以安裝由 ks.cfg 來指定。我們在網上看到一些關於創建本地 YUM 源並沒有這個配置文件,是因為創建本地 YUM 源根本不需要。
[ 說明2] :經過實際測試,只需要在資源庫列表中列出你要安裝的軟件包完整名稱即可,其依賴包可以不用列出。當然你也可以創建新的 group id 給自己的業務定制包,也可以按照 YUM 的安裝順序將依賴包列入資源庫列表中。



3 、重新生成 repo
# declare -x discinfo=$(head -1 /root/YueKeOS/.discinfo)
# createrepo -u "media://$discinfo" -g /root/minimal-x86_64.xml /root/YueKeOS/
[ 說明]:.discinfo 隱藏文件里的第一行數字為光盤介質編號,可以隨便編寫。並制作 repo 時必須要引用它。




自己制作RPM
暫無








其它修飾

isolinux.cfg
光盤啟動時安裝選項菜單。修改背景圖

 

# mount -o loop images/install.img /mnt/
[ 說明 :掛載后可以瀏覽,但無法修改。需要將里面的全部文件拷貝到另外一個臨時目錄。待修改完成后再制作成 install.img 文件。假設這個臨時目錄名為 “install-image”
# mksquashfs install-image/ /root/install.img -all-root -noF
光盤安裝軟件包進度時上方背景圖



制作ISO

# cd /root
# mkisofs -o YueKeOS-6.7.1_64.iso -input-charset utf-8 -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T -joliet-long  /root/YueKeOS/
[ 說明]: mkisofs 實際上是鏈接 genisoimage命令
# implantisomd5 YueKeOS-6.7.1_64.iso


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM