I.MX6ULL学习笔记(三)—BusyBox创建根文件系统

解压并且修改BusyBox的MakiFile

在这里插入图片描述设置编译器的路径,找到gcc编译器的路径
在这里插入图片描述/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin
在这里插入图片描述输入编译器arm-linux-gnueabihf所在的绝对路径,保存并且退出MakeFile文件。

添加中文支持

注释掉31-32行代码。
在这里插入图片描述接着将45行 if(c<’ ‘||c>=0x7f)改为if(c<’ ')
在这里插入图片描述打开libbb/unicode.c,修改如下:
1022行
在这里插入图片描述1031行
在这里插入图片描述

配置busybox

在这里插入图片描述在这里插入图片描述确保Build static binary 这一项不能被选中,选中如下的选项。
在这里插入图片描述
返回上一层,继续寻找
在这里插入图片描述
按键盘上的n,取消选择。
在这里插入图片描述返回上一层,继续选择
在这里插入图片描述确保mdev和下面的紧挨着的5项全部选中。
在这里插入图片描述返回上一层:
在这里插入图片描述

在这里插入图片描述保存配置。

编译busybox

接下来编译busybox,需要将编译后的文件放在Busybox文件夹中。

在这里插入图片描述

这时候,可以在Busybox中查看生成的文件了。
在这里插入图片描述

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

紧接着,向根文件系统中添加lib库了。
在Ubuntu中的rootfs中新建lib文件夹。
在这里插入图片描述
进入gcc编译器的libc/lib中
在这里插入图片描述
将此目录下的所有so和.a拷贝到rootfs/lib中
在这里插入图片描述拷贝完成
so* *.a文件之后并且查看文件目录内容。
在这里插入图片描述输入命令 rm ld-linux-armhf.so.3删除文件–符号链接文件。
在这里插入图片描述
接下里将gcc库下的文件拷贝到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文件夹中。
在这里插入图片描述拷贝完成之后,查看文件夹下的记录。
在这里插入图片描述这时根文件系统的库文件就全部添加好了,可以使用“du”命令来查看一下这个两个目录的大小,进入到rootfs文件夹下输入 du ./lib ./usr/lib -sh

在这里插入图片描述

创建其他文件夹

还需要根文件系统中创建其他文件夹,dev,proc,mnt,sys,tmp,root。
在这里插入图片描述
紧接着,只要将根文件系统通过网络nfs挂载到开发板上,即可运行根文件系统了。

完善根文件系统

创建/etc/init.d/rcS文件
rcS是一个shell脚本,Linux内核启动之后需要启动一些服务,而rcS就是规定启动哪些文件的脚本。在rootfs中创建etc/init.d/rcS文件,然后在rcS中输入以下内容:

#!/bin/sh 
PATH=/sbin:/bin:/usr/sbin:/usr/bin:$PATH
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib:/usr/lib
export PATH LD_LIBRARY_PATH 
mount -a
mkdir /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s

创建完成之后,需要给文件权限,保证文件可以执行。

创建/etc/fstab文件

接下来就是创建/etc/fstab文件,进入etc目录下新建fstab文件。
fstab 在 Linux 开机以后自动配置哪些需要自动挂载的分区。
文件输入如下内容:

#<file system> <mount point> <type> 	<options> 	<dump> <pass>
proc 		/proc 		proc 		defaults 							0	   0
tmpfs 		/tmp 		tmpfs 		defaults								0	   0
sysfs 		/sys 		sysfs 		defaults 							0 	 0

创建/etc/inittab文件

接下来就是创建/etc/inittab文件,进入etc目录下新建inittab文件。
文件输入内容如下:

#etc/inittab
::sysinit:/etc/init.d/rcS
console::askfirst:-/bin/sh
::restart:/sbin/init
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
::shutdown:/sbin/swapoff -a

以上就是整个根文件系统的创建流程了。

软件运行测试

进入到rootfs文件夹中新建一个drivers文件夹,存放编写的软件,在此文件夹下创建新的hello.c
输入测试代码
在这里插入图片描述因为代码要在开发板上运行测试,因此使用交叉编译命令,编译完成之后,查看文件目录。

在这里插入图片描述

设置开机自启动

在这里插入图片描述

添加外网解析功能

在etc目录下,新建resolv.conf文件,输入如下的内容。
上面是域名服务地址,下面是网关的地址。在这里插入图片描述
至此,根文件系统彻底制作完成啦,为了防止根文件系统损坏,可以讲rootfs文件夹打包备份。

打包备份 重点!!!

一定要在rootfs文件夹内打包,不能再文件夹外部打包,因为tar打包默认不会打包隐藏文件的,直接在文件夹外打包的根文件系统在后期烧写进入单片机的时候会导致内核崩溃,无法正常进入。
sudo tar -vcjf rootfs.tar.bz2 rootfs
在文件夹外部打包
在这里插入图片描述在文件夹内部打包
sudo tar -vcjf rootfs.tat.bz2 *

在这里插入图片描述
以后移植自己的根文件系统的时候,就可以使用这个压缩包了~~~!!!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值