linux 系统移植(第二十一期)---- 完善BusyBox构建的根文件系统---- Ubuntu20.04

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录

前言

[一、向根文件系统添加 lib 库](#一、向根文件系统添加 lib 库)

[1.1、向 rootfs 的"/lib"目录添加库文件](#1.1、向 rootfs 的“/lib”目录添加库文件)

[1.2、向 rootfs 的"usr/lib"目录添加库文件](#1.2、向 rootfs 的“usr/lib”目录添加库文件)

二、创建其他文件夹

总结


前言

上一期博客我们完成了修改BusyBox软件源码,并进行了配置,最后完成了编译。

但是此时的根文件系统还不能使用,还需要一些其他的文件,这一期我们将完善此文件。


一、向根文件系统添加lib

1.1、向rootfs的"/lib"目录添加库文件

Linux 中的应用程序一般都是需要动态库的,所以我们需要向根文件系统中添加动态库。在 rootfs 中创建一个名为"lib"的文件夹,命令如下:

复制代码
mkdir lib

lib 文件夹创建好了,库文件从哪里来呢?lib 库文件从交叉编译器中获取,前面我们搭建交叉编译环境的时候将交叉编译器存放到了"/usr/local/arm/"目录中,交叉编译器里面有很多的库文件,但每个库文件具体做什么的,我们初学者是不了解的,所以在此我是准备把所有的库文件都放到我们的根文件系统中。

注意:这样的根文件系统肯定很大,有经验的大佬可以裁剪着使用。
进入如下路径对应的目录:

复制代码
/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/lib

此目录下有很多的*so*(*是通配符)和.a 文件,这些就是库文件,将此目录下所有的*so*和.a文件都拷贝到 rootfs/lib 目录中,拷贝命令如下:

复制代码
cp *so* *.a /home/duan/linux/nfs/rootfs/lib/ -d

后面的"-d"表示拷贝符号链接,这里有个比较特殊的库文件:ld-linux-armhf.so.3,此库文件也是个符号链接,相当于 Windows 下的快捷方式。会链接到库 ld-2.19-2014.08-1-git.so 上,输入命令"ls ld-linux-armhf.so.3 -l"查看此文件详细信息。 如下图所示:

图中可以看出,ld-linux-armhf.so.3 后面有个"->",表示其是个软连接文件(相当于一个快捷方式),但是,ld-linux-armhf.so.3 不能作为符号链接,否则的话在根文件系统中执行程序无法执行,在此我们要把其变为本尊,咱们可以重新复制 ld-linux-armhf.so.3,不复制软链接即可。

先将rootfs/lib 中的 ld-linux-armhf.so.3 文件删除掉,命令如下:

复制代码
rm ld-linux-armhf.so.3

再重新拷贝,命令如下:

复制代码
cp ld-linux-armhf.so.3 /home/duan/linux/nfs/rootfs/lib/

拷贝完可以到rootfs/lib目录下查看

此时就不是软链接了,而是库文件了。

在此进入下面这个目录

复制代码
/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/lib

此目录下也要很多的*so*和.a 文件

复制代码
cp *so* *.a /home/duan/linux/nfs/rootfs/lib/ -d

完成以后的rootfs/lib的目录如下

1.2**、向rootfs的"usr/lib"目录添加库文件**

在 rootfs 的 usr 目录下创建一个名为 lib 的目录,将如下目录中的库文件拷贝到 rootfs/usr/lib 目录下:

复制代码
/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/
usr/lib

l将此目录下的 so 和 .a 库文件都拷贝到 rootfs/usr/lib 目录中,命令如下:

复制代码
cp *so* *.a /home/duan/linux/nfs/rootfs/usr/lib/ -d

完成以后的 rootfs/usr/lib 目录如下图 所示:

至此,根文件系统的库文件就全部添加好了。

二、创建其他文件夹

在根文件系统中创建其他文件夹,如 dev、proc、mnt、sys、tmp 和 root 等,创建完成以后如图:

目前初步的根文件系统基本已经准备好了。


总结

初步完成根文件系统的构建,下一期我们会进行测试。

相关推荐
Leinwin1 小时前
OpenClaw 多 Agent 协作框架的并发限制与企业化规避方案痛点直击
java·运维·数据库
2401_865382501 小时前
信息化项目运维与运营的区别
运维·运营·信息化项目·政务信息化
漠北的哈士奇1 小时前
VMware Workstation导入ova文件时出现闪退但是没有报错信息
运维·vmware·虚拟机·闪退·ova
如意.7592 小时前
【Linux开发工具实战】Git、GDB与CGDB从入门到精通
linux·运维·git
Thera7772 小时前
C++ 高性能时间轮定时器:从单例设计到 Linux timerfd 深度优化
linux·开发语言·c++
运维小欣2 小时前
智能体选型实战指南
运维·人工智能
yy55272 小时前
Nginx 性能优化与监控
运维·nginx·性能优化
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ3 小时前
Linux 查询某进程文件所在路径 命令
linux·运维·服务器
05大叔5 小时前
网络基础知识 域名,JSON格式,AI基础
运维·服务器·网络
安当加密5 小时前
无需改 PAM!轻量级 RADIUS + ASP身份认证系统 实现 Linux 登录双因子认证
linux·运维·服务器