Linux From Scratch讓你從頭編譯安裝出一個Linux系統。對,就是完全從原始碼編譯軟體和Linux核心,沒有套件管理員輔助,連檔案系統結構都自己設定。
這篇文章紀錄我安裝Linux from Scratch 11.2系統的過程和訣竅,邊看邊實作大約花了整整2天,而且還沒有安裝X視窗系統。
1. Linux From Scratch簡介#
Linux From Scratch (LFS,直譯為從頭開始的Linux)是一本Linux的安裝手冊,由Gerard Beekmans等人撰寫,可免費於 官方網站 上取得。
(點選Read Online → Stable LFS 開始閱讀)
LFS主要教導使用者如何從原始碼編譯安裝Linux系統,整本書沒有太多理論,大部分都是照書上的說明打指令安裝。本書內容一直有在更新,本文標題「11.2」就是最新版號。LFS相關工具的版本都有追上最新Linux核心,使用者還能從LFS網站下載書中的軟體原始碼「教材」。
此外,照著LFS安裝之後是沒有任何圖形界面的,還要閱讀第二集《Beyond Linux From Scratch》了解如何編譯與設定X視窗系統。
雖然LFS有簡體中文翻譯版,不過有能力的話看英文版比較好。
2. Linux From Scratch安裝訣竅#
這裡給想照著書上步驟安裝LFS的人一點訣竅。
首先,推薦透過Linux宿主機安裝Linux from Scratch。也就是在現有的Linux電腦或虛擬機切一個分區用來安裝LFS,並且以chroot設定好LFS的一切東西。這樣做的好處是你可以直接將書中的指令直接複製貼上。我的作法是用Gparted在電腦上切一個64GB的硬碟分區用於安裝LFS,檔案系統為EXT4,LFS的boot分區跟宿主機共用,採用UEFI開機。
LFS只有講傳統BIOS的開機方法,在執行到 Chapter 10.4步驟時,使用者需要自行參閱 BLFS的GRUB段落,了解如何改用UEFI開機。
LFS共有十個章節,安裝LFS不需要從頭裝到尾不關機,可以退出chroot後休息再來。只要重開機後確認 LFS變數還在,接著 mount LFS分區,再按照 Chapter 7.3和 Chapter 7.4步驟,chroot進去LFS系統,就可以繼續安裝。
在 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
Chapter 4.5有提及"SBU"的計量單位,使用者可藉此評估某某軟體的編譯時間。書中皆是以1執行緒為單位計算,比方說Binutils是1 SBU,GCC是11 SBU,你就知道GCC編譯會花很長時間。如果你的電腦硬體比較好,在執行
make
指令的時候可加上"-j"的參數加快編譯速度,像我的電腦有4核心,所以一律寫成make -j8
。在進入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
# 接著按照該章節說明編譯軟體
Chapter 8每章節編譯軟體後,會有
make check
的步驟,不可略過,因為要檢查編譯過的軟體是否正常執行,可在指令中加上-j8
加快速度。Chaper 8.50 Pip3安裝套件一律使用Root。 Chapter 8.51 Wheel是先解壓縮
wheel-0.37.1.tar.gz
後進入目錄,才執行pip3 install
指令。Chapter 10.3要編譯Linux核心,建議開啟UEFI的選項。硬碟若為NVME則需要在核心中開啟NVME的config,否則開機會無法掛載。
如果要跟宿主機共用boot分區,首先將宿主機的boot分區mount到LFS的/boot目錄,接著再安裝Linux核心和GRUB。grub.cfg不需要手動調整,可用
grub2-mkconfig -o /boot/grub/grub.cfg
自動產生。之後重開機進入BIOS就會看到LFS的開機選項。
3. 寫在最後#
LFS要人全部軟體從頭編譯,讓人體會1980年代Linux剛出來時,人們開發系統的艱辛。
我用chroot安裝,大部分時候都只是複製貼上指令而已…可是手動編譯了50個以上軟體,也大致記住如何從原始碼編譯安裝軟體了。最難的還是Linux核心設定部份,有時候我會覺得乾脆拷貝Gentoo官方的核心設定檔來用好了。
然而這只是開始而已呢,光沒有圖形的系統就手動編譯了50個以上軟體,續集《Beyond Linux From Scratch》還有更多軟體要編譯。畢竟沒有X視窗是很難將Linux當桌面系統的。
讓我們下次再會吧,在那Linux彼方 (Beyond)。