日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LFS、BLFS、ALFS、HLFS的区别详解

發(fā)布時間:2023/12/3 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LFS、BLFS、ALFS、HLFS的区别详解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Linux From Scratch (LFS) 及其后代代表一種新方法,向用戶揭示 Linux 操作系統(tǒng)是如何工作的。LFS 基于這樣的假設(shè),即一部分一部分地編譯完整的操作系統(tǒng)不僅能夠揭示操作系統(tǒng)是如何工作的,也允許獨立的操作人員為速度、內(nèi)存占用或安全性而構(gòu)建系統(tǒng)。

許多作家已經(jīng)編寫了有關(guān) UNIX 風(fēng)格的書籍,深入研究了調(diào)度、內(nèi)存管理、多進程和線程、文件系統(tǒng),以及用戶與內(nèi)核之間的交互。寫作 Linux 書籍的作家相對于 UNIX 作家來說有一個優(yōu)勢:盡管團體發(fā)生了劇變,但是 Linux 內(nèi)核不可能分成幾個相互競爭的分支,由于 GNU Public License (GPL)、集中式研究實驗室 Open Source Development Lab (OSDL) 和 Linus Torvalds 不可動搖的地位,使得 Linux 有幸成為一個緩慢移動的目標(biāo)(slow-moving target)。

為什么 UNIX 內(nèi)核很重要

除了某些方面具有一定的相似性之外,不同的 Unix 內(nèi)核并不怎么相同。各種 UNIX 風(fēng)格也具有一個 Linux 所缺少的優(yōu)點:所有 UNIX 風(fēng)格都被假定是完全的操作系統(tǒng)。Linux 通常被描述為“只是一個內(nèi)核”(如果有這樣的定義的話,也是一個武斷的定義),它給出公共功能和實現(xiàn)的核心,不管內(nèi)核是運行在不太強大的 Pentium? II 機器上還是 Symmetric Multiprocessing (SMP) 系統(tǒng)上,這些公共功能和實現(xiàn)都不會發(fā)生本質(zhì)上的改變。為了更加簡化,有人可能會說,離 Linux 內(nèi)核越遠(yuǎn),就會發(fā)現(xiàn)更多的變化,而 UNIX 系統(tǒng)則趨向于是各種 UNIX/POSIX 標(biāo)準(zhǔn)的離散實現(xiàn)。

事情并沒有這么簡單。檢測 Linux 內(nèi)核和系統(tǒng)級代碼可能是一件很費時間的事情,并且在現(xiàn)實世界中會限制使用。LFS 項目旨在解決 Linux 上有限的系統(tǒng)級可理解性問題。關(guān)于內(nèi)核需要大量的庫和工具來讓 Linux 系統(tǒng)執(zhí)行最基本的任務(wù)這一事實,已經(jīng)做過討論了,但是如果一個比較熟練的用戶具有一個 slim-line Linux 發(fā)行版,他不想下載幾吉字節(jié)不讓他優(yōu)化系統(tǒng)、也不讓他拋開所有這些麻煩且不必要的工具的二進制代碼,那該怎么辦?如果一個非常熟練的用戶拒絕接受各種社團發(fā)行版的 苛刻條件(diktat),而想要運行一個來自 CD 的 Linux/Apache/MySQL/PHP (LAMP) 類型的應(yīng)用程序堆棧,那該怎么辦?LFS 可以解決這些問題。

Linux From Scratch (LFS)

LFS 項目顯然建立于那些對于構(gòu)成基本的 Linux 系統(tǒng)來說充分而不必要的源文件的基礎(chǔ)之上。它已經(jīng)超越了 Linux 內(nèi)核和設(shè)備驅(qū)動程序,因為要產(chǎn)生一個可工作的 Linux 系統(tǒng),您必須添加一個完整的編譯器工具鏈、許多 Linux 匯編程序?qū)嵱霉ぞ摺libc 系統(tǒng)庫、系統(tǒng)配置工具和連接到 userland shell 訪問的工具。LFS 建立在這樣一個假設(shè)的基礎(chǔ)之上,即 Linux 或 UNIX 允許具有一些腳本編寫知識的用戶,了解一個完全有用的系統(tǒng)的工作方式,而不用深入研究內(nèi)核代碼本身。

