【LFS/从0构建Linux系统】软件包与补丁安装及环境配置

笔者从虚拟机换回了开发板,系统仍然是Ubuntu。

文章目录

  • [1. 安装包与补丁的安装](#1. 安装包与补丁的安装)
    • [1.1 wget指令](#1.1 wget指令)
    • [1.2 aria2指令](#1.2 aria2指令)
    • [1.3 使用阿里云的整合包](#1.3 使用阿里云的整合包)
  • [2. 最后的准备阶段(环境配置)](#2. 最后的准备阶段(环境配置))
  • [3 .总结](#3 .总结)

在上篇文章,我们完成lfs的硬件准备和磁盘分区。
最终达成这个效果:

那么接下来就是软件包和补丁的安装,已经最后的准备工作了。

1. 安装包与补丁的安装

打开LFS的官方文档,我们可以看到官方已经把所有要下载的安装包的官方链接已经给出了。

那么剩下的步骤就是安装了。

但是这里多链接一个一个的手动安装还是太花费时间了,作为程序员还是不想要把时间花在这样的重复劳动上。为此我找到了一个所有软件链接的整合版本,安装就只需要一个指令即可。

安装包与补丁

拿到这些链接后,打开Linux,创建一个文本文件,假设叫urls.txt

把所有链接复制到文件中后。下面我介绍两个指令给读者选择,选择一个喜欢的指令下载即可。

1.1 wget指令

在终端内使用wget指令批量下载文件。

bash 复制代码
wget -i urls.txt

-i 参数告诉wgeturls.txt文件中读取链接并下载

当然我们在下载时需要下载到指定的目录中mnt/lfs.sources

bash 复制代码
wget -i urls.txt -P /mnt/lfs/sources

1.2 aria2指令

如果你希望提高下载的速度,可以使用aria2,它支持多线程下载,速度更快。

如果你没有安装,输入以下指令

bash 复制代码
sudo apt install -y

下载格式:

bash 复制代码
aria2c -i urls.txt

下载到指定目录

bash 复制代码
aria2c -i urls.txt -d /mnt/lfs/sources

那么这两种指令就介绍完毕了,你可以选择你喜欢的一个安装即可。

相信大家都知道,在安装国外软件时,下载速度都超级慢,所以你肯定要挂个梯子什么的。如果没有,我这还有一种方法。

1.3 使用阿里云的整合包

龟速的下载速度是很难忍受的,LFS这个项目在世界范围都是很受欢迎的,国内也不例外,所以肯定会有人帮我做软件包的整合的。我找的是阿里云的整合包,链接如下:阿里云

读者在下载时,应挑选比较新的软件包安装,我下载的24年9月的,我使用的官方文档也是24年9月的版本。

把压缩包解压后,软件包和补丁就都出来了:

还是非常多的。

2. 最后的准备阶段(环境配置)

根据的文档的指示,我们选哟创建一个lfs的用户,这个在之前我就让大家创建好了,同时还要许多目录的创建,这个也是如此。

所以最后的准备阶段吗,我只会讲解在前文我们没有做的工作。

为bash创建两个新的启动脚本,以lfs的身份,执行以下命令,创建一个新的.bash_profile.

bash 复制代码
cat > ~/.bash_profile << "EOF"
`exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash`
EOF

在以 lfs 用户登录或从其他用户使用带 "- " 选项的 su 命令切换到 lfs 用户时,初始的 shell 是一个_登录_ shell。它读取宿主系统的 /etc/profile 文件 (可能包含一些设置和环境变量),然后读取 .bash_profile。我们在 .bash_profile 中使用 exec env -i.../bin/bash 命令,新建一个除了 HOME, TERM 以及 PS1 外没有任何环境变量的 shell 并替换当前 shell。这可以防止宿主环境中不需要和有潜在风险的环境变量进入构建环境。

新的 shell 实例是 非登录 shell,它不会读取和执行 /etc/profile 或者 .bash_profile 的内容,而是读取并执行 .bashrc 文件。现在我们创建一个 .bashrc 文件:

bash 复制代码
cat > ~/.bashrc << "EOF"
set +h
umask 022
LFS=/mnt/lfs
LC_ALL=POSIX
LFS_TGT=$(uname -m)-lfs-linux-gnu
PATH=/usr/bin
if [ ! -L /bin ]; then PATH=/bin:$PATH; fi
PATH=$LFS/tools/bin:$PATH
CONFIG_SITE=$LFS/usr/share/config.site
export LFS LC_ALL LFS_TGT PATH CONFIG_SITE
export MAKEFLAGS=-j$(nproc)
EOF

具体内容的原因请访问官方文档:官方文档

最后,为了保证构建临时工具所需的环境准备就绪,强制 bash shell 读取刚才创建的配置文件:

bash 复制代码
source ~/.bash_profile

在文档的最后还有关于SBU和测试套件的解释,请大家自行查阅。

3 .总结

由此我们就完成了从0构建Linux系统的全部的准备阶段了,在下一篇文章就要开始构建 LFS 交叉工具链和临时工具。

期待你的关注,本系列长期更新。

相关推荐
waving-black8 分钟前
利用frp和腾讯云服务器将内网暴露至外网(内网穿透)
linux·服务器·腾讯云·frp·内网穿透
stormsha19 分钟前
Linux中su与sudo命令的区别:权限管理的关键差异解析
linux·运维·服务器·鸿蒙系统·ux·batch命令
明月看潮生1 小时前
青少年编程与数学 01-011 系统软件简介 06 Android操作系统
android·青少年编程·操作系统·系统软件·编程与数学
筏.k1 小时前
grep、wc 与管道符快速上手指南
linux
Johny_Zhao1 小时前
华为MAAS、阿里云PAI、亚马逊AWS SageMaker、微软Azure ML各大模型深度分析对比
linux·人工智能·ai·信息安全·云计算·系统运维
CodeOfCC1 小时前
c语言 封装跨平台线程头文件
linux·c语言·windows
科文小白狼2 小时前
Linux下VSCode开发环境配置(LSP)
linux·vscode·里氏替换原则·lsp
momo卡2 小时前
MinGW-w64的安装详细步骤(c_c++的编译器gcc、g++的windows版,win10、win11真实可用)
c语言·c++·windows
jugt3 小时前
CentOS 7.9安装Nginx1.24.0时报 checking for LuaJIT 2.x ... not found
linux·运维·centos
多多*4 小时前
LUA+Reids实现库存秒杀预扣减 记录流水 以及自己的思考
linux·开发语言·redis·python·bootstrap·lua