Ivon Huang
Ivon Huang

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

从头建立Linux系统,Linux from Scratch安装诀窍与心得

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 版权声明

喜欢我的文章吗?
别忘了给点支持与赞赏,让我知道创作的路上有你陪伴。

加载中…

发布评论