為了了解 Linux 系統(tǒng)的工作方式,LFS 的創(chuàng)建者們確定,通過遵循模塊依賴性來編譯系統(tǒng),可能是了解一般操作系統(tǒng)和特定的 Linux 的機制最自然的方式。用戶掌握了編譯過程之后,就可以開始消除依賴性樹的那些連接到與支持操作系統(tǒng)基本目的無關(guān)的系統(tǒng)組件的部件。例如,在編譯完成之后,消除編譯器工具鏈本身是可行的。在沒有全套的命令行實用工具時,可以湊合使用嵌入式 LAMP 堆棧。配置實用工具也可以被丟棄,大多數(shù)用戶可以湊合著用一個而不是太多 Linux 將會支持的文件系統(tǒng)。

Linux 部件

LFS 系統(tǒng)的一個重要部件是,可以作為 tar ball 得到的大量源文件。文檔是另一個重要部件,并且是最重要的。實際上,很有可能利用一個最新的 LFS 書籍文件并創(chuàng)建一個 LFS 發(fā)行版,因為 LFS 書籍中詳細(xì)描述了每個下載位置和每個源文件及其依賴性的特征。用于從內(nèi)核到編譯器到 shell 編譯每組源文件的過程都是已經(jīng)寫好了的,如果可能,您也可以在描述具有不同特征的系統(tǒng)的 LFS 書籍中找到替代的例程。LFS 系統(tǒng)的另一個不太可能出現(xiàn)在一般用戶工具箱中的部件是,在基本 LFS 系統(tǒng)組合在一起之后引導(dǎo)系統(tǒng)所需的引導(dǎo)腳本。

現(xiàn)在對 LFS 發(fā)行版的最大警告是:發(fā)行版構(gòu)建者所需的是一個可工作的 Linux 發(fā)行版,包括一個完整的編譯器工具鏈和一套文件系統(tǒng)創(chuàng)建實用工具。自然,所有基于源代碼的 Linux 發(fā)行版都需要使用各個發(fā)行版都完全不同的特定編譯器版本來引導(dǎo)。LFS 不是該領(lǐng)域的惟一系統(tǒng),但它是惟一允許您直接處理單個源文件的系統(tǒng)。大多數(shù)其他基于源代碼的 Linux 系統(tǒng),比如 Sourcemage 和 MyGeOS,提供一個完整的下載,建議用戶使用。LFS 不作這樣的假設(shè),并且鼓勵拆開 LFS 框架。

預(yù)先假設(shè)起作用的 Linux 發(fā)行版已安裝在非外來的(nonexotic)硬件上,即使 LFS 可能沒有配置工具和腳本那么受關(guān)注。要編譯 LFS,您需要準(zhǔn)備一個分區(qū)和一個文件系統(tǒng),還需要編譯一個編譯器和系統(tǒng)庫。如果用手工完成的話,這是一個相當(dāng)傷腦筋的過程,但是也的確可以增加您在處理其余安裝方面的自信。整個系統(tǒng)的編譯要花一小時到四天的時間,具體時間取決于底層硬件的年代和您的命令行技術(shù)熟練程度。

作一個相當(dāng)大的假設(shè),如果您愿意很大程度上保留書籍安裝,并使對 LFS 書籍中提議的安裝的更改保持最小,您也可以使用自動化的安裝例程來安裝基于 LFS 的發(fā)行版。安裝例程沒有在 LFS 書籍中給出,但是可以在名稱 Automated Linux from Scratch (ALFS) 之下作為基于 XML 的發(fā)行版得到。活動安裝可以作為基于 C 的腳本得到,該腳本使用 ncurses 來模擬圖形安裝。該安裝也叫做 nALFS 并給出一個極為靈活的包安裝框架。工作需要一個起作用的 Linux 系統(tǒng),并帶有可以工作的 C 編譯器和 XML 解析器。一個可以工作的 LFS 系統(tǒng)就足夠了。

Automated Linux From Scratch (ALFS)

ALFS 的目的是超越 LFS 本身。LFS 自己指導(dǎo)基于 Linux 的操作系統(tǒng)的內(nèi)部工作,但是它不具有單個圖形用戶界面 (GUI)。LFS 既不允許連接到網(wǎng)絡(luò),也不允許連接到 Internet。ALFS 可以簡化系統(tǒng)的擴展,例如,通過添加支持 Internet 訪問的庫,或者通過安裝圖形桌面所需的 X 庫。

