高手從零開始的全定制發(fā)行版-Linux from Scratch
在制作Linux發(fā)行版中Linux from Scratch可謂是真正的大師級(jí)。Linux from Scratch是在線的社區(qū)創(chuàng)建的一本電子書,目的是幫助那些根深蒂固的想方設(shè)法提高計(jì)算機(jī)性能的人(tweaker)幫助他們來創(chuàng)建自己毫無爭(zhēng)論的***的發(fā)行版本。
Linux from Scratch
困難程度:高;時(shí)間需求:200分鐘;自定義程度:極高
對(duì)于想自定義他們的發(fā)行版本中所有的東西,從核心驅(qū)動(dòng)的選擇到默認(rèn)文本編輯器是Vi還是Emacs的真正的Linux強(qiáng)者,沒有比通過scratch來搭建你自己的核心和每個(gè)重要的組件更徹底的方法了。這就是Linux From Scratch的存在的意義。LFS(Linux from Scratch)是在線的社區(qū)創(chuàng)建的一本電子書,目的是幫助那些根深蒂固的想方設(shè)法提高計(jì)算機(jī)性能的人(tweaker)幫助他們來創(chuàng)建自己毫無爭(zhēng)論的***的發(fā)行版本。
電子書本身(在這個(gè)月的封面光盤上可以找到)包含了你需要知道的所有的細(xì)節(jié),從構(gòu)建跨平臺(tái)的編譯器到使用chroot來建立你的用戶環(huán)境。然而,在你創(chuàng)建你的LFS系統(tǒng)的時(shí)候仍有許多騙人的把戲(gotchas)需要你注意。但是,我們已經(jīng)把這些困難的部分提出了,所以你不用擔(dān)心了。下面是這本電子書的精華LXF,每一條對(duì)于每個(gè)人來說都意味著大腦充血的,滿頭大汗的不眠之夜。我們的測(cè)試根據(jù)LFS6.3,因?yàn)檫@個(gè)穩(wěn)定的live CD包含了我們需要的所有的工具,軟件包和補(bǔ)丁,但是如果你想要******大的LFS(我們要出版6.5),那么所有的電子書涵蓋了怎樣用你的主流的發(fā)行版本來搭建LSF系統(tǒng)。無論你選了哪條路,這些提示會(huì)幫助你無爭(zhēng)議的安裝!
Linux from Scratch電子書版格式清晰,并且保證每個(gè)階段準(zhǔn)確到位。
分區(qū)
當(dāng)你開始初始化cfdisk的時(shí)候,最常見的錯(cuò)誤是退出的時(shí)候沒有保存你的修改(人們?nèi)缓缶拖胫罏槭裁磎ke2fs提示'dev/hda1 不存在 '錯(cuò)誤),所以在你提交你的程序之前一定要再一次檢查你的分區(qū)對(duì)于你用戶的系統(tǒng)是可用的。
本地源
如果你使用LFS live CD,你所有的工具,源和補(bǔ)丁都被存儲(chǔ)在/lfs-sources中。一旦你建立了 'lfs' 用戶,推薦你把這些源拷貝這些到 $LFS/sources ,因?yàn)槟阒髮⒖梢哉_的完成大多數(shù)階段而不需要root允許。如果你遇到了任何問題,再一次檢查你的工作目錄是不是 $LFS/sources。下面的命令將返回 /mnt/lfs :
echo $LFS
引導(dǎo)
你一次你運(yùn)行GCC構(gòu)建的時(shí)候(使用'bootstarp'選項(xiàng)),我們推薦你離開去喝一杯咖啡。然后去喝另一杯,這個(gè)特殊的階段需要花費(fèi)一些時(shí)間,因?yàn)槟阋幾g三次GCC,然后把第三次構(gòu)建和第二次構(gòu)建比較。這個(gè)的要點(diǎn)是檢查第二次和第三次構(gòu)建是否相同,這個(gè)可以顯示你***次構(gòu)建的GCC時(shí)候是正確的。
跳過bootstarp是可能的,但是我們不推薦那樣做,因?yàn)檫@樣有可能會(huì)增加奇怪的錯(cuò)誤,而且這些錯(cuò)誤后邊不容易診斷出來。剛剛接觸LFS分散的用戶在很多論壇里發(fā)貼子想要知道為什么GCC要話那么長時(shí)間來構(gòu)建并且問這樣是否正常。確實(shí)是這樣,但是現(xiàn)在足夠的耐心,將來出現(xiàn)的問題就會(huì)更少。
在對(duì)應(yīng)的主題中,對(duì)于搭建過程來說是經(jīng)常出現(xiàn)的,在你已經(jīng)決定要花更長時(shí)間而不是你短暫的記憶可以記住的那么短的時(shí)間來完成你的安裝。確認(rèn)你沒有什么忘記做的事,否則稍后就會(huì)出現(xiàn)錯(cuò)誤,你不得不返回去來修復(fù)你的錯(cuò)誤。
核心API 總管(hernel API headers)
通常出現(xiàn)的錯(cuò)誤是誤以為kernel API headers包含在你的軟件包里。這個(gè)不是問題,你需要提取內(nèi)核源碼包(通常是linux-2.6.x.tar.bz2的格式)然后根據(jù)電子書中的步驟移動(dòng)提取路徑。
Shell的古怪舉動(dòng)
在你開始你的LFS搭建之前,了解Bsah的精妙之處是很重要的。你會(huì)創(chuàng)建系統(tǒng)鏈接、寫多行命令(這意味你看見了,你需要跟著按回車)。你可以在電子書的格式上發(fā)現(xiàn)這個(gè)問題。在整個(gè)電子書多行的命令中的每一行不會(huì)包含 > (盡管你會(huì)在終端中看見)。然后,如果你在電子書里看見了 > ,確定你敲命令的時(shí)候也輸入這個(gè)字符。我們可能沒有察覺這個(gè)意外而這樣寫:
gcc -dumpspecs | sed 's@^/lib/ld-linux.so.2@/tools&@g' > `dirname $(gcc -print-libgcc-file-name)`/specs
這樣就會(huì)出現(xiàn)奇異的錯(cuò)誤狀態(tài),文件不存在。第二行應(yīng)該是這樣:
> > `dirname $(gcc -print-libgcc-file-name)`/specs
大量時(shí)間和奉獻(xiàn),你可以搭建出像Nutyx一樣有用的版本。
不要排版(typos)
如果你使用主流的發(fā)行版本作為你的主系統(tǒng),我們衷心地推薦在shell中使用拷貝和粘貼命令。這主要是因?yàn)檫@樣不會(huì)出現(xiàn)拼寫錯(cuò)誤,而拼寫錯(cuò)誤可能會(huì)在后邊的過程中引發(fā)新的錯(cuò)誤(這個(gè)問題通常只能使用完全重新構(gòu)建的方法來解決)。對(duì)于那些一定要手動(dòng)輸入或者是使用live CD的人,一定要在你執(zhí)行命令之前反復(fù)檢查,反復(fù)檢查你使用了類型正確的括弧。手動(dòng)輸入在開始的時(shí)候會(huì)有意義,但是最終你會(huì)遭遇這頭特殊的野獸命令(beast):
GCC_INCLUDEDIR=`dirname $(gcc -print-libgcc-file-name)`/include && find ${GCC_INCLUDEDIR}/* -maxdepth 0 -xtype d -exec rm -rvf '{}' ; && rm -vf `grep -l "DO NOT EDIT THIS FILE" ${GCC_INCLUDEDIR}/*` && unset GCC_INCLUDEDIR
我們?cè)囍淮涡暂斎肴窟@些內(nèi)容,偶然使用了單獨(dú)的括號(hào),這會(huì)使所有抹殺掉所有我們已經(jīng)做對(duì)的事情!你可以通過拷貝和粘貼或者在你看見&&時(shí)單獨(dú)地輸入每一行。
別掉以輕心
在GCC第二次通過的時(shí)候,配置會(huì)變得很簡(jiǎn)單而且可以通過同樣的步驟來安裝一系列軟件包:
./configure --prefix=/tools make make install
然而,這個(gè)不是一直都有效,通過工作環(huán)境和LFS的補(bǔ)丁你會(huì)跟快的命中(hit)軟件包,使它們正確的工作。基于這個(gè)原因,你必須一有時(shí)間就頻繁地查閱電子書,這樣才能避免奇怪的行為和之后有可能出現(xiàn)的錯(cuò)誤。
轉(zhuǎn)移到root
你應(yīng)該以用戶 'lfs' 來登錄系統(tǒng),但是一旦你執(zhí)行命令的時(shí)候你就應(yīng)該貼換到root。你可以通過按住Alt和右箭頭鍵(你可以使用有箭頭鍵按鈕回到 lfs 用戶)。在這個(gè)步驟中一定要按電子書中說的做備份。所有的這些可能導(dǎo)致的是在一個(gè)錯(cuò)誤的路徑中執(zhí)行了一個(gè)糟糕的rm命令,這會(huì)使你幾個(gè)小時(shí)的辛苦勞動(dòng)付之東流。你可以通過下面的命令創(chuàng)建一個(gè)存檔(因此挽救了一些空間) :
tar -cvf --file=$LFS/tools/lfs_build.tar $LFS/tools
然后拷貝壓縮包到外部存儲(chǔ)介質(zhì)或者是你能輕松恢復(fù)系統(tǒng)的地方。即使你沒有使用存檔備份,將來你也可以使用它迅速地搭建另外的LFS系統(tǒng)。
搭建你夢(mèng)想的發(fā)行版本
Linux From Scratch伴隨著電子書,打開超越Linux from Scrach搭建一個(gè)可擴(kuò)展的、自定義的,標(biāo)準(zhǔn)的基于LFS的系統(tǒng)的無限可能的窗戶。LFS論述了軟件包管理也論述了怎樣搭建桌面環(huán)境和一般的軟件包。
想要看Linux from Scratch到底能做多少,那么你看看Nutyx吧(www.nutyx.org)。這是法語的網(wǎng)站,到現(xiàn)在為止還沒有使用英語的選項(xiàng),但是這個(gè)發(fā)行版本已經(jīng)有了全面的桌面和應(yīng)用程序套裝,非常好用。
LFS關(guān)鍵的事是你可以完全掌握哪些補(bǔ)丁和更新可以被應(yīng)用。所有的都是從源代碼編譯來的,所以它像閃電一樣快。你總是可以選擇是否升級(jí)內(nèi)核,哪些軟件可以,哪些軟件不可以在你的系統(tǒng)上運(yùn)行。這可能會(huì)話費(fèi)一些時(shí)間來完成這種發(fā)行版本搭建天堂,之后還學(xué)要去維護(hù)它,但是結(jié)果是值得的。
或者是Gentoo的方式
如果你不能獲得有足夠自定義潛力的發(fā)行版本,那么看一看Gentoo是值得的。和Arch Linux類似,Gentoo支持滾動(dòng)升級(jí),但是不像Arch,Gentoo給你選用Linux還是BSD作為核心的選擇。同時(shí)它也包含了300個(gè)開發(fā)者維護(hù)的10,000個(gè)軟件包的服務(wù),這些軟件包通過Gentoo社區(qū)要求的,Linux世界中***級(jí)的軟件包管理系統(tǒng)來分發(fā)(叫做Portage)。
Gentoo從源代碼編譯所有的軟件包,旨在獲得穩(wěn)定的系統(tǒng),然而Arch Linux安裝二進(jìn)制包旨在成為自由軟件開發(fā)的***。你使用哪個(gè)版本是由你的目的和你想控制多少而決定的,但是如果你不能在Arch 和Linux From Scratch中做出選擇的話,Gentoo值得你一試。
Gentoo是同樣喜歡LFS和Arch Linux的人的一個(gè)更好的選擇。
【編輯推薦】