您好,登錄后才能下訂單哦!
這篇文章主要介紹“LFS、BLFS、ALFS、HLFS的區(qū)別是什么”,在日常操作中,相信很多人在LFS、BLFS、ALFS、HLFS的區(qū)別是什么問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”LFS、BLFS、ALFS、HLFS的區(qū)別是什么”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
Linux From Scratch (LFS) 及其后代代表一種新方法,向用戶揭示 Linux 操作系統(tǒng)是如何工作的。LFS 基于這樣的假設(shè),即一部分一部分地編譯完整的操作系統(tǒng)不僅能夠揭示操作系統(tǒng)是如何工作的,也允許獨(dú)立的操作人員為速度、內(nèi)存占用或安全性而構(gòu)建系統(tǒng)。
許多作家已經(jīng)編寫(xiě)了有關(guān) UNIX 風(fēng)格的書(shū)籍,深入研究了調(diào)度、內(nèi)存管理、多進(jìn)程和線程、文件系統(tǒng),以及用戶與內(nèi)核之間的交互。寫(xiě)作 Linux 書(shū)籍的作家相對(duì)于 UNIX 作家來(lái)說(shuō)有一個(gè)優(yōu)勢(shì):盡管團(tuán)體發(fā)生了劇變,但是 Linux 內(nèi)核不可能分成幾個(gè)相互競(jìng)爭(zhēng)的分支,由于 GNU Public License (GPL)、集中式研究實(shí)驗(yàn)室 Open Source Development Lab (OSDL) 和 Linus Torvalds 不可動(dòng)搖的地位,使得 Linux 有幸成為一個(gè)緩慢移動(dòng)的目標(biāo)(slow-moving target)。
為什么 UNIX 內(nèi)核很重要
除了某些方面具有一定的相似性之外,不同的 Unix 內(nèi)核并不怎么相同。各種 UNIX 風(fēng)格也具有一個(gè) Linux 所缺少的優(yōu)點(diǎn):所有 UNIX 風(fēng)格都被假定是完全的操作系統(tǒng)。Linux 通常被描述為“只是一個(gè)內(nèi)核”(如果有這樣的定義的話,也是一個(gè)武斷的定義),它給出公共功能和實(shí)現(xiàn)的核心,不管內(nèi)核是運(yùn)行在不太強(qiáng)大的 Pentium? II 機(jī)器上還是 Symmetric Multiprocessing (SMP) 系統(tǒng)上,這些公共功能和實(shí)現(xiàn)都不會(huì)發(fā)生本質(zhì)上的改變。為了更加簡(jiǎn)化,有人可能會(huì)說(shuō),離 Linux 內(nèi)核越遠(yuǎn),就會(huì)發(fā)現(xiàn)更多的變化,而 UNIX 系統(tǒng)則趨向于是各種 UNIX/POSIX 標(biāo)準(zhǔn)的離散實(shí)現(xiàn)。
事情并沒(méi)有這么簡(jiǎn)單。檢測(cè) Linux 內(nèi)核和系統(tǒng)級(jí)代碼可能是一件很費(fèi)時(shí)間的事情,并且在現(xiàn)實(shí)世界中會(huì)限制使用。LFS 項(xiàng)目旨在解決 Linux 上有限的系統(tǒng)級(jí)可理解性問(wèn)題。關(guān)于內(nèi)核需要大量的庫(kù)和工具來(lái)讓 Linux 系統(tǒng)執(zhí)行最基本的任務(wù)這一事實(shí),已經(jīng)做過(guò)討論了,但是如果一個(gè)比較熟練的用戶具有一個(gè) slim-line Linux 發(fā)行版,他不想下載幾吉字節(jié)不讓他優(yōu)化系統(tǒng)、也不讓他拋開(kāi)所有這些麻煩且不必要的工具的二進(jìn)制代碼,那該怎么辦?如果一個(gè)非常熟練的用戶拒絕接受各種社團(tuán) 發(fā)行版的 苛刻條件(diktat),而想要運(yùn)行一個(gè)來(lái)自 CD 的 Linux/Apache/MySQL/PHP (LAMP) 類(lèi)型的應(yīng)用程序堆棧,那該怎么辦?LFS 可以解決這些問(wèn)題。
Linux From Scratch (LFS)
LFS 項(xiàng)目顯然建立于那些對(duì)于構(gòu)成基本的 Linux 系統(tǒng)來(lái)說(shuō)充分而不必要的源文件的基礎(chǔ)之上。它已經(jīng)超越了 Linux 內(nèi)核和設(shè)備驅(qū)動(dòng)程序,因?yàn)橐a(chǎn)生一個(gè)可工作的 Linux 系統(tǒng),您必須添加一個(gè)完整的編譯器工具鏈、許多 Linux 匯編程序?qū)嵱霉ぞ摺libc 系統(tǒng)庫(kù)、系統(tǒng)配置工具和連接到 userland shell 訪問(wèn)的工具。LFS 建立在這樣一個(gè)假設(shè)的基礎(chǔ)之上,即 Linux 或 UNIX 允許具有一些腳本編寫(xiě)知識(shí)的用戶,了解一個(gè)完全有用的系統(tǒng)的工作方式,而不用深入研究?jī)?nèi)核代碼本身。
為了了解 Linux 系統(tǒng)的工作方式,LFS 的創(chuàng)建者們確定,通過(guò)遵循模塊依賴(lài)性來(lái)編譯系統(tǒng),可能是了解一般操作系統(tǒng)和特定的 Linux 的機(jī)制最自然的方式。用戶掌握了編譯過(guò)程之后,就可以開(kāi)始消除依賴(lài)性樹(shù)的那些連接到與支持操作系統(tǒng)基本目的無(wú)關(guān)的系統(tǒng)組件的部件。例如,在編譯完成之后, 消除編譯器工具鏈本身是可行的。在沒(méi)有全套的命令行實(shí)用工具時(shí),可以湊合使用嵌入式 LAMP 堆棧。配置實(shí)用工具也可以被丟棄,大多數(shù)用戶可以湊合著用一個(gè)而不是太多 Linux 將會(huì)支持的文件系統(tǒng)。
Linux 部件
LFS 系統(tǒng)的一個(gè)重要部件是,可以作為 tar ball 得到的大量源文件。文檔是另一個(gè)重要部件,并且是最重要的。實(shí)際上,很有可能利用一個(gè)最新的 LFS 書(shū)籍文件并創(chuàng)建一個(gè) LFS 發(fā)行版,因?yàn)?LFS 書(shū)籍中詳細(xì)描述了每個(gè)下載位置和每個(gè)源文件及其依賴(lài)性的特征。用于從內(nèi)核到編譯器到 shell 編譯每組源文件的過(guò)程都是已經(jīng)寫(xiě)好了的,如果可能,您也可以在描述具有不同特征的系統(tǒng)的 LFS 書(shū)籍中找到替代的例程。LFS 系統(tǒng)的另一個(gè)不太可能出現(xiàn)在一般用戶工具箱中的部件是,在基本 LFS 系統(tǒng)組合在一起之后引導(dǎo)系統(tǒng)所需的引導(dǎo)腳本。
現(xiàn)在對(duì) LFS 發(fā)行版的最大警告是:勇敢的發(fā)行版構(gòu)建者所需的是一個(gè)可工作的 Linux 發(fā)行版,包括一個(gè)完整的編譯器工具鏈和一套文件系統(tǒng)創(chuàng)建實(shí)用工具。自然,所有基于源代碼的 Linux 發(fā)行版都需要使用各個(gè)發(fā)行版都完全不同的特定編譯器版本來(lái)引導(dǎo)。LFS 不是該領(lǐng)域的惟一系統(tǒng),但它是惟一允許您直接處理單個(gè)源文件的系統(tǒng)。大多數(shù)其他基于源代碼的 Linux 系統(tǒng),比如 Sourcemage 和 MyGeOS,提供一個(gè)完整的下載,建議用戶使用。LFS 不作這樣的假設(shè),并且鼓勵(lì)拆開(kāi) LFS 框架。
預(yù)先假設(shè)起作用的 Linux 發(fā)行版已安裝在非外來(lái)的(nonexotic)硬件上,即使 LFS 可能沒(méi)有配置工具和腳本那么受關(guān)注。要編譯 LFS,您需要準(zhǔn)備一個(gè)分區(qū)和一個(gè)文件系統(tǒng),還需要編譯一個(gè)編譯器和系統(tǒng)庫(kù)。如果用手工完成的話,這是一個(gè)相當(dāng)傷腦筋的過(guò)程,但是也的確可以增加您在處理 其余安裝方面的自信。整個(gè)系統(tǒng)的編譯要花一小時(shí)到四天的時(shí)間,具體時(shí)間取決于底層硬件的年代和您的命令行技術(shù)熟練程度。
作一個(gè)相當(dāng)大的假設(shè),如果您愿意很大程度上保留書(shū)籍安裝,并使對(duì) LFS 書(shū)籍中提議的安裝的更改保持最小,您也可以使用自動(dòng)化的安裝例程來(lái)安裝基于 LFS 的發(fā)行版。安裝例程沒(méi)有在 LFS 書(shū)籍中給出,但是可以在名稱(chēng) Automated Linux from Scratch (ALFS) 之下作為基于 XML 的發(fā)行版得到?;顒?dòng)安裝可以作為基于 C 的腳本得到,該腳本使用 ncurses 來(lái)模擬圖形安裝。該安裝也叫做 nALFS 并給出一個(gè)極為靈活的包安裝框架。工作需要一個(gè)起作用的 Linux 系統(tǒng),并帶有可以工作的 C 編譯器和 XML 解析器。一個(gè)可以工作的 LFS 系統(tǒng)就足夠了。
Automated Linux From Scratch (ALFS)
ALFS 的目的是超越 LFS 本身。LFS 自己指導(dǎo)基于 Linux 的操作系統(tǒng)的內(nèi)部工作,但是它不具有單個(gè)圖形用戶界面 (GUI)。LFS 既不允許連接到網(wǎng)絡(luò),也不允許連接到 Internet。ALFS 可以簡(jiǎn)化系統(tǒng)的擴(kuò)展,例如,通過(guò)添加支持 Internet 訪問(wèn)的庫(kù),或者通過(guò)安裝圖形桌面所需的 X 庫(kù)。
超越 LFS (BLFS)
LFS 的創(chuàng)建者們認(rèn)識(shí)到了對(duì)其他各種基于源代碼的 Linux 系統(tǒng)的需求。為了這些想要超越 LFS 并添加 X Window System、GNOME 和網(wǎng)絡(luò)支持的人,創(chuàng)建了另一個(gè) LFS 派生物:Beyond Linux From Scratch (BLFS)。第三版 LFS 書(shū)籍(讓我們不會(huì)忘記是在談?wù)摃?shū)籍而非發(fā)行版),形成一個(gè)以一個(gè)角為基礎(chǔ)的三角形:對(duì)于自動(dòng)化編譯和完全的基于源代碼的 Linux 發(fā)行版,基本的 LFS 版本是基礎(chǔ)。BLFS 將基本的 Linux 系統(tǒng)轉(zhuǎn)化成一個(gè)完全的用戶廣泛接受的 Linux 系統(tǒng)。AFLS 簡(jiǎn)化基于源代碼的 Linux 安裝的安裝和擴(kuò)展。整個(gè)基于源代碼的系統(tǒng)的編譯是由一個(gè)腳本指導(dǎo)的,您在針對(duì)運(yùn)行腳本的硬件調(diào)整腳本之后,就可以讓腳本自己運(yùn)行了。在您(或安裝工程師) 確定需要運(yùn)行哪些包,也即特定的辦公應(yīng)用程序套件之后,您就可以容易地?cái)U(kuò)展安裝順序了。ALFS 也遲早會(huì)派上用場(chǎng),因?yàn)樗m用于從源代碼進(jìn)行網(wǎng)絡(luò)范圍的安裝。
Hardened LFS (HLFS)
LFS 家族的最后一個(gè)成員解決基于源代碼的 Linux 的一個(gè)特別重要的方面:安全性。對(duì)于不想依賴(lài)于所選的 Linux 發(fā)行版服務(wù)器交付的補(bǔ)丁的那些人,安全性的普通方法是,針對(duì)所選的核心庫(kù)和應(yīng)用程序跟蹤安全報(bào)告。對(duì)于 LFS 實(shí)現(xiàn)人員來(lái)說(shuō),問(wèn)題有些不同:盡管不是不可能,但是也難以審計(jì) Linux 內(nèi)核代碼,也許還包括集中于基于 Linux 的操作系統(tǒng)的內(nèi)部機(jī)能的很多庫(kù)和實(shí)用工具。
代碼審計(jì)相當(dāng)費(fèi)時(shí),并且只有當(dāng)補(bǔ)丁服務(wù)器是由專(zhuān)門(mén)人員集中維護(hù)的時(shí),添加大量補(bǔ)丁才是明智的。但是可以取代一些為反映安全問(wèn)題的新方法而重新編寫(xiě)過(guò) 的庫(kù)。一個(gè)好的例子是,通過(guò)從一個(gè)適當(dāng)大的隨機(jī)數(shù)池中隨機(jī)分配數(shù)字,使得猜測(cè)進(jìn)程標(biāo)識(shí)符極為困難。OpenBSD 項(xiàng)目最先采用了該方法,隨后,各種 UNIX 風(fēng)格和 Linux 發(fā)行版都采用了該方法。
一個(gè)相當(dāng)新的項(xiàng)目叫做 Hardened Linux From Scratch (HLFS),在 Linux 下采用了這一安全方法。該項(xiàng)目假設(shè)相當(dāng)正規(guī)地掌握了 LFS 和 BLFS 的一些部件,并使用了不會(huì)成為大多數(shù) Linux 系統(tǒng)中的標(biāo)準(zhǔn)的幾個(gè)實(shí)用工具和庫(kù)。
添加到 HLFS 中的最重要的部件可能是 Stack-Smashing Protector (SSP),通過(guò)使用 gcc 指令可以啟用該功能。SSP 開(kāi)發(fā)來(lái)防御 stack-smashing 攻擊,這類(lèi)攻擊屬于影響 Linux 系統(tǒng)的一類(lèi)最常見(jiàn)的安全威脅。其他安全措施包括一流的隨機(jī)數(shù)生成器和位置獨(dú)立的可執(zhí)行程序的編譯,其中通常轉(zhuǎn)化成靜態(tài)鏈接對(duì)象代碼的可執(zhí)行代碼作為共享庫(kù) 出現(xiàn),而位置獨(dú)立的可執(zhí)行庫(kù)通過(guò)將地址隨機(jī)化可以隱藏這些地址。當(dāng)然,可從 HLFS Web 站點(diǎn)得到大量補(bǔ)丁,并可查看其源代碼。
日益壯大的 LFS 家族
在許多方面,Linux 版本的 LFS 家族是一個(gè)方法,給予黑客以構(gòu)造基于 Linux 的操作系統(tǒng)的能力。但是對(duì)于 LFS 的創(chuàng)建者們來(lái)說(shuō),最重要的結(jié)果似乎是:通過(guò) LFS,所有 Linux 發(fā)行版對(duì)于所涉及的用戶都成了智能的了。通過(guò)允許用戶一部分一部分地構(gòu)建 Linux 發(fā)行版,并幫助用戶將一個(gè)基于 Linux 的操作系統(tǒng)看作一個(gè)由許多部件組成的系統(tǒng),還可以用另外的方法構(gòu)建 Linux 發(fā)行版。
更一般來(lái)說(shuō),用戶要更改構(gòu)建 Linux 發(fā)行版的方式,不必要是程序員:只要從構(gòu)建 LFS 系統(tǒng)學(xué)到的一點(diǎn)腳本編寫(xiě)能力就足夠了。LFS 專(zhuān)家可以改變和擴(kuò)展 Linux 發(fā)行版的完美組合,而不會(huì)影響它的基本結(jié)構(gòu)。對(duì)于有人員和專(zhuān)家維護(hù) Linux 系統(tǒng),但沒(méi)有資金從咨詢機(jī)構(gòu)和公司購(gòu)買(mǎi)商業(yè)支持的機(jī)構(gòu)來(lái)說(shuō),該功能特別重要。已經(jīng)針對(duì)教學(xué)目的和大型網(wǎng)絡(luò),演示了基于 LFS 的 Linux 系統(tǒng)。它們也有可能用于其他領(lǐng)域。
到此,關(guān)于“LFS、BLFS、ALFS、HLFS的區(qū)別是什么”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。