Linux学习笔记---使用BusyBox创建根文件系统(二)
目录
向 rootfs 的“/lib ”目录添加库文件
向 rootfs 的usr/lib 目录添加库文件
创建其他文件夹
根文件系统初步测试
向 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文件夹中创建文件,在开发板上同样可以显示。
在串口终端中查看
看了通过网络挂在根文件系统基本已经成功了。
上一篇:Linux学习笔记---使用BusyBox创建根文件系统(一) 下一篇:Linux学习笔记---使用BusyBox创建根文件系统(三)
Linux学习笔记---使用BusyBox创建根文件系统(二)相关推荐
- Linux学习笔记---使用BusyBox创建根文件系统(三)
目录 创建/etc/init.d/rcS 文件 创建/etc/fstab 文件 创建/etc/inittab 文件 创建/etc/init.d/rcS 文件 通过nfs加载根文件系统成功后,在串口终端 ...
- Linux学习笔记---使用BusyBox创建根文件系统(一)
目录 下载BusyBox 修改makefile 添加中文支持 编译busybox 下载BusyBox BusyBox 可以在其官网下载到,官网地址为:https://busybox.net 打开官网后 ...
- Linux学习笔记---使用BusyBox创建根文件系统(四)
目录 软件运行测试 设置程序为后台运行 设置开机自启动 外网连接测试 软件运行测试 进入到rootfs文件夹中新建一个drivers文件夹,用于存放编写的软件. 新建hello.c文件 输入以下代码 ...
- Linux学习笔记---移植官方uboot步骤(二)
在上一篇 Linux学习笔记---移植官方uboot步骤(一) 自己的uboot已经编译成功了,接下来继续移植LCD驱动和网络驱动. 修改LCD驱动 修改配置参数 打开my_uboot/board/f ...
- I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之根文件系统挂载
经过前面的移植,新版BSP的uboot和kernel已经能够在tqimx6q开发板上运行了,接下来我们来挂载文件系统. DTB整理 前面的文章中提到,新版BSP的DTB管理感觉不是太好,在之前移植的B ...
- 移植Linux-3.4.2过程学习笔记2——无法挂载根文件系统
此时内核已经可以打印串口信息了,目前的问题是无法挂载根文件系统. 搜索分区名,查看是在哪里定义的: grep "\"Boot\ Agent\"" * -nR 得 ...
- Linux学习笔记:mkdir创建文件夹
文件夹,即目录,在linux中使用mkdir创建. 语法:mkdir dir_name 通过 mkdir 命令可以实现在指定位置创建以 dir_name(指定的文件名)命名的文件夹或目录.要创建文件夹 ...
- Linux学习笔记-调用pthead_create创建线程
调用pthead_create pthread_t handle; pthread_create(&handle, // 线程句柄 NULL, // 忽略 Thread_Main, // 线程 ...
- Linux学习笔记11——文件I/O之二
一.文件共享 内核使用三种数据结构表示打开的文件,它们之间的关系决定了在文件共享方面一个进程对另一个进程可能产生的影响. 1.每个进程在进程表中都有一个记录项,记录项中包含有一张打开文件描述表 2.内 ...
最新文章
- 如何学会读论文?送你滑铁卢大学S. Keshav的三轮阅读法
- linux中下载ftp文件
- 三层架构-----实践篇-登录小实例
- c/c++整理--c++面向对象(2)
- java中常用的坑_Java技术开发中的坑
- Pycharm 加载pygame解决方案
- C语言中32个关键字详解
- 基于MATLAB的有源三相滤波器的设计,基于MATLAB的有源滤波器的设计与仿真
- 信创操作系统--统信UOS桌面版(多媒体软件:图像查看、处理,音频播放、录音机)
- Mac下Idea安装插件后不能启动的问题
- checkinput php,使用php检查输入字段的类型
- 可在linux运行的酷q,Linux通过docker安装运行酷Q--用QQ骰子君进行跑团
- 中外法律文献查找下载常用数据库大盘点
- 数据中台全景架构及模块解析!一文入门中台架构师!
- MySQL-HA高可用
- 什么是HTTP状态码?常见HTTP状态码盘点
- 5V 3A手机充电器方案
- nasm/yasm not found or too old. Use --disable-x86asm for a crippled build.
- 评估数据质量的指标总结1
- 为什么我要在BDTC2016上担任“大数据云服务”分论坛召集人
热门文章
- Live Writer首段缩进和全角空格设置
- 网络工程师常用英文单词和缩写翻译
- 非结构化数据和结构化数据提取
- java webservice wsimport 无法将名称 'soapenc:Array' 解析为 'type definition' 组件 时对应的解决方法...
- 201521123061 《Java程序设计》第六周学习总结
- [改善Java代码]不推荐使用binarySearch对列表进行检索
- 成功编译Webkit-cairo
- Java定时器的cron设置详解Quartz
- 软件测试流程和项目管理流程
- linux7 开启端口,常用CentOS7系统防火墙开启设置和开放端口方法