3、根文件系统
- 根文件系统简介
根文件系统一般也叫做 rootfs。
百度百科:
根文件系统首先是内核启动时所 mount(挂载)的第一个文件系统,内核代码映像文件保存在
根文件系统中,而系统引导启动程序会在根文件系统挂载之后从中把一些基本的初始化脚本和
服务等加载到内存中去运行。
百度百科上说内核代码镜像文件保存在根文件系统中,但是我们嵌入式 Linux 并没有将内
核代码镜像保存在根文件系统中,而是保存到了其他地方。比如 NAND Flash 的指定存储地址、
EMMC 专用分区中。根文件系统是 Linux 内核启动以后挂载(mount)的第一个文件系统,然后从
根文件系统中读取初始化脚本,比如 rcS,inittab 等。
2.根文件系统目录
->/bin 目录
bin 文件就是可执行文件。所以此目录下存放着系统
需要的可执行文件,一般都是一些命令,比如 ls、mv 等命令。
->/dev 目录
dev 是 device 的缩写,所以此目录下的文件都是和设备有关的,此目录下的文件都是设备
文件。在 Linux 下一切皆文件,即使是硬件设备,也是以文件的形式存在的,比如
/dev/ttymxc0(I.MX6ULL 根目录会有此文件)就表示 I.MX6ULL 的串口 0,我们要想通过串口 0
发送或者接收数据就要操作文件/dev/ttymxc0,通过对文件/dev/ttymxc0 的读写操作来实现串口
0 的数据收发。
->/etc 目录
此目录下存放着各种配置文件
->/lib 目录
lib 是 library 的简称,也就是库的意思,因此此目录下存放着 Linux 所必须的库文件。这些
库文件是共享库,命令和用户编写的应用程序要使用这些库文件。
->/mnt 目录
临时挂载目录,一般是空目录
->/proc 目录
此目录一般是空的,当 Linux 系统启动以后会将此目录作为 proc 文件系统的挂载点,proc
是个虚拟文件系统,没有实际的存储设备。proc 里面的文件都是临时存在的,一般用来存储系
统运行信息文件。
->/usr 目录
要注意,usr 不是 user 的缩写,而是 Unix Software Resource 的缩写,也就是 Unix 操作系统
软件资源目录。既然是软件资源目录,因此/usr 目录下也存放着很多软件,一般系统安装完成以
后此目录占用的空间最多。
->/var 目录
此目录存放一些可以改变的数据。
->/sbin 目录
此目录页用户存放一些可执行文件,但是此目录下的文件或者说命令只有管理员才能使用,
主要用户系统管理。
->/sys 目录
系统启动以后此目录作为 sysfs 文件系统的挂载点,sysfs 是一个类似于 proc 文件系统的特
殊文件系统,sysfs 也是基于 ram 的文件系统
->/opt
可选的文件、软件存放区,由用户选择将哪些文件或软件放到此目录中。
3.BusyBox
①简介
BusyBox是一个集成了大量的 Linux 命令和工具的软件,像 ls、mv、ifconfig 等命令 BusyBox 都会提供。
官网地址为:https://busybox.net/
②编译
make
make install CONFIG_PREFIX=/home/xxx/linux/nfs/rootfs
4.根文件系统初步测试
测试方法就是使用 NFS 挂载,uboot 里面的 bootargs 环境变量会设置“root”的值,所以我们将 root 的值改为 NFS 挂载即可。格式如下:
root=/dev/nfs nfsroot=[:][,] ip=::<gwip>::::::
setenv bootargs ‘console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.1.250:
/home/xxx/linux/nfs/rootfs,proto=tcp rw ip=192.168.1.251:192.168.1.250:192.168.1.1:
255.255.255.0::eth0:off’ //设置 bootargs
saveenv //保存环境变量
5.根文件系统其他功能测试
①软件运行测试
#include <stdio.h>
int main(void)
{
while(1)
{
printf("hello world!\r\n");
sleep(2);
}
return 0;
}
因为我们是要在 ARM 芯片上运行的,
所以要用交叉编译器去编译,也就是使用 arm-linux-gnueabihf-gcc 编译,命令如下:
arm-linux-gnueabihf-gcc hello.c -o hello
file hello //查看 hello 的文件类型以及编码格式
“./hello” //执行 hello
“./hello &”就是让 hello 在后台运行
hello 这个软件运行正常
ps 命令用于查看所有当前正在运行的进程,并且会给出进程的 PID。
kill -9 166
关闭在后台运行的hello 软件