Skip to the content.

11.The End


11.1 The End

很好!现在新的 LFS 系统已经安装好了!我们祝愿您的全新的,自定义的 Linux 系统能够成功启动!

创建一个 /etc/lfs-release 文件似乎是一个好主意。通过使用它,您 (或者我们,如果您向我们寻求帮助的话) 能够容易地找出当前安装的 LFS 系统版本。运行以下命令创建该文件:

echo 11.3 > /etc/lfs-release

后续安装在系统上的软件包可能需要两个描述当前安装的系统的文件,这些软件包可能是二进制包,也可能是需要构建的源代码包。

第一个文件根据 Linux Standards Base (LSB) 的规则描述系统状态。运行命令创建该文件:

cat > /etc/lsb-release << "EOF"
DISTRIB_ID="Linux From Scratch"
DISTRIB_RELEASE="11.3"
DISTRIB_CODENAME="<your name here>"
DISTRIB_DESCRIPTION="Linux From Scratch"
EOF

第二个文件基本上包含相同的信息,systemd 和一些图形桌面环境会使用它。运行命令创建该文件:

cat > /etc/os-release << "EOF"
NAME="Linux From Scratch"
VERSION="11.3"
ID=lfs
PRETTY_NAME="Linux From Scratch 11.3"
VERSION_CODENAME="<your name here>"
EOF

您需要修改 ‘DISTRIB_CODENAME’ 和 ‘VERSION_CODENAME’ 域,体现您的系统的独特性。

11.2 Get Counted

现在您已经完成了本书中的构建过程,那么问题来了,您希望被计为一名 LFS 用户吗?前往 https://www.linuxfromscratch.org/cgi-bin/lfscounter.php 并输入您的姓名和第一次使用的 LFS 版本,即可注册成为 LFS 用户。

下面重启计算机进入 LFS。

11.3 Rebooting the System

现在所有软件包已经安装完成,可以重新启动计算机了。但是,还有一些需要检查的事项。下面是一些建议:

现在,正如我们之前保证的,您可以引导全新的 LFS 系统了!首先退出 chroot 环境:

logout

解除虚拟文件系统的挂载:

umount -v $LFS/dev/pts
mountpoint -q $LFS/dev/shm && umount $LFS/dev/shm
umount -v $LFS/dev
umount -v $LFS/run
umount -v $LFS/proc
umount -v $LFS/sys

如果为 LFS 创建了其他的分区,需要在解除挂载 LFS 分区之前,先解除挂载它们,例如:

umount -v $LFS/home
umount -v $LFS

解除 LFS 文件系统的挂载:

umount -v $LFS

现在重新启动系统。

如果 GRUB 引导加载器如同本书前文所述安装,并配置正确,GRUB 目录应该已经配置为自动引导 LFS 11.3 启动项。

重启完成后,LFS 系统就可以使用了,您可以安装更多软件包以满足自己的需求。

11.4 Additional Resources

感谢您阅读本书。我们希望您觉得本书对您有用,而且您能够从构建系统的过程中学到一些知识。

现在 LFS 系统已经安装好了,您可能想问“然后呢?”为了解答这个问题,我们为您汇集了一份有用资源的列表。

11.5 Getting Started After LFS

11.5.1 决定在新系统中做什么

现在 LFS 已经构建完成,而且可以引导。那么,要在新的系统中做什么呢?首先要确定准备使用新的系统达成什么目的。通常来说,计算机系统可以分成两大类:工作站和服务器。当然,这两类系统并不是完全互斥的。用于这两类系统的应用程序完全可以安装在同一个系统上,但是我们首先分别考虑这两类系统。

服务器是较为简单的一类系统。通常它需要包含一个网页服务程序,例如 Apache HTTP 服务器,和一个数据库服务器,例如 MariaDB。当然,服务器也可能提供其他服务,嵌入式系统也可以视为服务器。

另一方面,工作站系统较为复杂。它通常需要一个图形用户环境,例如 LXDEXFCEKDE,或者 Gnome,这些用户环境又基于基本的图形环境和其他图形界面应用,例如 Firefox 浏览器Thunderbird 邮件客户端,或LibreOffice 办公套件。这些应用需要很多 (如果需要比较完备的功能,可能需要几百个) 额外的软件包中的应用和库的支持。

另外,一些应用提供系统管理功能,它们适用于所有系统。这些应用的安装方法都在 BLFS 手册中给出。其中,并非所有软件包在所有环境下都必须安装。例如,dhcpcd 对于服务器一般并不合适,wireless_tools 一般只用于笔记本电脑。

11.5.2 在基本的 LFS 环境中工作

一旦启动 LFS 系统,就可以使用它提供的工具构建更多软件包。然而,基本 LFS 系统的交互环境十分简略,可以使用一些方法改善工作环境:

