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 等,创建完成以后如图:

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


总结

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

相关推荐
2401_8346369935 分钟前
Linux 负载均衡全实战:Nginx+HAProxy+LVS 从原理到落地
linux·nginx·负载均衡
鹏大师运维6 小时前
为什么信创电脑装软件总提示“软件包架构不匹配”?
linux·运维·架构·国产化·麒麟·deb·统信uos
007张三丰6 小时前
软件测试专栏(11/20):测试框架开发:pytest深度解析与插件体系
运维·服务器·自动化测试·pytest·测试框架
weixin_604236677 小时前
华三 路由器 极简核心配置
运维·服务器·网络·h3c·h3c路由器
鹤落晴春8 小时前
【Linux复习】管理SELinux安全性
linux·运维·服务器
yz_aiks8 小时前
Linux Jar包配置Systemd自启动实战:从排查到配置全流程
linux·python·jar·自启动·systemd
AI智图坊8 小时前
多件装组合SKU图的批量生产效率分析:从PS手工到AI自动化的工作流改造
大数据·运维·人工智能·gpt·ai作画·自动化·aigc
bjzhang759 小时前
CentOS下安装MySQL详解
linux·mysql·centos
Jason_chen11 小时前
Linux 6.2 音频机制深度解析:AI驱动的低延迟音频与零信任音频安全架构
linux
下午写HelloWorld11 小时前
Linux系统及Ubuntu常用指令
linux·ubuntu·操作系统