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

Ivon Huang
·
·
IPFS
·
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

Like my work? Don't forget to support and clap, let me know that you are with me on the road of creation. Keep this enthusiasm together!

Ivon Huang自由軟體、航空、20世紀歷史愛好者。 這裡記載的東西究竟會成為未來的碎片,在那最果之處,反射出匯集各處思念的光芒。 My Blog: https://ivonblog.com
  • Author
  • More

將suckless.org極簡網頁設計哲學付諸實現

Linux電腦好用的必裝軟體,從文書處理到玩遊戲一次滿足

半回憶錄形式的2022年Matters回顧問卷