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

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


总结

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

相关推荐
草莓熊Lotso7 小时前
Qt 主窗口核心组件实战:菜单栏、工具栏、状态栏、浮动窗口全攻略
运维·开发语言·人工智能·python·qt·ui
RisunJan7 小时前
Linux命令-lprm(删除打印队列中任务)
linux·运维·服务器
Web极客码7 小时前
WordPress从经典编辑器升级到古腾堡编辑器
运维·编辑器·wordpress
云姜.7 小时前
TCP协议特性
服务器·网络·tcp/ip
zzzsde7 小时前
【Linux】进程(5):命令行参数和环境变量
linux·运维·服务器
迎仔7 小时前
E-自动化:GPU驱动维护自动化
运维·gpu·gpu驱动
代码游侠7 小时前
复习——Linux设备驱动开发笔记
linux·arm开发·驱动开发·笔记·嵌入式硬件·架构
The森7 小时前
Linux IO 模型纵深解析 03:同步 IO 与异步 IO
linux·服务器
草莓熊Lotso8 小时前
Linux 文件描述符与重定向实战:从原理到 minishell 实现
android·linux·运维·服务器·数据库·c++·人工智能
历程里程碑8 小时前
Linux22 文件系统
linux·运维·c语言·开发语言·数据结构·c++·算法