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

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


总结

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

相关推荐
JoyCong19987 分钟前
从iPhone Ultra到ToDesk:折叠大屏时代的效率革命,硬件只是开始
大数据·运维·ios·智能手机·iphone·远程工作·远程操作
山岚的运维笔记18 分钟前
mysql 专业笔记 -- 第 1 章:MySQL 入门
运维·数据库·笔记·后端·学习·mysql·dba
邪修king21 分钟前
Re:Linux 系统篇(十五):进程篇(四):进程切换深度解析 —— CPU 寄存器、进程上下文与切换全流程万字详解
linux·运维·服务器
深念Y30 分钟前
Docker 镜像体积从 110MB 降到 13MB 后端服务的瘦身
运维·docker·容器
小五传输40 分钟前
【一文解读】汽车制造业协同,跨网跨区域文件传输如何落地?
大数据·运维·安全
高亦真1 小时前
今天是学习嵌入式的第33天
linux·学习·算法
cuijiecheng20181 小时前
Rocky Linux 安装 libltc、ltc-tools 和 ltcdump
linux
BlueAsia_Lab1 小时前
BQB 认证执行标准是什么?核心条款通俗解读
linux·运维·网络
YOU OU1 小时前
多机部署/负载均衡-LoadBalance
运维·负载均衡
小小、码农1 小时前
【网络】套接字(Socket)编程——TCP版
linux·服务器·网络·c++·网络协议·tcp/ip