超越 LFS (BLFS)

LFS 的創(chuàng)建者們認(rèn)識到了對其他各種基于源代碼的 Linux 系統(tǒng)的需求。為了這些想要超越 LFS 并添加 X Window System、GNOME 和網(wǎng)絡(luò)支持的人,創(chuàng)建了另一個 LFS 派生物:Beyond Linux From Scratch (BLFS)。第三版 LFS 書籍(讓我們不會忘記是在談?wù)摃前l(fā)行版),形成一個以一個角為基礎(chǔ)的三角形:對于自動化編譯和完全的基于源代碼的 Linux 發(fā)行版,基本的 LFS 版本是基礎(chǔ)。BLFS 將基本的 Linux 系統(tǒng)轉(zhuǎn)化成一個完全的用戶廣泛接受的 Linux 系統(tǒng)。AFLS 簡化基于源代碼的 Linux 安裝的安裝和擴展。整個基于源代碼的系統(tǒng)的編譯是由一個腳本指導(dǎo)的,您在針對運行腳本的硬件調(diào)整腳本之后,就可以讓腳本自己運行了。在您(或安裝工程師)確定需要運行哪些包,也即特定的辦公應(yīng)用程序套件之后,您就可以容易地擴展安裝順序了。ALFS 也遲早會派上用場,因為它適用于從源代碼進行網(wǎng)絡(luò)范圍的安裝。

Hardened LFS (HLFS)

LFS 家族的最后一個成員解決基于源代碼的 Linux 的一個特別重要的方面:安全性。對于不想依賴于所選的 Linux 發(fā)行版服務(wù)器交付的補丁的那些人,安全性的普通方法是,針對所選的核心庫和應(yīng)用程序跟蹤安全報告。對于 LFS 實現(xiàn)人員來說,問題有些不同:盡管不是不可能,但是也難以審計 Linux 內(nèi)核代碼,也許還包括集中于基于 Linux 的操作系統(tǒng)的內(nèi)部機能的很多庫和實用工具。

代碼審計相當(dāng)費時,并且只有當(dāng)補丁服務(wù)器是由專門人員集中維護的時,添加大量補丁才是明智的。但是可以取代一些為反映安全問題的新方法而重新編寫過的庫。一個好的例子是,通過從一個適當(dāng)大的隨機數(shù)池中隨機分配數(shù)字,使得猜測進程標(biāo)識符極為困難。OpenBSD 項目最先采用了該方法,隨后,各種 UNIX 風(fēng)格和 Linux 發(fā)行版都采用了該方法。

一個相當(dāng)新的項目叫做 Hardened Linux From Scratch (HLFS),在 Linux 下采用了這一安全方法。該項目假設(shè)相當(dāng)正規(guī)地掌握了 LFS 和 BLFS 的一些部件,并使用了不會成為大多數(shù) Linux 系統(tǒng)中的標(biāo)準(zhǔn)的幾個實用工具和庫。

添加到 HLFS 中的最重要的部件可能是 Stack-Smashing Protector (SSP),通過使用 gcc 指令可以啟用該功能。SSP 開發(fā)來防御 stack-smashing 攻擊,這類攻擊屬于影響 Linux 系統(tǒng)的一類最常見的安全威脅。其他安全措施包括一流的隨機數(shù)生成器和位置獨立的可執(zhí)行程序的編譯,其中通常轉(zhuǎn)化成靜態(tài)鏈接對象代碼的可執(zhí)行代碼作為共享庫出現(xiàn),而位置獨立的可執(zhí)行庫通過將地址隨機化可以隱藏這些地址。當(dāng)然,可從 HLFS Web 站點得到大量補丁,并可查看其源代碼。

日益壯大的 LFS 家族

在許多方面,Linux 版本的 LFS 家族是一個方法,給予黑客以構(gòu)造基于 Linux 的操作系統(tǒng)的能力。但是對于 LFS 的創(chuàng)建者們來說,最重要的結(jié)果似乎是:通過 LFS,所有 Linux 發(fā)行版對于所涉及的用戶都成了智能的了。通過允許用戶一部分一部分地構(gòu)建 Linux 發(fā)行版,并幫助用戶將一個基于 Linux 的操作系統(tǒng)看作一個由許多部件組成的系統(tǒng),還可以用另外的方法構(gòu)建 Linux 發(fā)行版。

