如何建立屬於自己的GNU/Linux發行版?

來源:互聯網
上載者:User
簡介

本文介紹了如何在Ubuntu
Hardy的基礎上,建立屬於自己的GNU/Linux發行版。本文的作者也是gNewSense的創造者。他們在構建gNewSense的過程中,匯出了一個通用的Builder工具,使用者可以利用它定製屬於自己的GNU/Linux發行版。

作為建立gNewSense的一部分,我們匯出了Builder工具,允許在Ubuntu
Hardy的基礎上建立新的GNU/Linux發行版。通過一個簡單的設定檔,你就能夠選擇發行版的名稱,版本號碼,標語以及你想要安裝或者移除預設的軟體包。映像將會自動產生。雖然這些指令碼主要的目的是為了建立gNewSense,但是它還是一個不錯值得利用的工具。需要注意的是你可以不遵循下面的步驟使用gNewSense,因為你可以從網站的鏡像下載到相關的鏡像檔案。

你需要至少60GB的硬碟空間,最好有一個非常快的網路連接(因為你將要下載40GB的資料)。同時你的鏡像點(也可以在同一個系統中)也需要40GB左右的空間。如果你會利用永久連結,就能夠避免一些重複的下載。這一些操作都將在Ubuntu
Hardy(或者更高版本的)系統執行。所有的命令都必須運行在Root許可權下。

如果你有什麼問題,可以發到我們的IRC中。Builder這個工具還只是評估軟體,我已經很久沒有從源碼重新編譯過該工具,因為有些代碼已經修改過了。

第一步:GPG Key

軟體庫中很多最近版本的apt,需要經過GPG簽名的版本檔案,這樣可以保證發行版的整合度,所以我們的第一步就是建立一個GPG
Key。

gpg --gen-key

這個命令就可以讓你做到這些。確保Key只有一個空白的密碼。把這個Key的指紋資訊記錄下來,因為之後你將在設定檔中用到它。

第二步: Deb鏡像(可選的)

為了避免重複下載檔案,我建議建立一個Ubuntu
main和universe軟體庫的鏡像點。這樣的話大概需要40GB的空間。

debmirror --verbose --progress --method=http --host=ie.archive.ubuntu.com
--arch=i386 --source \
--dist=hardy,hardy-security,hardy-updates,hardy-backports
--section=main,main/debian-installer,universe \
--ignore-release-gpg --root=ubuntu /the/target/directory

你也可以建一個Apache伺服器,這樣你就能通過HTTP看到這個鏡像點。這個步驟是可選的,但是我強烈推薦大家製作一個本地的Ubuntu鏡像點。

第三步: 軟體包

你需要安裝一些軟體包,使得Builder運行順暢。

apt-get install reprepro debmirror build-essential apache2 subversion
cdebootstrap debootstrap imagemagick
apt-get install squashfs-tools netpbm syslinux bittornado fakeroot
devscripts equivs sharutils mkisofs
svn co http://svn.gnewsense.svnhopper.net/gnewsense/builder/trunk builder
cd builder

如果這裡面還缺少某些軟體包,請告知我。

第四步: 配置

用文字編輯器,開啟設定檔。你主要關心的設定有MIRROR,RELEASE,DISTRONAME,DOMAIN,BASEDIR,和REPOAPT。
如果還有其它的定製要求可以修改設定檔的其它設定部分。

MIRROR
指的是你在第二步中建立的鏡像點,或者Ubuntu鏡像點,它應該包含安全的軟體包。

MIRRORDIST 指的是鏡像點的發行版本,通常是"Ubuntu"

DISTRONAME 指的是你的發行版名稱,只能包含字母和數字。

BASE_RELEASE 指的是你的版本號碼。版本號碼應該是小寫,因為它將在路徑出現。

TAGLINE 出現在開機啟動和登入的螢幕中。

SIGNINGKEY 指的是第一步中你設定的GPG Key,不能包含任何空格。

BASEDIR 指的是放置軟體庫、livecd、臨時檔案的目錄名稱,REPODST
指的是當前檔案系統下建立的鏡像點位置($BASEDIR/發行版名稱的小寫形式)。

REPOAPT
指的是編譯指令碼放置的路徑,用來下載軟體包。我們假定在archive.DOMAIN和security.DOMAIN以及subdomains處都是類Ubuntu的安裝方式。

RSYNC_DEST 指的是可以通過push-repo
或者push-cd來同步的軟體庫和livecd的位置。

LOGO_LETTER 指的是標誌中的字母。

META_*_{ADD,REMOVE}
在你的預設的軟體包建立之後,用來管理哪些軟體包你想增加或者想把它從Ubuntu預設的軟體包移除。

*_VERSION
指的是給軟體包版本添加的號碼。每次你要重編譯一個軟體包的時候,你需要增加這些。多半都是從1開始計。

第五步: 構造軟體庫

./gen-repo && ./do-update

這一步需要一些時間。當這個命令啟動並執行時候,軟體庫有可能會不一致。這就是為何在第七步中你只需要將改動放到鏡像點中。每次有新的版本(例如安全存放庫更新了)重新執行
do-update命令就可以了(如果需要的話,也只可以執行debmirror)。

如果你在64位的核心上運行32位的使用者程式,安裝linux32軟體包,然後執行命令

./gen-repo && linux32 ./do-update

第六步: 建立LiveCD

./gen-livecd

建立好的鏡像檔案將放在 $LIVECDDIR/$DISTRONAME_L-livecd-$LIVECD_VERSION.iso

./gen-cdsource
./stage-cd

這兩個命令將建立一個源碼包,並把這個ISO放置在 $REPODST/cdimage

第七步:把你的軟體庫放到鏡像點並公開

現在可以在你的鏡像點公開你的軟體庫(dists和pool)地址和LiveCD,將你的新發行版向世界公開。

./push-repo
./push-cd

Brian Brazil 2006
Minor edits by Karl Goetz

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.