切换到 root
用户 下载软件包以及其他工作需要以 root
身份执行, Linux Mint
默认没有启动 root
用户, 所以先要启用该用户。
启用 root 用户 给 root
用户设置密码即可启用该用户, 使用命令 sudo passwd root
设置 root
用户的密码, 执行过程如下:
1 2 3 4 5 6 laohoo@laohoo-virtual-machine:~$ sudo passwd root [sudo ] password for laohoo: New password: Retype new password: passwd: password updated successfully laohoo@laohoo-virtual-machine:~$
切换到 root
用户 使用命令 su - root
进行切换, 执行过程如下:
1 2 3 laohoo@laohoo-virtual-machine:~$ su - root Password: root@laohoo-virtual-machine:~#
设置当前用的 $LFS
环境变量 重新进入系统 或 切换用户之后, 要先使用命令 echo $LFS
检查是否已经设置 LFS
变量, 如果没有设置该变量则执行命令 export LFS=/mnt/lfs
进行设置, 操作过程如下:
1 2 3 4 5 root@laohoo-virtual-machine:~# echo $LFS root@laohoo-virtual-machine:~# export LFS=/mnt/lfs root@laohoo-virtual-machine:~# echo $LFS /mnt/lfs
创建下载文件的目录 我们要以从 https://www.linuxfromscratch.org/lfs/mirrors.html#files
给出的 Files Mirrors
地址下载编译系统所需要的源码文件。
下载好的软件包和补丁需要保存在一个适当位置, 以方便在构建过程中使用它们, 同时还需要一个工作目录, 用于解压和编译软件包。此处使用 $LFS/sources
, 用于保存编译系统所需要的源码文件。
创建源代码目录 以 root
身份执行命令mkdir -v $LFS/sources
创建 $LFS/sources
目录用于保存软件包源码, 执行过程如下:
1 2 3 root@laohoo-virtual-machine:~# mkdir -v $LFS /sources mkdir : created directory '/mnt/lfs/sources' root@laohoo-virtual-machine:~#
修改文件夹的读写权限 修改 $LFS/sources
目录的读写权限, 命令为:chmod -v a+wt $LFS/sources
, 执行过程如下:
1 2 3 root@laohoo-virtual-machine:~# chmod -v a+wt $LFS /sources mode of '/mnt/lfs/sources' changed from 0755 (rwxr-xr-x) to 1777 (rwxrwxrwt) root@laohoo-virtual-machine:~#
软件包文件下载 下载用的目录创建及成功设置权限之后, 就可以开始下载所需要的软件包了。
下载 Linux From Scratch
软件包有以下几种办法:
在LFS文档
的第3
章(https://www.linuxfromscratch.org/lfs/view/stable/chapter03/packages.html
), 按照给出来链接一个个去下载。
使用 linux
的 wget
命令批量下载, 批量下载的时候需要先准备一个 wget-list
文件, 在文件中保存所有需要下载的文件的地址, wget-list
文件可以从以下地下获取(需要下载最新版的 wget-list
): https://www.linuxfromscratch.org/lfs/downloads/stable/wget-list
在 wget-list
文件所在目录执行下载命令:
1 wget --input-file=wget-list --continue --directory-prefix=$LFS /sources
这种方式比第一种更方便, 但是部分软件包所在的服务器在国内访问很困难, 所以可以考虑使用第3种办法
部分LFS
镜像网站(例如: https://mirrors.ustc.edu.cn/lfs/
) 提供了包缩版的软件包, 直接下载、解压缩即可, 下载地址: https://mirrors.ustc.edu.cn/lfs/lfs-packages/lfs-packages-11.2.tar
下载软件包, 命令: wget https://mirrors.ustc.edu.cn/lfs/lfs-packages/lfs-packages-11.2.tar
执行过程如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 root@laohoo-virtual-machine:~# wget https://mirrors.ustc.edu.cn/lfs/lfs-packages/lfs-packages-11.2.tar --2023-02-22 15:45:37-- https://mirrors.ustc.edu.cn/lfs/lfs-packages/lfs-packages-11.2.tar Resolving mirrors.ustc.edu.cn (mirrors.ustc.edu.cn)... 202.141.160.110, 2001:da8:d800:95::110 Connecting to mirrors.ustc.edu.cn (mirrors.ustc.edu.cn)|202.141.160.110|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 497090560 (474M) [application/octet-stream] Saving to: ‘lfs-packages-11.2.tar’ lfs-packages-11.2.tar 100%[=================================================>] 474.06M 4.52MB/s in 2m 12s 2023-02-22 15:47:49 (3.58 MB/s) - ‘lfs-packages-11.2.tar’ saved [497090560/497090560] root@laohoo-virtual-machine:~#
解压 lfs-packages-11.2.tar
, 命令: tar xf lfs-packages-11.2.tar
, 执行过程如下:
1 2 3 4 root@laohoo-virtual-machine:~# ls lfs-packages-11.2.tar root@laohoo-virtual-machine:~# tar xf lfs-packages-11.2.tar root@laohoo-virtual-machine:~# ls
查看解压后的结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 root@laohoo-virtual-machine:~# ls -l total 485448 drwxrwxr-x 2 laohoo laohoo 4096 Aug 22 2022 11.2-rc1 -rw-r--r-- 1 root root 497090560 Aug 22 2022 lfs-packages-11.2.tar root@laohoo-virtual-machine:~# ls 11.2-rc1 acl-2.3.1.tar.xz gmp-6.2.1.tar.xz openssl-3.0.5.tar.gz attr-2.5.1.tar.gz gperf-3.1.tar.gz patch-2.7.6.tar.xz autoconf-2.71.tar.xz grep-3.7.tar.xz perl-5.36.0.tar.xz automake-1.16.5.tar.xz groff-1.22.4.tar.gz pkg-config-0.29.2.tar.gz bash-5.1.16.tar.gz grub-2.06.tar.xz procps-ng-4.0.0.tar.xz bc-6.0.1.tar.xz gzip-1.12.tar.xz psmisc-23.5.tar.xz binutils-2.39.tar.xz iana-etc-20220812.tar.gz python-3.10.6-docs-html.tar.bz2 bison-3.8.2.tar.xz inetutils-2.3.tar.xz Python-3.10.6.tar.xz bzip2-1.0.8-install_docs-1.patch intltool-0.51.0.tar.gz readline-8.1.2.tar.gz bzip2-1.0.8.tar.gz iproute2-5.19.0.tar.xz sed-4.8.tar.xz check-0.15.2.tar.gz Jinja2-3.1.2.tar.gz shadow-4.12.2.tar.xz check.sh kbd-2.5.1-backspace-1.patch sysklogd-1.5.1.tar.gz coreutils-9.1-i18n-1.patch kbd-2.5.1.tar.xz systemd-251-glibc_2.36_fix-1.patch coreutils-9.1.tar.xz kmod-30.tar.xz systemd-251.tar.gz dbus-1.14.0.tar.xz less-590.tar.gz systemd-man-pages-251.tar.xz dejagnu-1.6.3.tar.gz lfs-bootscripts-20220723.tar.xz sysvinit-3.04-consolidated-1.patch diffutils-3.8.tar.xz libcap-2.65.tar.xz sysvinit-3.04.tar.xz e2fsprogs-1.46.5.tar.gz libffi-3.4.2.tar.gz tar-1.34.tar.xz elfutils-0.187.tar.bz2 libpipeline-1.5.6.tar.gz tcl8.6.12-html.tar.gz eudev-3.2.11.tar.gz libtool-2.4.7.tar.xz tcl8.6.12-src.tar.gz expat-2.4.8.tar.xz linux-5.19.2.tar.xz texinfo-6.8.tar.xz expect5.45.4.tar.gz m4-1.4.19.tar.xz tzdata2022c.tar.gz extra.sh make-4.3.tar.gz udev-lfs-20171102.tar.xz file-5.42.tar.gz man-db-2.10.2.tar.xz util-linux-2.38.1.tar.xz findutils-4.9.0.tar.xz man-pages-5.13.tar.xz vim-9.0.0228.tar.gz flex-2.6.4.tar.gz MarkupSafe-2.1.1.tar.gz wget-list gawk-5.1.1.tar.xz md5sums wheel-0.37.1.tar.gz gcc-12.2.0.tar.xz meson-0.63.1.tar.gz XML-Parser-2.46.tar.gz gdbm-1.23.tar.gz mpc-1.2.1.tar.gz xz-5.2.6.tar.xz gettext-0.21.tar.xz mpfr-4.1.0.tar.xz zlib-1.2.12.tar.xz glibc-2.36-fhs-1.patch ncurses-6.3.tar.gz zstd-1.5.2.tar.gz glibc-2.36.tar.xz ninja-1.11.0.tar.gz zstd-1.5.2-upstream_fixes-1.patch root@laohoo-virtual-machine:~#
从以上显示结果来看, 解压后的软件包在子目录 11.2-rc1
中。
将解压后 11.2-rc1
目录内的软件包移动到 $LFS/sources
目录, 执行命令:
1 mv 11.2-rc1/* $LFS /sources
执行命令 cd $LFS/sources
设置当前目录为 $LFS/sources
, 操作如下:
1 2 root@laohoo-virtual-machine:~# cd $LFS /sources root@laohoo-virtual-machine:/mnt/lfs/sources#
查看$LFS/sources
目录的内容, 命令执行如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 root@laohoo-virtual-machine:/mnt/lfs/sources# ls acl-2.3.1.tar.xz findutils-4.9.0.tar.xz libcap-2.65.tar.xz readline-8.1.2.tar.gz attr-2.5.1.tar.gz flex-2.6.4.tar.gz libffi-3.4.2.tar.gz sed-4.8.tar.xz autoconf-2.71.tar.xz gawk-5.1.1.tar.xz libpipeline-1.5.6.tar.gz shadow-4.12.2.tar.xz automake-1.16.5.tar.xz gcc-12.2.0.tar.xz libtool-2.4.7.tar.xz sysklogd-1.5.1.tar.gz bash-5.1.16.tar.gz gdbm-1.23.tar.gz linux-5.19.2.tar.xz systemd-251-glibc_2.36_fix-1.patch bc-6.0.1.tar.xz gettext-0.21.tar.xz m4-1.4.19.tar.xz systemd-251.tar.gz binutils-2.39.tar.xz glibc-2.36-fhs-1.patch make-4.3.tar.gz systemd-man-pages-251.tar.xz bison-3.8.2.tar.xz glibc-2.36.tar.xz man-db-2.10.2.tar.xz sysvinit-3.04-consolidated-1.patch bzip2-1.0.8-install_docs-1.patch gmp-6.2.1.tar.xz man-pages-5.13.tar.xz sysvinit-3.04.tar.xz bzip2-1.0.8.tar.gz gperf-3.1.tar.gz MarkupSafe-2.1.1.tar.gz tar-1.34.tar.xz check-0.15.2.tar.gz grep-3.7.tar.xz md5sums tcl8.6.12-html.tar.gz check.sh groff-1.22.4.tar.gz meson-0.63.1.tar.gz tcl8.6.12-src.tar.gz coreutils-9.1-i18n-1.patch grub-2.06.tar.xz mpc-1.2.1.tar.gz texinfo-6.8.tar.xz coreutils-9.1.tar.xz gzip-1.12.tar.xz mpfr-4.1.0.tar.xz tzdata2022c.tar.gz dbus-1.14.0.tar.xz iana-etc-20220812.tar.gz ncurses-6.3.tar.gz udev-lfs-20171102.tar.xz dejagnu-1.6.3.tar.gz inetutils-2.3.tar.xz ninja-1.11.0.tar.gz util-linux-2.38.1.tar.xz diffutils-3.8.tar.xz intltool-0.51.0.tar.gz openssl-3.0.5.tar.gz vim-9.0.0228.tar.gz e2fsprogs-1.46.5.tar.gz iproute2-5.19.0.tar.xz patch-2.7.6.tar.xz wget-list elfutils-0.187.tar.bz2 Jinja2-3.1.2.tar.gz perl-5.36.0.tar.xz wheel-0.37.1.tar.gz eudev-3.2.11.tar.gz kbd-2.5.1-backspace-1.patch pkg-config-0.29.2.tar.gz XML-Parser-2.46.tar.gz expat-2.4.8.tar.xz kbd-2.5.1.tar.xz procps-ng-4.0.0.tar.xz xz-5.2.6.tar.xz expect5.45.4.tar.gz kmod-30.tar.xz psmisc-23.5.tar.xz zlib-1.2.12.tar.xz extra.sh less-590.tar.gz python-3.10.6-docs-html.tar.bz2 zstd-1.5.2.tar.gz file-5.42.tar.gz lfs-bootscripts-20220723.tar.xz Python-3.10.6.tar.xz zstd-1.5.2-upstream_fixes-1.patch
检查所有软件包的正确性 下载的软件包中提供了一个用来检查所有软件包的正确性的 md5sums
文件, 使用命令 md5sum -c md5sums
进行检测,执行过程如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 root@laohoo-virtual-machine:/mnt/lfs/sources# md5sum -c md5sums acl-2.3.1.tar.xz: OK attr-2.5.1.tar.gz: OK autoconf-2.71.tar.xz: OK automake-1.16.5.tar.xz: OK bash-5.1.16.tar.gz: OK bc-6.0.1.tar.xz: OK binutils-2.39.tar.xz: OK bison-3.8.2.tar.xz: OK bzip2-1.0.8.tar.gz: OK check-0.15.2.tar.gz: OK coreutils-9.1.tar.xz: OK dejagnu-1.6.3.tar.gz: OK diffutils-3.8.tar.xz: OK e2fsprogs-1.46.5.tar.gz: OK elfutils-0.187.tar.bz2: OK eudev-3.2.11.tar.gz: OK expat-2.4.8.tar.xz: OK expect5.45.4.tar.gz: OK file-5.42.tar.gz: OK findutils-4.9.0.tar.xz: OK flex-2.6.4.tar.gz: OK gawk-5.1.1.tar.xz: OK gcc-12.2.0.tar.xz: OK gdbm-1.23.tar.gz: OK gettext-0.21.tar.xz: OK glibc-2.36.tar.xz: OK gmp-6.2.1.tar.xz: OK gperf-3.1.tar.gz: OK grep-3.7.tar.xz: OK groff-1.22.4.tar.gz: OK grub-2.06.tar.xz: OK gzip-1.12.tar.xz: OK iana-etc-20220812.tar.gz: OK inetutils-2.3.tar.xz: OK intltool-0.51.0.tar.gz: OK iproute2-5.19.0.tar.xz: OK kbd-2.5.1.tar.xz: OK kmod-30.tar.xz: OK less-590.tar.gz: OK lfs-bootscripts-20220723.tar.xz: OK libcap-2.65.tar.xz: OK libffi-3.4.2.tar.gz: OK libpipeline-1.5.6.tar.gz: OK libtool-2.4.7.tar.xz: OK linux-5.19.2.tar.xz: OK m4-1.4.19.tar.xz: OK make-4.3.tar.gz: OK man-db-2.10.2.tar.xz: OK man-pages-5.13.tar.xz: OK meson-0.63.1.tar.gz: OK mpc-1.2.1.tar.gz: OK mpfr-4.1.0.tar.xz: OK ncurses-6.3.tar.gz: OK ninja-1.11.0.tar.gz: OK openssl-3.0.5.tar.gz: OK patch-2.7.6.tar.xz: OK perl-5.36.0.tar.xz: OK pkg-config-0.29.2.tar.gz: OK procps-ng-4.0.0.tar.xz: OK psmisc-23.5.tar.xz: OK Python-3.10.6.tar.xz: OK python-3.10.6-docs-html.tar.bz2: OK readline-8.1.2.tar.gz: OK sed-4.8.tar.xz: OK shadow-4.12.2.tar.xz: OK sysklogd-1.5.1.tar.gz: OK sysvinit-3.04.tar.xz: OK tar-1.34.tar.xz: OK tcl8.6.12-src.tar.gz: OK tcl8.6.12-html.tar.gz: OK texinfo-6.8.tar.xz: OK tzdata2022c.tar.gz: OK udev-lfs-20171102.tar.xz: OK util-linux-2.38.1.tar.xz: OK vim-9.0.0228.tar.gz: OK wheel-0.37.1.tar.gz: OK XML-Parser-2.46.tar.gz: OK xz-5.2.6.tar.xz: OK zlib-1.2.12.tar.xz: OK zstd-1.5.2.tar.gz: OK bzip2-1.0.8-install_docs-1.patch: OK coreutils-9.1-i18n-1.patch: OK glibc-2.36-fhs-1.patch: OK kbd-2.5.1-backspace-1.patch: OK sysvinit-3.04-consolidated-1.patch: OK zstd-1.5.2-upstream_fixes-1.patch: OK root@laohoo-virtual-machine:/mnt/lfs/sources#
当前所有软件包检测通过, 如果有哪个包出错, 可单独重新下载该软件包、并重新检测即可。
操作完毕, 建议使用 快照
对当前虚拟机进行备份。
参考资料:
Linux From Scratch Version 11.2
Linux From Scratch 版本 11.2-systemd-中文翻译版