從零開(kāi)始編譯自己的Linux發(fā)行版 LFS 8.0正式發(fā)布
LFS 的全稱是 Linux From Scratch,就像它的名字一樣,這個(gè)發(fā)行版是一個(gè)教我們?nèi)绾螐牧汩_(kāi)始打造自己的 Linux 發(fā)行版的指南,同時(shí)還有姊妹發(fā)行版 BLFS,全稱是 Beyond Linux From Scratch,去年的9月8日發(fā)布 LFS 7.10之后,就在昨天,LFS 8.0 終于面世了。同時(shí)社區(qū)招募中文翻譯的志愿者,歡迎 Linux 愛(ài)好者報(bào)名參加。
去年的9月8日發(fā)布 LFS 7.10之后,就在昨天,LFS 8.0 終于面世了。LFS 的全稱是 Linux From Scratch,就像它的名字一樣,這個(gè)發(fā)行版是一個(gè)教我們?nèi)绾螐牧汩_(kāi)始打造自己的 Linux 發(fā)行版的指南,同時(shí)還有姊妹發(fā)行版 BLFS,全稱是 Beyond Linux From Scratch,昨天 BLFS 8.0 也一同發(fā)布了更新。準(zhǔn)確地說(shuō),昨天 LFS 社區(qū)正式發(fā)布了 LFS Version 8.0, LFS Version 8.0 (systemd), BLFS Version 8.0, 和 BLFS Version 8.0 (systemd) 四個(gè)更新版本。
與其說(shuō) LFS 是一個(gè)發(fā)行版,它其實(shí)就是一本書,附贈(zèng)的源代碼,《Linux From Scratch》(LFS)是杰勒德·比克曼斯等人編寫的久負(fù)盛名的安裝Linux的教科書,描述了從源代碼編譯Linux系統(tǒng)的方法。這本書可以從在Linux From Scratch網(wǎng)站上免費(fèi)下載到,下載鏈接如文末。書中詳細(xì)地描述了如何從零開(kāi)始構(gòu)建一個(gè)完整的 Linux 系統(tǒng),不過(guò) LFS 包含的套件較少,一般來(lái)說(shuō) BLFS 提供的套件更多,其幾個(gè)相關(guān)的子項(xiàng)目有如下這些:
Beyond Linux From Scratch(BLFS)
標(biāo)準(zhǔn)LFS僅僅安裝了足夠讓系統(tǒng)啟動(dòng)的基本軟件,以及使新系統(tǒng)能夠編譯新軟件包的開(kāi)發(fā)工具。BLFS包括了更多的軟件包,且都有相應(yīng)指導(dǎo)。
Crosss Linux From Scratch(CLFS)
為需要進(jìn)行交叉編譯(即在一個(gè)平臺(tái)上編譯另一個(gè)平臺(tái)的代碼)的用戶提供指導(dǎo),正式版本為1.0,另有兩個(gè)變種
1.CLFS Sysroot 采用Sysroot的方法來(lái)進(jìn)行編譯,好處是軟件包的編譯次數(shù)可以減少,壞處是不能支持在編譯后對(duì)軟件進(jìn)行測(cè)試,必須要啟動(dòng)到目標(biāo)平臺(tái)上才能測(cè)試。
2.CLFS Embedded 一般用于極小系統(tǒng)以及嵌入式系統(tǒng)。為此,它使用uclibc而不是一般LFS使用的glibc。
Automated Linux From Scratch(ALFS)
標(biāo)準(zhǔn)LFS只是一本書,用戶需要根據(jù)書上的指引下載軟件包并手動(dòng)輸入指令進(jìn)行編譯。ALFS子項(xiàng)目提供了把這一切自動(dòng)化的腳本。
Hardened Linux From Scratch(HLFS)
這個(gè)子項(xiàng)目致力于打造在安全性上無(wú)懈可擊的Linux系統(tǒng)。
Hints
收集一些解釋性、增強(qiáng)性的文檔,以協(xié)助用戶
LiveCD
利用LFS的方法生成可以自行啟動(dòng)并安裝了足夠軟件的CD,可以用來(lái)在空機(jī)器上安裝LFS,或者直接在其上運(yùn)行應(yīng)用。
Patches
由于軟件之間的依賴關(guān)系,在升級(jí)軟件包之后可能會(huì)導(dǎo)致LFS的過(guò)程出現(xiàn)故障。Patch項(xiàng)目致力于研究最新版本的軟件之間的互動(dòng),并提供一些補(bǔ)丁修復(fù)這些故障。
這次發(fā)布的 LFS 和 BLFS 總共有29個(gè)包得到了更新,包括啟動(dòng)腳本和安裝指南。而 BLFS 則跟上一個(gè)舊版本相比,有大概800個(gè)包得到了更新,主要更新包括:
* glibc-2.24
* binutils-2.27
* gcc-6.2.0
* /lib 移到了 /lib64
* 移除/usr/lib64 目錄
* 增加 /usr/bin/ld.gold 可用