目录
向 rootfs 的“/lib ”目录添加库文件
接下来就可以向根文件系统添加 lib库了
在Ubuntu系统中在rootfs文件夹中新建一个lib文件夹
接下来进入到gcc编译器中libc/lib文件夹中
路径为 /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
拷贝完成后可以在lib文件夹中查看一下
后面的“-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-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 删除这个文件
删除完成后可以使用ls命令查看一下是否删除成功。
接下来将gcc库中的ld-linux-armhf.so.3文件拷贝到rootfs中去,使用命令
cp ld-linux-armhf.so.3 /home/hxydj/linux/nfs/rootfs/lib
拷贝完成后可以查看一下ld-linux-armhf.so.3文件的大小
这下就可以看到这个文件已经不是连接文件了。
接下来继续从/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
拷贝结束后,可以继续查看一下rootfs/lib中的文件
可以看出现在的文件多了很多。
向 rootfs 的usr/lib 目录添加库文件
在/rootfs/usr目录下创建lib文件夹
输入命令
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文件夹中
然后拷贝当前目录下so和.a文件
输入命令
cp *so* *.a /home/hxydj/linux/nfs/rootfs/usr/lib/ -d
拷贝完成后可以在/rootfs/usr/lib目录中查看拷贝的文件
这时根文件系统的库文件就全部添加好了,可以使用“du”命令来查看一下 rootfs/lib 和rootfs/usr/lib 这两个目录的大小,
进入到rootfs文件夹中输入命令:
du ./lib ./usr/lib/ -sh
可以查看 lib 和 usr/lib 这两个目录的大小
创建其他文件夹
还需要根文件系统中创建其他文件夹,如 dev、proc、mnt、sys、tmp 和 root 。
根文件系统初步测试
要从网络中加载根文件系统的话,需要在uboot中设置bootargs的环境变量。
先查看一下uboot中的环境变量
当前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'
服务器也就是Ubuntu系统的IP地址为192.168.1.66,开发板的IP地址为192.168.1.50. “proto=tcp”表示使用 TCP 协议,“rw”表示 nfs 挂载的根文件系统为可读可写。
设置完成后使用boot命令启动Linux内核。
启动成功后可以使用ls命令查看文件
上面的 nfs filesystem 就说明是从nfs启动的。
这时候可以使用命令创建一个文件,然后在Ubuntu系统中就可以看到新建的文件。
在Ubuntu系统中查看rootfs文件夹中的文件
这时候就可以看见刚才在开发板上创建的文件了。
同样在Ubuntu系统中在rootfs文件夹中创建文件,在开发板上同样可以显示。
在串口终端中查看
看了通过网络挂在根文件系统基本已经成功了。