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