Revision history and IPFS entry, back to latest
Ivon Huang
IPFS What is this

Content Hash

從頭建立Linux系統,Linux from Scratch安裝訣竅與心得

Ivon Huang
·
·
LFS要從頭編譯軟體和系統,讓人體會1980年代Linux剛出來時,人們開發系統的艱辛。

Linux From Scratch教你從頭編譯安裝出一個Linux系統。就是完全從原始碼編譯軟體和Linux核心,沒有套件管理員輔助,連檔案系統結構都自己設定。

這篇文章紀錄我安裝Linux From Scratch 11.2系統的過程和訣竅,邊看邊實作大約花了整整2天,而且還沒有安裝X視窗系統。

## 1. 簡介

Linux From Scratch (LFS,直譯為從頭開始的Linux)是一本Linux的安裝手冊,由傑勒德·比克曼斯等人撰寫,可免費於官方網站上取得。

(點選Read Online → Stable LFS 開始閱讀)

LFS主要教導使用者如何從原始碼編譯安裝Linux系統,整本書沒有太多理論,大部分都是照書上的說明打指令安裝。本書內容一直有在更新,LFS相關工具的版本都有追上最新Linux核心,使用者還能從LFS網站下載書中的軟體原始碼「教材」。

此外,照著LFS安裝之後是沒有任何圖形界面的,還要閱讀第二集《Beyond Linux From Scratch》了解如何編譯與設定X視窗系統。

雖然LFS有簡體中文翻譯版,不過有能力的話看英文版比較好。

## 2. LFS安裝註解

這裡給想照著書上步驟安裝LFS的人一點訣竅。


1. 首先,推薦透過Linux宿主機安裝Linux From Scratch。也就是在現有的Linux電腦或虛擬機的硬碟切一個分區用來安裝LFS,並且以chroot設定好LFS的一切東西。這樣做的好處是你可以直接將書中的指令直接複製貼上。

我的作法是用Gpared在電腦上切一個64GB的硬碟分區用於安裝LFS,檔案系統為EXT4,LFS的boot分區跟宿主機共用,採用UEFI開機。


2. LFS只有講傳統BIOS的開機方法,在執行到Chapter 10.4步驟時,使用者需要自行參閱BLFS的GRUB段落,了解如何改用UEFI開機。


3. LFS共有10個章節,但安裝LFS不需要從頭裝到尾不關機,可以退出chroot後休息再來。只要重開機後確認LFS變數還在,接著mount LFS分區,再按照Chapter 7.3Chapter 7.4步驟,chroot進去LFS系統,就可以繼續安裝。


4. 在Chapter 3.1要下載軟體原始碼的時候,可以使用wget-lists-sysv一次下載LFS需要的全部軟體和patch:

wget --input-file=https://www.linuxfromscratch.org/lfs/view/stable/wget-list-sysv --continue --directory-prefix=$LFS/sources
wget --input-file=$LFS/sources/wget-list-sysv --continue --directory-prefix=$LFS/sources


5. Chapter 4.5有提及"SBU"的計量單位,使用者可藉此評估某某軟體的編譯時間。書中皆是以1執行緒為單位計算,比方說Binutils是1 SBU,GCC是11 SBU,你就知道GCC編譯會花很長時間。如果你的電腦硬體比較好,在執行`make`指令的時候可加上"-j"的參數加快編譯速度,像我的電腦有4核心,所以寫成`make -j8`。


6. 在進入Chapter 5後會開始編譯軟體。當書中說要編譯某某軟體的時候,使用者要手動切換到`$LFS/sources`目錄,將對應的軟體原始碼用tar解壓縮,並切換到該目錄,才能繼續操作。例如Chapter 5.2. Binutils-2.39 - Pass 1

cd $LFS/sources
tar -xvf binutils-2.39.tar.xz
cd binutils-2.39
# 接著按照該章節說明編譯軟體


7 . Chapter 8每章節編譯軟體後,會有`make check`的步驟,不可略過,因為要檢查編譯過的軟體是否正常執行,可在指令中加上`-j8`加快速度。


8. Chaper 8.50中Pip3安裝套件一律使用root。Chapter 8.51的Wheel是先解壓縮`wheel-0.37.1.tar.gz`後進入目錄,才執行`pip3 install`指令。


9. Chapter 10.3要編譯Linux核心,建議開啟UEFI的選項。硬碟若為NVME則需要在核心中開啟NVME的config,否則開機會無法掛載。


10. 如果要跟宿主機共用boot分區,首先將宿主機的boot分區mount到LFS的/boot目錄,接著再安裝Linux核心和GRUB。grub.cfg不需要手動調整,可用`grub2-mkconfig -o /boot/grub/grub.cfg`自動產生。之後重開機進入BIOS就會看到LFS的開機選項。

## 寫在最後

LFS要人全部軟體從頭編譯,讓人體會1980年代Linux剛出來時,人們開發系統的艱辛。

我用chroot安裝,大部分時候都只是複製貼上指令而已...可是手動編譯了50個以上軟體,也大致記住如何從原始碼編譯安裝軟體了。最難的還是Linux核心設定部份,有時候我會覺得乾脆拷貝Gentoo官方的核心設定檔來用好了。

然而這只是開始而已呢,光沒有圖形的系統就手動編譯了50個以上軟體,續集《Beyond Linux From Scratch》還有更多軟體要編譯。畢竟沒有X視窗是很難將Linux當桌面系統的。

讓我們下次再會吧,在那Linux彼方 (Beyond)。


謝謝您的閱讀,有空歡迎來我的Blog看看更多自由軟體的情報。

CC BY-NC-ND 2.0