在大约一年前我的第一次尝试失败后,我终于设法在Linux From Scratch(LFS) 的 11.1-systemd 版本之后从头开始构建一个工作的 Linux 系统。这篇文章旨在分享我完成项目的一些经验和技巧。

背景

2020 年 6 月,我被恰当地介绍了 Linux(或某些人喜欢称之为 GNU/Linux),当时我在一家小型但成熟的公司实习了 6 个月,该公司专门从事专为物理和计算机设计的固件和控制系统量子实验。当时,我发现 GNU/Linux 背后的哲学令人着迷(我仍然如此),并在接下来的一个月(2020 年 7 月)迅速获得了我的Linux 基金会认证系统管理员(LFCS) 认证,这也恰好是我的第一个正规教育之外的专业认证。自 2020 年 9 月左右以来,我还将所有现有的笔记本电脑都切换到了 Linux(一台是 Ubuntu,另一台是 Fedora),所以我每天都使用 Linux。

尝试 LFS 的先决条件是什么?

LFS 假设您对 Linux 系统有一定程度的熟悉,因为从头开始构建和安装 Linux 系统的各种组件并非易事,需要大量时间和耐心。绝对建议第一次使用 Linux 的用户尝试对初学者友好的发行版,例如 Ubuntu 和 Fedora,并在需要时逐步向更高级的发行版努力。我个人发现我的 LFCS 背景对于理解 LFS 书中提供的说明至关重要,尽管 LFCS 认证(或同等学历,如 RHCSA)并不是硬性要求。如果您已经成功安装并管理了诸如 Arch、Debian 或 Gentoo 之类的“困难”发行版,那么 LFS 也可能是合乎逻辑的下一步。

我应该在哪里安装 LFS?

如果您以前没有尝试过并且不知道自己在做什么,那么绝对不要尝试在您的主台式机或笔记本电脑上安装 LFS,因为在此过程中很可能会犯错误,导致您的计算机无法启动,在恢复原始系统的完整性和数据可能很困难或不可能的方式。

如果你确实有一台不包含关键数据的备用计算机,它可以用来尝试 LFS,因为如果你搞砸了,可以简单地重新安装一个正常运行的系统并从那里重新尝试 LFS .与在虚拟机 (VM) 中相比,在裸机上安装 LFS 通常也被认为更具教育意义,但缺点是搞砸可能意味着您可能不得不放弃几天的辛勤工作并重新开始。

我也选择了更方便的替代方法,即在 VM 中尝试 LFS。这样,可以制作 VM 快照,以便万一错误阻止 VM 启动并且系统救援不起作用,VM 可以回滚到工作快照,并且 LFS 可以从已知的良好状态恢复而不是启动从头开始。

LFS难吗?

鉴于你对 Linux 命令行有一定的应用知识,LFS 的大部分内容实际上都相当简单,因为书中介绍的大多数命令都可以直接复制和执行而无需修改。尽管 GCC 等某些系统组件的编译过程可能需要花费数小时到数天的时间,具体取决于您的硬件规格,因此耐心是关键。

对我来说,唯一棘手的部分是你必须弄清楚一个工作内核配置,以及是否必须通过将适当的文件放置在/etc/modprobe.d下来配置动态模块加载。这部分是特定于硬件的,所以你真的需要很好地了解在内核中启用(或禁用)哪些选项,是否需要任何特定的设备驱动程序模块以及是否需要以某种方式在/etc/modprobe.d下指定它们以在系统启动时加载。否则,内核可以成功编译和安装,但生成的系统可能会以内核崩溃告终。

在具有 x86_64 架构的 KVM 来宾内部构建 LFS 的特定情况下,https://github.com/torvalds/linux/blob/master/arch/x86/configs/x86_64_defconfig给出了一个合理的按照 LFS 手册中的说明,可以轻松将其修改为工作配置的启动配置。另一方面,如果您使用make defconfig生成默认配置,则默认情况下它不会启用 KVM 来宾所需的 VirtIO 驱动程序,如果您不知道在哪里,很难通过菜单选择找到并启用它们应该看。

后续步骤

我构建的 LFS 系统目前非常小,缺少许多常用的实用程序,例如sudo或 OpenSSH 服务器。我可能会很快设置好这些,然后休息一下,尝试Kubernetes the Hard Way,然后可能会恢复使用 BLFS 构建系统(或者在裸机上重新尝试 LFS,使用只有 1G 的约 15 年历史的计算机内存)。敬请关注 ;-)

画廊

[LFS neofetch 输出](https://res.cloudinary.com/practicaldev/image/fetch/s--drji9SHm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to -uploads.s3.amazonaws.com/uploads/articles/2x1qk34npue7758t8q4f.png)

[LFS 登录屏幕](https://res.cloudinary.com/practicaldev/image/fetch/s--8rT5XNwq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to -uploads.s3.amazonaws.com/uploads/articles/tmp9n0pvkkk4841mj5a0.png)

[LFS系统版本信息](https://res.cloudinary.com/practicaldev/image/fetch/s--vn8WNM3s--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev- to-uploads.s3.amazonaws.com/uploads/articles/v9q33i609cjw5g6b5dof.png)

[我是第29460个注册LFS用户](https://res.cloudinary.com/practicaldev/image/fetch/s--O8Q31u9Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https:// /dev-to-uploads.s3.amazonaws.com/uploads/articles/kr9kt9zaadawoody24au.png)

Logo

更多推荐