嵌入式 根文件 系统

创建根目录

嵌入式linux系统可以包含多个文件系统,但是必须包含根文件系统,“根”的意思就是“第一个”,必须要有第一个文件系统。

文件系统包含两层含义,一是系统中的一系列文件目录,二是嵌入式系统挂载文件目录的方式。

创建目录:
创建目录非常简单,只是批量创建出一系列的文件夹。
mkdir rootfs
cd rootfs
mkdir bin dev etc lib proc sbin sys usr mnt tmp var
mkdir usr/bin usr/lib usr/sbin lib/modules

创建设备文件:
相关的设备在系统中以文件的方式存在。
cd rootfs/dev
mknod -m 666 console c 5 1
mknod -m 666 null c 1 3
创建两个必须的设备文件。c 代表字符设备,然后分别为主设备号,次设备号。

加入配置文件:
配置文件与系统无关,可以采用软件包。
tar etc.tar.gz
mv etc/* …/rootfs/etc/ -rf

添加内核模块
cd …/linux进入内核代码文件
make modules ARCH=arm CROSS_COMPILE=arm-linux-
make modules_ install ARCH=arm INSTALL_ MOD_ PATH=…/rootfs制作的根文件系统路径,将编译好的内核模块.ko文件搬移到根文件目录中的/lib/modules/目录下。

编译/安装busybox

Busybox:嵌入式开发中的瑞士军刀,可以为根文件系统提供Linux中的相关命令。

1、配置busybox
解压busybox压缩包,进入busybox文件根目录,执行命令:make menuconfig
在图形界面下对如下选项进行配置:

Busybox Settings - - - -> build Options- - - ->

  • 选中 “Build busybox as a static binary”, 静态链接
  • Cross Compiler prefix (arm-linux-)

Busybox Settings- -> Installation Options- ->

  • 选中 “Don‘t use /usr”, 选中该项可以避免busybox 被安装到宿主系统的/usr目录下,破坏宿主系统。
  • Busybox Installation Prefix (/xxx/rootfs) 该选项表明编译后的busybox的安装位置。

如下图所示:
这里写图片描述

2. 编译、安装busybox
编译:make
安装:make install

挂载根文件系统

根据存储设备的硬件特性、系统需求,不同的文件系统类型有不同的应用场合。在嵌入式Linux应用中,主要的存储设备为 RAM 和FLASH,常用的基于存储设备的文件系统类型包括:jffs2, yaffs2, ubifs, ramdisk等

文件系统类型
这里写图片描述
可以多种文件系统复用。

使用Initramfs方式来挂载文件系统
1、 cd …/rootfs/
ln –s ./bin/busybox init 建立软连接init,它连接到bin文件下的busybox
2、配置Linux内核,使内核支持initramfs
在 general setup –> 中
还要设置根文件系统目录的路径,如下图所示:
这里写图片描述
3、 编译内核,将内核文件拷贝到需要的地方,把内核下载到开发板中。
4、 利用嵌入式系统中的uboot指令来设置环境变量,
setenv bootargs noinitrd console=ttySAC0,115200

这样就可以将根文件系统挂载到linux系统中。

使用NFS方式挂载文件系统

network file system 网络文件系统,根据上面的步骤,如果采用initramfs方式,不采用网络的方式,如果文件系统发生改变则需要重新编译内核,如果在开发阶段每次修改文件就重新编译内核就非常麻烦,采用NFS方式就可以变得很简单。

1、配置Linux内核,使内核支持initramfs
注意在 general setup –> 中,去掉上一部分选中的initramfs选项。
在 file system- - >network file system- -> 中
这里写图片描述

2、编译内核

3、在uboot界面设置环境变量启动参数
setenv bootargs noinitrd
console=ttySAC0,115200 init=/init (串口)

root=/dev/nfs rw (采用nfs设备)

nfsroot=192.168.1.3:/home/xxxx,proto=tcp,nfsvers=3
(nfs服务器的ip地址:根文件系统rootfs的路径)

ip=192.168.1.6:192.168.1.3:192.168.1.1:255.255.255.0::eth0:off
(开发板的ip地址:服务器的ip地址:网关:掩码:网卡名不写:将ip地址给eth0:关闭动态ip获取)
注意:上面的粗体字为需要根据实际来进行修改的内容。

4、确保作为服务器的Linux主机的NFS服务器是开启的。
5、下载内核、启动系统。

发布了5 篇原创文章 · 获赞 60 · 访问量 18万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章