11.5.2.1 从 LFS 宿主系统中通过 chroot 进行操作

这种方法能够提供完整的图形环境,包括功能完整的网页浏览器,而且可以进行复制/粘贴操作。而且可以使用宿主系统的 wget 等应用程序下载软件包,并将其放入 chroot 环境能够访问的位置。

为了在 chroot 环境中正常构建软件包,如果虚拟文件系统尚未挂载,需要挂载它们。为此,可以在宿主系统中创建一个脚本:

cat > ~/mount-virt.sh << "EOF"
#!/bin/bash

function mountbind
{
   if ! mountpoint $LFS/$1 >/dev/null; then
     $SUDO mount --bind /$1 $LFS/$1
     echo $LFS/$1 mounted
   else
     echo $LFS/$1 already mounted
   fi
}

function mounttype
{
   if ! mountpoint $LFS/$1 >/dev/null; then
     $SUDO mount -t $2 $3 $4 $5 $LFS/$1
     echo $LFS/$1 mounted
   else
     echo $LFS/$1 already mounted
   fi
}

if [ $EUID -ne 0 ]; then
  SUDO=sudo
else
  SUDO=""
fi

if [ x$LFS == x ]; then
  echo "LFS not set"
  exit 1
fi

mountbind dev
mounttype dev/pts devpts devpts -o gid=5,mode=620
mounttype proc    proc   proc
mounttype sys     sysfs  sysfs
mounttype run     tmpfs  run
if [ -h $LFS/dev/shm ]; then
  mkdir -pv $LFS/$(readlink $LFS/dev/shm)
else
  mounttype dev/shm tmpfs tmpfs -o nosuid,nodev
fi 

#mountbind usr/src
#mountbind boot
#mountbind home
EOF

注意脚本中的后三条命令被注释掉了。如果它们涉及的目录是宿主系统中的挂载点,而且在 LFS/BLFS 系统中也会同样挂载它们,可以使用这些命令。

可以用普通用户 (推荐) 或者 root 身份,执行 bash ~/mount-virt.sh 以运行该脚本。如果是以普通用户身份运行它,宿主系统需要安装 sudo。

另外,该脚本给出了一些可能用于存放下载的软件包文件的位置。存放位置可以是任意的。例如,可以存放在某个用户的主目录中,例如 ~/sources,或者使用一个所有用户可访问的位置,如 /usr/src。我们建议不要将 BLFS 使用的源代码包和 LFS 使用的源代码包混合存放在 /sources (chroot 环境中的路径) 中。无论如何,必须使用 chroot 环境中能够访问的位置。

最后,可以编码进入 chroot 环境的过程,以更方便地完成这一工作。可以在宿主系统中用户的 ~/.bashrc 文件中加入命令别名设定:

alias lfs='sudo /usr/sbin/chroot /mnt/lfs /usr/bin/env -i HOME=/root TERM="$TERM" PS1="\u:\w\\\\$ "
PATH=/bin:/usr/bin:/sbin:/usr/sbin /bin/bash --login'

别名设定看上去比较复杂,这是由于引号和反斜线符号的嵌套使用。为了美观,上面给出的命令分成了两行,但实际输入该命令时必须将其写在一行内。

11.5.2.2 使用 ssh 远程工作

这种方法同样允许使用完整的图形环境,但首先需要在 LFS 系统上安装 sshdwget (通常可以在 chroot 中安装它们)。另外,这种方法需要第二台计算机。这种方法相比于使用 chroot 环境更简单。而且,它在构建软件包时使用为 LFS 系统构建的内核,却仍然能够像使用 chroot 一样在一个完整的系统上工作。

11.5.2.3 使用 LFS 系统的命令行工作

这种方法需要先使用 chroot 安装 libtasn1p11-kitmake-cawgetgpm,以及 links (或者 lynx),然后重启计算机,进入新的 LFS 系统。 LFS 系统默认有六个虚拟控制台。可以使用 Alt+Fx 组合键切换控制台,其中 FxF1F6 之间的键。Alt+←Alt+→ 组合键也可以切换控制台。

此时,可以在两个不同的虚拟控制台登录,在其中一个运行 links 或 lynx 浏览器,另一个运行 bash。GPM 允许使用鼠标左键选择并复制浏览器中的命令,然后可以切换终端,将命令粘贴到另一个终端中运行。

注意

顺带一提,从 X 窗口环境也可以用Ctrl+Alt+Fx组合键切换虚拟终端,但是不能在图形接口和虚拟终端之间进行复制操作。也可以用 Ctrl+Alt+Fx 组合键返回窗口环境,其中 Fx 一般是 F1,但也可能是 F7