更一般來說,用戶要更改構(gòu)建 Linux 發(fā)行版的方式,不必要是程序員:只要從構(gòu)建 LFS 系統(tǒng)學(xué)到的一點腳本編寫能力就足夠了。LFS 專家可以改變和擴展 Linux 發(fā)行版的完美組合,而不會影響它的基本結(jié)構(gòu)。對于有人員和專家維護 Linux 系統(tǒng),但沒有資金從咨詢機構(gòu)和公司購買商業(yè)支持的機構(gòu)來說,該功能特別重要。已經(jīng)針對教學(xué)目的和大型網(wǎng)絡(luò),演示了基于 LFS 的 Linux 系統(tǒng)。它們也有可能用于其他領(lǐng)域。

與其說 LFS 是一個發(fā)行版,它其實就是一本書,附贈的源代碼,《Linux From Scratch》(LFS)是杰勒德·比克曼斯等人編寫的久負(fù)盛名的安裝Linux的教科書,描述了從源代碼編譯Linux系統(tǒng)的方法。這本書可以從在Linux From Scratch網(wǎng)站上免費下載到,下載鏈接如文末。書中詳細(xì)地描述了如何從零開始構(gòu)建一個完整的 Linux 系統(tǒng),關(guān)于為什么有人希望安裝一套 LFS 系統(tǒng),人們問得最多的問題是,既然可以下載到一份成型的套件比如 Debian 或者 Red Hat,為什么還要去從頭開始手工安裝一份 Linux 系統(tǒng)呢?這是一個很合理的問題,我將回答你。LFS 存在的最重要的原因就是教給人們認(rèn)識一個 Linux 系統(tǒng)其內(nèi)部是如何工作的。自己創(chuàng)建一份 LFS 系統(tǒng)將讓你了解到 Linux 工作的每個細(xì)節(jié),以及它們是如何彼此依賴和協(xié)同工作的。最重要的在于,你可以按自己的喜好和需求定制它。

不過 LFS 包含的套件較少,一般來說 BLFS 提供的套件更多,其幾個相關(guān)的子項目有如下這些:
Beyond Linux From Scratch(BLFS)
標(biāo)準(zhǔn)LFS僅僅安裝了足夠讓系統(tǒng)啟動的基本軟件,以及使新系統(tǒng)能夠編譯新軟件包的開發(fā)工具。BLFS包括了更多的軟件包,且都有相應(yīng)指導(dǎo)。
Crosss Linux From Scratch(CLFS)
為需要進行交叉編譯(即在一個平臺上編譯另一個平臺的代碼)的用戶提供指導(dǎo),正式版本為1.0,另有兩個變種
1.CLFS Sysroot 采用Sysroot的方法來進行編譯,好處是軟件包的編譯次數(shù)可以減少,壞處是不能支持在編譯后對軟件進行測試,必須要啟動到目標(biāo)平臺上才能測試。
2.CLFS Embedded 一般用于極小系統(tǒng)以及嵌入式系統(tǒng)。為此,它使用uclibc而不是一般LFS使用的glibc。
Automated Linux From Scratch(ALFS)
標(biāo)準(zhǔn)LFS只是一本書,用戶需要根據(jù)書上的指引下載軟件包并手動輸入指令進行編譯。ALFS子項目提供了把這一切自動化的腳本。
Hardened Linux From Scratch(HLFS)
這個子項目致力于打造在安全性上無懈可擊的Linux系統(tǒng)。
Hints
收集一些解釋性、增強性的文檔,以協(xié)助用戶
LiveCD
利用LFS的方法生成可以自行啟動并安裝了足夠軟件的CD,可以用來在空機器上安裝LFS,或者直接在其上運行應(yīng)用。
Patches
由于軟件之間的依賴關(guān)系,在升級軟件包之后可能會導(dǎo)致LFS的過程出現(xiàn)故障。Patch項目致力于研究最新版本的軟件之間的互動,并提供一些補丁修復(fù)這些故障。

官方網(wǎng)站

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的LFS、BLFS、ALFS、HLFS的区别详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。