亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        LFS安裝簡單分析

        2007-04-29 00:00:00陶凌云徐慧劍
        計算機時代 2007年9期

        摘要:LFS是近幾年逐漸流行起來的一種制作Linux系統(tǒng)的方法,它以完全DIY的方式讓使用者打造屬于自己的Linux系統(tǒng)。雖然LFS手冊已經(jīng)提供了非常詳盡的制作流程,但LFS的初學者如果僅僅依靠這種手把手式的操作很難了解到LFS的核心思想,這和LFS的設計目的是背道而馳的。文章簡單介紹了LFS的框架以及在使用過程中需要注意的問題,使初學者能理清LFS制作過程的大致思路,順利完成LFS的第一次安裝。

        關鍵詞:LFS;Linux;工具鏈:glibc

        引言

        從Linux誕生以來,它的發(fā)展非常迅速,迄今已經(jīng)有300多個Linux發(fā)行版。國外的Fedora(原RedHat)、Debian、SUSE、Gentoo,國內(nèi)的紅旗、Magiclinux已經(jīng)成為Linux的中堅力量,IBM、SUN、Intel等廠商也表示出對Linux的濃厚興趣,加大了資金投入。目前Linux在服務器市場和Unix、Windows Server三分天下,市場占有率年年攀升;在嵌入式系統(tǒng)中Linux逐漸顯示出它穩(wěn)定、高效、易定制、易裁減、硬件支持廣泛等優(yōu)勢,成為嵌入式操作系統(tǒng)中的一支主流;而在桌面應用方面,Linux也慢慢縮短了與Windows之間的差距,在易用性、娛樂等方面都有很大改進,隨著XGL的推出,Linux已經(jīng)能實現(xiàn)效果非常出色的3D桌面。正因為Linux的應用范圍不斷擴大,影響不斷加深,有越來越多的計算機愛好者開始表現(xiàn)出對Linux的興趣。在這些Linux愛好者之中,已經(jīng)有不少人不滿足于使用Linux完成日常工作,而更關心是否能建立一—個為自己量身定制、所有部件都在自己掌控之中的Linux,這就是LFS。

        1 LFS的意義

        目前Linux的發(fā)行版大致可以分為兩類:以Fedora、SUSE等為代表的二進制發(fā)行版,這些版本是目前Linux的主流,特點是不需要編譯就可以運行,安裝時間短、操作簡便;另一種是以源碼方式發(fā)行的Linux,據(jù)筆者所知目前只有Gentoo,特點是在安裝過程中需要全部或部分編澤軟件包,但由于編譯過程中編譯器會針對本機的硬件進行優(yōu)化,所以運行速度要稍微快一點。

        LFS的全稱是Linux From Scratch,LFS也不屬于任何一類??梢岳斫鉃閺臒o到有的Linux,它不是一種Linux發(fā)行版,而是一份手冊(確切的說是一種思想),它是指不用任何預先編譯好的軟件包,也不用安裝基本系統(tǒng)的CD-ROM或啟動盤,而利用現(xiàn)有的Linux系統(tǒng)開發(fā)自己定制的系統(tǒng)。這個系統(tǒng)的所有設置都可以根據(jù)自己的需求和偏好來設定,同時在滿足自己需求的基礎上也是相當精簡的。

        可能對于大部分電腦用戶來說,使用LFS是一種浪費時間的行為,但有兩類人比較適合使用它:

        (1)對Linux的編譯、組成有強烈興趣的人。這些Linux愛好者對操作系統(tǒng)的內(nèi)部結構非常著迷,不滿足于使用市面上任何一種Linux發(fā)行版,而打算構建自己的Linux。LFS能讓用戶對系統(tǒng)有更多的控制,不依賴于他人的Linux來實現(xiàn),并可以掌控系統(tǒng)的每一個細節(jié),比如目錄布局和啟動腳本配置等。最重要的是,這個通過LFS建立起來的Linux無論用來做什么,和其他Linux發(fā)行版相比肯定是最精簡的,因為這個Linux中的所有部件都是由自己編譯,每安裝一個軟件都需要自己審核。這和目前大部分Linux發(fā)行版“打包”式的安裝方式完全不同,更加適合Linux發(fā)燒友的胃口。

        (2)打算比較完整地了解Linux構成的初學者。它可以幫助人們學習Linux系統(tǒng)內(nèi)部是如何工作的。構建一個LFS系統(tǒng)會幫助初學者了解Linux是如何運轉(zhuǎn),各部件是如何有機的結合在一起工作的。本文的主要對象就是這些LFS初學者。

        2 使用LFS所需具備的基本條件

        在使用LFS之前,對于初學者來說Linux相關的一些基礎知識是必須具備的:

        (1)能較為熟練地使用一種shell(推薦用bash)。這是最起碼的要求,否則在Linux中就寸步難行。至少會使用ls、mkdir、cp等基本命令,對輸入輸出重定向也應該非常清楚。

        (2)掌握tar及壓縮工具(bzip2、gzip)的用法。因為幾乎所有的源碼都是經(jīng)過壓縮的tar格式的文件。

        (3)需要知道Linux分區(qū)的結構,根目錄的各個子目錄的用途。

        工欲善其事,必先利其器。如果已經(jīng)具備了Linux基本知識,請到LFS官方網(wǎng)站(WWW.1inuxfromscratch.org)下載LFS手冊和LiveCD,目前已經(jīng)有不少國內(nèi)的LFS愛好者對LFS手冊做了漢化,也可以到國內(nèi)的Linux社區(qū)(如WWW.1inuxsir.org)中下載LFS手冊中文版。需要說明的是,LFS的目的是通過已存在的Linux的系統(tǒng)(宿主系統(tǒng))建立一個自己的系統(tǒng),而LFS的LiveCD就是一個可以通過光盤啟動的宿主系統(tǒng)。理論上任何宿主系統(tǒng)都可以使用LFS,但由于各方面的原因(如發(fā)行版現(xiàn)成的編譯器、連接器等工具的版本不匹配,某些發(fā)行版在Linux系統(tǒng)中加入了些不兼容的功能)導致某些宿主系統(tǒng)使用LFS的失敗率很高,因此還是推薦LFS的初學者使用LiveCD。

        3 LFS構建Linux的思路

        雖然相關手冊已經(jīng)對LFS操作步驟描述的很詳細了,但如果僅僅是簡單地根據(jù)手冊上的說明操作,那只會停留在知其然而不知其所以然的地步,達不到剖析Linux結構的目的。因此在使用LFS之前,大致了解一下LFS的原理是十分必要的。

        首先介紹一下在Linux中關于依賴的概念。大家都知道在Windows中有許多后綴名為dll的動態(tài)鏈接文件,這些文件向運行于Windows操作系統(tǒng)下的程序提供代碼、數(shù)據(jù)或函數(shù)。在Linux中也有許多這種文件,它們之間有錯綜復雜的依賴關系,大多數(shù)Linux發(fā)行版都提供了包管理器(如Fedora的RPM、Debian的APT),用來管理程序和程序之間的依賴關系。在使用LFS的過程中,本質(zhì)上要解決的就是依賴問題。我們使用LFS就是要建立一個“純凈”的,不依賴于宿主系統(tǒng)的操作系統(tǒng),我們稱之為目標系統(tǒng)。這里所說的不依賴于宿主系統(tǒng)可以簡單地理解為目標系統(tǒng)中所有的程序都不“受制于”宿主系統(tǒng)中的程序,否則宿主系統(tǒng)中的某個軟件一有變動都可能導致目標系統(tǒng)無法使用。正因為有這個限制,我們不能直接用宿主系統(tǒng)來編譯目標系統(tǒng),因為編譯的過程中將用到許多宿主系統(tǒng)的庫,直接編譯的目標系統(tǒng)會依賴于這些庫。

        在Linux中非常重要的glibc庫,是提供系統(tǒng)調(diào)用和基本函數(shù)的c庫,所有動態(tài)連接的程序都要用到它,它是LFS制作過程中的關鍵環(huán)節(jié)。在Linux平臺下大部分程序是動態(tài)連接的,比如要使用vi,它依賴于glibc和ncurses,而ncurses又依賴于glibc。因為幾乎所有的程序都依賴于glibc,所以,在目標系統(tǒng)中必須先把glibc編譯出來,才能保證目標系統(tǒng)的“自給自足”。

        但是目標系統(tǒng)的glibc可以由目標系統(tǒng)的編譯器來編譯嗎?不行。因為我們必須保證編譯Gilbc的編譯工具和和目標系統(tǒng)中依賴于glibc的編譯工具版本是一致的。但一般情況下,目標系統(tǒng)中各種工具的版本總是高于宿主系統(tǒng)中的版本。因此得先建立一個臨時編譯環(huán)境,這個環(huán)境包含了gcc、binutils、make等各種必需的和編譯有關的工具,它們的版本必須和目標系統(tǒng)中工具的版本完全一致,我們把這個臨時環(huán)境稱為工具鏈(toolchains)。通過工具鏈先制作目標系統(tǒng)中的glibc以及各種必需的編譯工具,接著就可以把編譯其他軟件的工作從工具鏈逐步轉(zhuǎn)移給目標系統(tǒng),整個目標系統(tǒng)編譯完成后就可以直接刪除工具鏈。

        問題是這個工具鏈由誰編譯出來?這個任務只能由宿主系統(tǒng)來完成,通過宿主系統(tǒng)提供的編譯工具可以制造出一個工具鏈。但因為要保證工具鏈依賴的glibc和工具鏈所生成的glibc是一致的,制作工具鏈的過程中不能直接使用宿主系統(tǒng)中的glibc,需要先制作一個臨時的、和目標系統(tǒng)匹配的glibc供工具鏈使用。

        表面上看起來問題已經(jīng)解決了,但宿主系統(tǒng)可以直接編譯一個供工具鏈使用的glibc嗎?個別情況下是可以的,但在LFS中不提倡這么做。因為這里存在一個問題,不同版本的gcc編譯出來的程序可能會不一樣,而宿主系統(tǒng)和工具鏈中gcc的版本未必是相同的,這樣會導致宿主系統(tǒng)直接編譯出來的glibc對于工具鏈來說有可能不能用。所以應該先由宿主系統(tǒng)編譯一遍gcc和binutils,使它們的版本和工具鏈中的版本一致,再由新的gcc和binutils參與glibc的編譯。

        圖1是LFS的流程簡圖,其中虛線箭頭是指工具對glibc的依賴。從圖中可以看出,要制造一個不依賴于宿主系統(tǒng)的目標系統(tǒng),首先要做一個工具鏈,通過工具鏈來編譯目標系統(tǒng)中的程序。我們得先制作一個臨時的glibc,通過這個glibc編譯出來的工具鏈可以脫離對宿主系統(tǒng)中glibc的依賴。把宿主系統(tǒng)完全編譯出來后,刪除工具鏈即可。

        4 使用LFS過程中需要注意的情況

        LFS手冊已經(jīng)提供了非常詳盡的操作流程,因此本文對具體的操作過程不再贅述,但對于接觸Linux時間不是很長的人來說在還存在某些“陷阱”,有些甚至可能會造成致命的錯誤。這里簡單總結一下安裝過程中可能會遇到的問題并對需要注意的地方加以分析,使大家在學習LFS的過程中避免花費不必要的時間和精力。

        (1)由于編譯Linux需要很長時間,第一次安裝請用LiveCD作為宿主系統(tǒng),并請完全按照手冊上的步驟來操作,在編譯過程中不要對任何參數(shù)進行修改,也不要從網(wǎng)上下載最新的源碼來代替LiveCD中的源碼,否則稍有不慎就會前功盡棄。因為安裝LFS的過程中需要編譯大量軟件包,這些軟件包之間有著錯綜復雜的依賴關系,使用最新版本的gcc未必能保證一些軟件順利通過編譯。在對LFS的安裝步驟比較熟悉并清楚各個軟件包的依賴關系之后,再用其他Linux發(fā)行版作為宿主系統(tǒng),到那時可以根據(jù)自己需要選擇各種軟件最新的源碼并進行優(yōu)化。

        (2)在使用LFS的過程中,了解每一步驟的具體含義是十分必要的,因為安裝LFS除了能了解Linux的基本結構外,另一個收獲就是能掌握大量Linux的常用命令并能靈活運用。但是在安裝過程中,將會出現(xiàn)不少對于初學者來說難以理解的語句,特別是調(diào)整工具鏈等過程會出現(xiàn)Perl語言。如果對這些語句不是很熟悉的話,很有可能少輸或錯輸一個字符而誤刪除了已經(jīng)辛辛苦苦編譯了幾小時甚至十幾小時的目標系統(tǒng)。另外,由于錯輸字符而導致的問題的“潛伏期”可能會很長,特別是調(diào)整工具鏈過程中的隱患往往到LFS整個編譯工作的結尾階段才會體現(xiàn)出來。因此如果對Perl不是很熟悉的話,建議大家可以暫時不理會這些語句的具體含義,直接將它們復制下來并運行,只要知道這些語句所起到的作用就可以了。當然,Perl是很重要的腳本語言,在Linux中幾乎無處不在,回過頭來還是應該掌握它的基本內(nèi)容的。

        (3)大部分LFS的初學者是采用LiveCD作為啟動光盤并在該系統(tǒng)下進行LFS的安裝的。LiveCD中的桌面環(huán)境十分有限,而整個編譯過程又相當耗費CPU資源,在這十幾個小時(甚至幾十個小時)中幾乎無法做其他工作,如果能了解編譯每個軟件所需要的時間,就可以更合理地進行安排。由于硬件配置存在差別,每臺電腦編譯軟件所需要的時間不可能完全相同,因此LFS中提出了一個SBU(標準編譯時間單位)的概念。編譯Binutils軟件包所花費的時間就是1單位的SBU,對于一個編譯時間為4.5 SBU的軟件包,這意味著如果一個系統(tǒng)靜態(tài)編譯安裝Binutils需要花費10分鐘,那么編譯這個軟件包將大約需要45分鐘。大部分軟件包編譯所需要的時間都小于1SBU,但在編譯gcc或者glibc這些軟件包之前最好能把握一下時間,避免編譯過程中不得不關機的情況。

        (4)保證工具鏈的完整是順利編譯目標系統(tǒng)的前提條件。工具鏈相當于宿主系統(tǒng)和目標系統(tǒng)之間的中介,雖然工具鏈到最后是被完全刪除的,但它是整個編譯過程的核心環(huán)節(jié)。因此不要因為節(jié)省時間而跳過編譯工具鏈的某些步驟,否則會得不償失。

        5 結束語

        到目前為止,大家對LFS應該有了一個基本的了解。但是,成功地安裝LFS僅僅是一個開始,它只是一個最基本的Linux系統(tǒng),在此基礎之上可以根據(jù)自己的喜好選擇衍生的LFS:如果想打造一個實用的、高效的桌面系統(tǒng)或服務器系統(tǒng),可以參考BLFS(Beyond LFS),在那里可以了解到怎么樣在LFS的基礎上建立數(shù)據(jù)庫、網(wǎng)絡等服務以及對圖形界面的支持;如果對交叉編譯感興趣,可以采用CLFS(cross LFS);另外,如果對LFS的全手工操作感到厭煩了,可以選擇ALFS(AutomatedLFS)自動完成這些工作。但無論選擇哪種LFS,在學習LFS的過程中都會加深對Linux系統(tǒng)結構、包依賴關系等內(nèi)容的了解。編譯過程可能會消耗比較多的時間,但最終面對著一個完全由自己打造的Linux,會覺得物有所值。

        国产成人丝袜网站在线看| 天堂中文最新版在线中文| 亚洲乱码中文字幕综合| 国产一及毛片| 国产黄色一区二区福利| 一本色道久久88—综合亚洲精品 | 欧美激情精品久久999| 久久精品一区一区二区乱码| 色爱情人网站| 日韩精品一区二区三区免费视频| 久久频精品99香蕉国产| 美女把内衣内裤脱了给男人舔 | 精品国产av色一区二区深夜久久| 亚洲精品夜夜夜| 男女上床视频在线观看| 亚洲av色图一区二区三区| 国产高潮视频在线观看| 国产成人精品午夜福利在线| 亚洲国产综合性感三级自拍| 亚洲最近中文字幕在线| 久久99久久99精品中文字幕| 国内精品人妻无码久久久影院94| 久久综合久中文字幕青草| 91中文人妻熟女乱又乱| 内谢少妇xxxxx8老少交| 免费国产一级片内射老| 亚洲精品中文字幕乱码无线| 亚洲人成影院在线无码按摩店| 亚洲欧洲日产国码无码久久99| 97人妻无码免费专区| 国产精品精品国产色婷婷| 首页 综合国产 亚洲 丝袜| 综合色天天久久| 日本av一级视频在线观看| 男女猛烈无遮挡免费视频| 亚洲av无码专区亚洲av桃| 国产熟女乱综合一区二区三区| 在线精品国产亚洲av蜜桃| 国产乱色精品成人免费视频| 久久99亚洲综合精品首页| 久久免费亚洲免费视频|