Linux学习笔记---使用BusyBox创建根文件系统(二)

目录

向 rootfs 的“/lib ”目录添加库文件

向 rootfs 的usr/lib 目录添加库文件

创建其他文件夹

根文件系统初步测试


向 rootfs 的“/lib ”目录添加库文件

接下来就可以向根文件系统添加 lib库了

在Ubuntu系统中在rootfs文件夹中新建一个lib文件夹

Linux学习笔记---使用BusyBox创建根文件系统(二)

接下来进入到gcc编译器中libc/lib文件夹中

Linux学习笔记---使用BusyBox创建根文件系统(二)

路径为 /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/lib

然后将将此目录下所有的*so*和.a文件都拷贝到 rootfs/lib 目录中

使用命令  cp *so* *.a /home/hxydj/linux/nfs/rootfs/lib -d

Linux学习笔记---使用BusyBox创建根文件系统(二)

拷贝完成后可以在lib文件夹中查看一下

Linux学习笔记---使用BusyBox创建根文件系统(二)

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

Linux学习笔记---使用BusyBox创建根文件系统(二)

可以看出,ld-linux-armhf.so.3 后面有个“->”,表示其是个软连接文件,链接到文件 ld-2.19-2014.08-1-git.so,因为其是一个“快捷方式”,因此大小只有 24B。但是,ld-linux-armhf.so.3 不能作为符号链接,否则的话在根文件系统中执行程序无法执行!这里要将连接的源文件拷贝过去。

先将 rootfs/lib 中的 ld-linux-armhf.so.3 文件删除掉

输入命令

rm ld-linux-armhf.so.3 删除这个文件

Linux学习笔记---使用BusyBox创建根文件系统(二)

删除完成后可以使用ls命令查看一下是否删除成功。

接下来将gcc库中的ld-linux-armhf.so.3文件拷贝到rootfs中去,使用命令

cp ld-linux-armhf.so.3 /home/hxydj/linux/nfs/rootfs/lib

Linux学习笔记---使用BusyBox创建根文件系统(二)

拷贝完成后可以查看一下ld-linux-armhf.so.3文件的大小

Linux学习笔记---使用BusyBox创建根文件系统(二)

这下就可以看到这个文件已经不是连接文件了。

接下来继续从/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/lib文件夹中拷贝文件

输入命令cp *so* *.a /home/hxydj/linux/nfs/rootfs/lib -d

Linux学习笔记---使用BusyBox创建根文件系统(二)

拷贝结束后,可以继续查看一下rootfs/lib中的文件

Linux学习笔记---使用BusyBox创建根文件系统(二)

可以看出现在的文件多了很多。

向 rootfs 的usr/lib 目录添加库文件

在/rootfs/usr目录下创建lib文件夹

Linux学习笔记---使用BusyBox创建根文件系统(二)

输入命令

cd /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/lib

进入到libc/usr/lib文件夹中

Linux学习笔记---使用BusyBox创建根文件系统(二)

然后拷贝当前目录下so和.a文件

输入命令

cp *so* *.a /home/hxydj/linux/nfs/rootfs/usr/lib/ -d

Linux学习笔记---使用BusyBox创建根文件系统(二)

拷贝完成后可以在/rootfs/usr/lib目录中查看拷贝的文件

Linux学习笔记---使用BusyBox创建根文件系统(二)

这时根文件系统的库文件就全部添加好了,可以使用“du”命令来查看一下 rootfs/lib 和rootfs/usr/lib 这两个目录的大小,

进入到rootfs文件夹中输入命令:

du ./lib ./usr/lib/ -sh    

可以查看 lib 和 usr/lib 这两个目录的大小

Linux学习笔记---使用BusyBox创建根文件系统(二)

创建其他文件夹

还需要根文件系统中创建其他文件夹,如 dev、proc、mnt、sys、tmp 和 root 。

Linux学习笔记---使用BusyBox创建根文件系统(二)

根文件系统初步测试

要从网络中加载根文件系统的话,需要在uboot中设置bootargs的环境变量。

先查看一下uboot中的环境变量

Linux学习笔记---使用BusyBox创建根文件系统(二)

当前root=/dev/mmcblk1p2 是从emmc中下载根文件系统,现在需要修改这个值,让通过网络从Ubuntu系统中的nfs文件夹中下载根文件系统。

在串口控制台中输入如下命令

setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.1.66:/home/hxydj/linux/nfs/rootfs,proto=tcp rw ip=192.168.1.50:192.168.1.66:192.168.1.1:255.255.255.0::eth0:off'

Linux学习笔记---使用BusyBox创建根文件系统(二)

服务器也就是Ubuntu系统的IP地址为192.168.1.66,开发板的IP地址为192.168.1.50. “proto=tcp”表示使用 TCP 协议,“rw”表示 nfs 挂载的根文件系统为可读可写。

设置完成后使用boot命令启动Linux内核。

Linux学习笔记---使用BusyBox创建根文件系统(二)

启动成功后可以使用ls命令查看文件

Linux学习笔记---使用BusyBox创建根文件系统(二)

上面的 nfs filesystem 就说明是从nfs启动的。

这时候可以使用命令创建一个文件,然后在Ubuntu系统中就可以看到新建的文件。

Linux学习笔记---使用BusyBox创建根文件系统(二)

在Ubuntu系统中查看rootfs文件夹中的文件

Linux学习笔记---使用BusyBox创建根文件系统(二)

这时候就可以看见刚才在开发板上创建的文件了。

同样在Ubuntu系统中在rootfs文件夹中创建文件,在开发板上同样可以显示。

Linux学习笔记---使用BusyBox创建根文件系统(二)

在串口终端中查看

Linux学习笔记---使用BusyBox创建根文件系统(二)

看了通过网络挂在根文件系统基本已经成功了。

上一篇:容器的进程与namespace、rootfs


下一篇:【问答23】Linux移植:如何制作rootfs?