製作自己的CentOS ISO

來源:互聯網
上載者:User

標籤:centos、iso製作、自己的iso

    Centos6.3官方的DVD包過於龐大,裡面整合了大量軟體,但其中有許多軟體在生產環境中根本用不上,冗餘安裝只會造成資源的浪費,本文檔主要介紹了一個系統定製的基本方法,並特別指出在系統定製中會出現的一些嚴重問題,如果這些問題不注意,很有可能在很多情況下前功盡棄。

        基於centos6.3的定製,可以整合了lnmp環境,和一些系統監視軟體,以前安裝系統加lnmp環境都是用安裝指令碼安裝,源碼安裝需要太久時間,特別是php的編譯時間太久,所以在定製系統的時候,需要把一些源碼軟體包打包製作成rpm包,所以在文檔開始部分將介紹rpm包的製作流程。


1、RPM的概述及用途

        1)RPM包管理工具(簡稱RPM,全稱為The RPM Package Manager)是在Linux下廣泛使用的軟體包管理器。最早由Red Hat研製,現在也由開源社區開發。RPM通常隨附於Linux發行版,但也有單獨將RPM作為應用軟體發行的發行版。RPM僅適用於安裝用RPM來打包的軟體,目前是GNU/Linux下軟體包資源最豐富的軟體包類型

  

xxx-version.rpm --redhat suse....xxx-veriosn.deb --debian/ubuntu


        2)RPM包管理具體的用途;

            1、快速安裝、刪除、升級和管理軟體,也支援線上安裝和升級軟體;

            2、通過RPM包管理能知道軟體包包含哪些檔案,也能知道系統中的某個檔案屬於哪個軟體包;

            3、可以在查詢系統中的軟體包是否安裝以及其版本;

            4、作為開發人員可以把自己的程式打包為RPM包發布,減少軟體安裝前的配置及編譯所花耗的時間;

            5、軟體包簽名GPG和MD5的匯入、驗證和簽名發布,防止軟體被篡改。

            6、依賴性的檢查,查看是否有軟體包由於不相容而擾亂了系統;


        3 ) RPM打包需要注意的地方

            為了自己打的rpm包能在其他系統正常使用,系統內容一致是必須的,當然你在centos6.3 上打包的軟體在某些情況也能正常在centos6.4上面安裝使用,但不推薦這麼做,封裝宿主系統一致性,是rpm安裝的基本條件,另外,rpm包最難解決的是依賴問題,沒錯。rpm包能通過yum安裝,並自動檢查依賴關係,但有個問題,比如你打包nginx的時候依賴於gd庫,打包的時候通過網路yum源安裝了一個gd包,但在宿主系統安裝的時候,也許沒有網路,但光碟片裡面有gd包,也許你可以通過關盤安裝gd庫。但你不能保證gd庫的版本和之前打包nginx的時候是一樣的。一般來說光碟片裡面的gd庫大部分都比網路yum源的版本要低,所以並不能保證nginx的正常使用,因為我們都不知道gd庫的升級到底升級了些什麼東西。我們的解決辦法是在打包的時候,記下來打包的時候他的打包需要依賴一些什麼包,在並把這些包download下來。在宿主系統安裝這些包,當然這些包本身也有依賴關係。所以你得一層層找出所有依賴關係,並依此安裝。


 2 、rpm包製作過程

        1. 安裝工具

            yum –y install rpm-build 

        2. 建立目錄

      

       3. 打包目錄介紹

    BUILD--源碼解壓目錄    RPMS--RPM包(成品)    SOURCES--源碼的目錄(tar.gz)    SPECS--xx.spec(makefile)    SRPMS--src.rpm=xx.spec+tar.gz(我們並不使用)    BUILDROOT             -- rpm打包安裝臨時目錄,rpm打包過程相當於安裝,只是安裝路徑會在本目錄,而不會去系統目錄。



        4. spec檔案執行個體

       mkdir -p $HOME/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS,BUILDROOT}

        雖然很多文檔不推薦使用root使用者打包rpm包,但為了方便我們還是使用了root帳號,只要打包的時候注意哈,還是不會出問題的。

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/4C/78/wKiom1Q-F33j8GzjAAQo-7ctOI0222.jpg" title="9L1H_TN6[@Z6QTD4MG)0MM6.jpg" alt="wKiom1Q-F33j8GzjAAQo-7ctOI0222.jpg" />650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/4C/79/wKioL1Q-F92xD6MoAAR-VLiVMqk480.jpg" title="圖片1.png" alt="wKioL1Q-F92xD6MoAAR-VLiVMqk480.jpg" />

         5 . 開始打包

             在SPECS目錄執行 rpmbuild –bb nginx.spec ,同時記下來安裝過程所提示需要安裝的包。這個命令會按照我們的spec 指定的方式編譯軟體並且會在/root/rpmbuild/RPMS/x86_64/ 目錄產生對應的rpm包,這個rpm包預設會記錄在這個軟體編譯過程中會依賴於哪些其他軟體,再次強調,如果你打包的時候和你安裝的時候環境不一樣,一定要注意在安裝rpm之前手動安裝好依賴,解決可能會出現的版本過低的問題。


        6. 開始定製iso

            1、 上centos 網站下載一個完整的centos光碟片,並在虛擬機器上掛載到/mnt 目錄

Mount  –o loop  /dev/cdrom /mnt

            2、  copy 光碟片檔案到定製iso目錄,這個拷貝主要是光碟片掛載目錄不可寫問題,所以必須拷貝出來

mkdir /iso

cp /mnt/* /iso

            上面的拷貝預設是不拷貝隱藏檔案的,所以關盤的根目錄有兩個隱藏檔案,所以必須手動拷貝過來,具體這裡就不說了。

3  建立自己軟體的目錄

 mkdir /iso/lnmpcp  /root/rpmbuild/RPMS/x86_64/* /iso/lnmp


4 修改/iso/isolinux/ 目錄下的檔案

     650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/4C/79/wKioL1Q-GFXgNXRXAAJ-TV_w1x4592.jpg" title="427M_A~)6S1BH3E0A)$}O}Y.png" alt="wKioL1Q-GFXgNXRXAAJ-TV_w1x4592.jpg" />

    注意我們引用了一個*.cfg 的檔案,這個檔案則是我們定製系統的關鍵所在,

這個檔案將以附件的形式存在!

  

5第一次打包

cd /isomkisofs  -o  gzyouai_centos_6.4.iso   -b  isolinux/isolinux.bin  -c  isolinux/boot.cat  -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T ./


6 安裝第一次打包系統

7 記錄安裝好的系統的install.log 檔案

        裡面有這次安裝裝了哪些軟體,裡面的內容需要手動添加.rpm 尾碼,而且還有一些特殊的行需要刪除,拷貝這個檔案到打包系統,想辦法踢出/iso/Packages/ 中無用的軟體包!把無用的軟體包刪除。

cd /iso/Packages/

createrepo ./

按照第五步 重新打包並安裝。這樣系統才會不那麼臃腫。


本文出自 “鄭宏輝” 部落格,請務必保留此出處http://4155621.blog.51cto.com/4145621/1564368

製作自己的CentOS ISO

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.