創(chuàng)建屬于自己的GNU/Linux發(fā)行版系統(tǒng)
你需要至少60GB的硬盤(pán)空間,最好有一個(gè)非??斓木W(wǎng)絡(luò)連接(因?yàn)槟銓⒁螺d40GB的數(shù)據(jù))。同時(shí)你的鏡像點(diǎn)(也可以在同一個(gè)系統(tǒng)中)也需要40GB左右的空間。如果你會(huì)利用硬鏈接,就能夠避免一些重復(fù)的下載。這一些操作都將在Ubuntu Hardy(或者更高版本的)系統(tǒng)執(zhí)行。所有的命令都必須運(yùn)行在Root權(quán)限下。
如果你有什么問(wèn)題,可以發(fā)到我們的IRC中。Builder這個(gè)工具還只是測(cè)試版軟件,我已經(jīng)很久沒(méi)有從源碼重新編譯過(guò)該工具,因?yàn)橛行┐a已經(jīng)修改過(guò)了。
第一步:GPG Key
軟件庫(kù)中很多最近版本的apt,需要經(jīng)過(guò)GPG簽名的版本文件,這樣可以保證發(fā)行版的集成度,所以我們的第一步就是創(chuàng)建一個(gè)GPG Key。
gpg --gen-key
這個(gè)命令就可以讓你做到這些。確保Key只有一個(gè)空白的密碼。把這個(gè)Key的指紋信息記錄下來(lái),因?yàn)橹竽銓⒃谂渲梦募杏玫剿?
第二步: Deb鏡像(可選的)
為了避免重復(fù)下載文件,我建議創(chuàng)建一個(gè)Ubuntu main和universe軟件庫(kù)的鏡像點(diǎn)。這樣的話大概需要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
你也可以建一個(gè)Apache服務(wù)器,這樣你就能通過(guò)HTTP看到這個(gè)鏡像點(diǎn)。這個(gè)步驟是可選的,但是我強(qiáng)烈推薦大家制作一個(gè)本地的Ubuntu鏡像點(diǎn)。
第三步: 軟件包
你需要安裝一些軟件包,使得Builder運(yùn)行順暢。
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
如果這里面還缺少某些軟件包,請(qǐng)告知我。
第四步: 配置
用文本編輯器,打開(kāi)配置文件。你主要關(guān)心的設(shè)置有MIRROR,RELEASE,DISTRONAME,DOMAIN,BASEDIR,和REPOAPT。 如果還有其它的定制要求可以修改配置文件的其它設(shè)置部分。
MIRROR 指的是你在第二步中創(chuàng)建的鏡像點(diǎn),或者Ubuntu鏡像點(diǎn),它應(yīng)該包含安全的軟件包。
MIRRORDIST 指的是鏡像點(diǎn)的發(fā)行版本,通常是“Ubuntu“
DISTRONAME 指的是你的發(fā)行版名稱,只能包含字母和數(shù)字。
BASE_RELEASE 指的是你的版本號(hào)。版本號(hào)應(yīng)該是小寫(xiě)的,因?yàn)樗鼘⒃诼窂匠霈F(xiàn)。
TAGLINE 出現(xiàn)在開(kāi)機(jī)啟動(dòng)和登錄的屏幕中。
SIGNINGKEY 指的是第一步中你設(shè)置的GPG Key,不能包含任何空格。
BASEDIR 指的是放置軟件庫(kù)、livecd、臨時(shí)文件的目錄名稱,REPODST 指的是當(dāng)前文件系統(tǒng)下建立的鏡像點(diǎn)位置($BASEDIR/發(fā)行版名稱的小寫(xiě)形式)。
REPOAPT 指的是編譯腳本放置的路徑,用來(lái)下載軟件包。我們假定在archive.DOMAIN和security.DOMAIN以及subdomains處都是類Ubuntu的安裝方式。
本文引用地址:http://butianyuan.cn/article/201706/349433.htm
RSYNC_DEST 指的是可以通過(guò)push-repo 或者push-cd來(lái)同步的軟件庫(kù)和livecd的位置。
LOGO_LETTER 指的是標(biāo)志中的字母。
META_*_{ADD,REMOVE} 在你的默認(rèn)的軟件包建立之后,用來(lái)管理哪些軟件包你想增加或者想把它從Ubuntu默認(rèn)的軟件包移除。
*_VERSION 指的是給軟件包版本添加的號(hào)碼。每次你要重編譯一個(gè)軟件包的時(shí)候,你需要增加這些。多半都是從1開(kāi)始計(jì)。
第五步: 構(gòu)造軟件庫(kù)
./gen-repo ./do-update
這一步需要一些時(shí)間。當(dāng)這個(gè)命令運(yùn)行的時(shí)候,軟件庫(kù)有可能會(huì)不一致。這就是為何在第七步中你只需要將改動(dòng)放到鏡像點(diǎn)中。每次有新的版本(例如安全庫(kù)更新了)重新執(zhí)行 do-update命令就可以了(如果需要的話,也只可以執(zhí)行debmirror)。
如果你在64位的內(nèi)核上運(yùn)行32位的用戶程序,安裝linux32軟件包,然后執(zhí)行命令
./gen-repo linux32 ./do-update
第六步: 創(chuàng)建LiveCD
./gen-livecd
創(chuàng)建好的鏡像文件將放在 $LIVECDDIR/$DISTRONAME_L-livecd-$LIVECD_VERSION.iso
./gen-cdsource
./stage-cd
這兩個(gè)命令將創(chuàng)建一個(gè)源碼包,并把這個(gè)ISO放置在 $REPODST/cdimage
第七步:把你的軟件庫(kù)放到鏡像點(diǎn)并公開(kāi)
現(xiàn)在可以在你的鏡像點(diǎn)公開(kāi)你的軟件庫(kù)(dists和pool)地址和LiveCD,將你的新發(fā)行版向世界公開(kāi)。
./push-repo
./push-cd
? Brian Brazil 2006
Minor edits by Karl Goetz
評(píng)論