【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 交叉工具链和临时工具。

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

相关推荐
比花花解语13 分钟前
Kafka在Windows系统使用delete命令删除Topic时出现的问题
windows·分布式·kafka
rainmanqqst1 小时前
耀世16Pro鼠标卡顿
windows
ChinaRainbowSea1 小时前
1. Linux下 MySQL 的详细安装与使用
linux·数据库·sql·mysql·adb
网络安全(华哥)1 小时前
网络安全服务实施流程管理 网络安全服务体系
运维·服务器·网络
致奋斗的我们1 小时前
Nginx反向代理及负载均衡
linux·运维·mysql·nginx·负载均衡·shell·openeluer
百锦再1 小时前
在Linux上创建一个Docker容器并在其中执行Python脚本
linux·python·docker
忧虑的乌龟蛋2 小时前
嵌入式 Linux:使用设备树驱动GPIO全流程
linux·服务器·嵌入式·imx6ull·gpio·点灯·pinctrl
朝九晚五ฺ2 小时前
【Linux探索学习】第三十弹——线程互斥与同步(上):深入理解线程保证安全的机制
linux·运维·学习
早起的年轻人2 小时前
Java List 自定义对象排序 Java 8 及以上版本使用 Stream API
java·windows·list
小林熬夜学编程2 小时前
【MySQL】第八弹---全面解析数据库表的增删改查操作:从创建到检索、排序与分页
linux·开发语言·数据库·mysql·算法