BLFS(Beyond Linux From Scratch)思考

LFS(Linux from scratch) 是一个艰难的跋涉过程,我从第一次听到LFS到真正实际完成,中间间隔了很多年,而按照手册一步步完成也是非常枯燥而繁琐的过程,断断续续花费了我可能有一两周时间。

LFS给我的收获主要是对操作系统能够从无到有一个感性认识,虽然我在 Gentoo Linux 已经体验过很多这种折腾,但毕竟越底层越能破解迷思。特别是最后的 使 LFS 系统可引导 ,以前没有注意到的技术细节,因为解决一个和手册不同的磁盘挂载而触发我更了解一些GRUB。

之所以在使用Linux这么多年之后,依然来自己编译一个Linux,是因为我想构建一个更为轻巧和敏捷的Linux Host底座:

我的最终目标是构建一个运行应用的最小化系统,目标专注来降低系统的复杂度、提高系统性能和稳定性,辅助以自己定制的管控运维系统。

BLFS

BLFSLFS(Linux from scratch) 设计理念不同,并不是直接线性执行的:

  • LFS只提供一个基本核型系统,在LFS上处于不同目的可以部署不同的系统

  • BLFS是指导在LFS之上不同的方向,所以选择在你

LFS(Linux from scratch) 系统是非常核心和基础的系统,然而距离生产应用还有一步之遥:

  • 应用软件的编译、安装部署

  • 应用软件所带来的增量依赖软件和库的编译、安装

  • 持续的迭代更新以及安全补丁

Beyond Linux From Scratch (System V Edition) 是参考基础,我计划:

在学习和实验的过程中,我主要使用 MacBook Pro 2018 运行 Apple Virtualization 框架,因为这是我最好的可以移动使用的电脑。

警告

我的实践只摘要我关注和使用的BLFS部分,所以并不是完整的指南。详情请参考官方原文!

准备工作

  • 软件包列表

下载文件列表
https://ftp.gnu.org/gnu/libidn/libidn2-2.3.7.tar.gz
https://ftp.gnu.org/gnu/libunistring/libunistring-1.2.tar.xz
https://github.com/rockdaboot/libpsl/releases/download/0.21.5/libpsl-0.21.5.tar.gz
http://fcron.free.fr/archives/fcron-3.2.1.src.tar.gz
https://github.com/lfs-book/make-ca/archive/v1.14/make-ca-1.14.tar.gz
https://curl.se/download/curl-8.9.1.tar.xz
https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz
https://www.sudo.ws/dist/sudo-1.9.15p5.tar.gz
https://github.com/vcrhonek/hwdata/archive/v0.385/hwdata-0.385.tar.gz
https://ftp.gnu.org/gnu/which/which-2.21.tar.gz
https://files.pythonhosted.org/packages/source/p/packaging/packaging-24.1.tar.gz
https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.44/pcre2-10.44.tar.bz2
https://www.kernel.org/pub/software/scm/git/git-2.46.0.tar.xz
https://download.gnome.org/sources/glib/2.80/glib-2.80.4.tar.xz
https://www.cairographics.org/releases/pixman-0.43.4.tar.gz
https://gitlab.freedesktop.org/slirp/libslirp/-/archive/v4.8.0/libslirp-v4.8.0.tar.bz2
https://github.com/libevent/libevent/releases/download/release-2.1.12-stable/libevent-2.1.12-stable.tar.gz
https://github.com/tmux/tmux/releases/download/3.5a/tmux-3.5a.tar.gz
https://downloads.sourceforge.net/libtirpc/libtirpc-1.3.5.tar.bz2
https://github.com/lsof-org/lsof/releases/download/4.99.0/lsof-4.99.0.tar.gz
https://gitlab.com/OldManProgrammer/unix-tree/-/archive/2.1.3/unix-tree-2.1.3.tar.bz2
https://cmake.org/files/v3.30/cmake-3.30.2.tar.gz
https://github.com/libarchive/libarchive/releases/download/v3.7.4/libarchive-3.7.4.tar.xz
https://pagure.io/libaio/archive/libaio-0.3.113/libaio-0.3.113.tar.gz
https://dist.libuv.org/dist/v1.48.0/libuv-v1.48.0.tar.gz
https://github.com/nghttp2/nghttp2/releases/download/v1.62.1/nghttp2-1.62.1.tar.xz
https://download.gnome.org/sources/libxml2/2.13/libxml2-2.13.3.tar.xz
https://www.linuxfromscratch.org/patches/blfs/12.2/libxml2-2.13.3-upstream_fix-2.patch
https://github.com/unicode-org/icu/releases/download/release-75-1/icu4c-75_1-src.tgz
https://github.com/numactl/numactl/releases/download/v2.0.19/numactl-2.0.19.tar.gz
https://codeberg.org/IPMITool/ipmitool/archive/IPMITOOL_1_8_19.tar.gz
  • 编译顺序:

编译顺序
fcron
libpsl
libtasn1
icu
libxml2
libaio
libuv
libevent
nghttp2
cmake
p11-kit
curl
wget
make-ca
git
python-packaging
python-docutils
glib
libslirp
pixman
bridge-utils
qemu
tmux
libtirpc
lsof
tree
numactl
ipmitool