[国嵌攻略][101][根文件系统制作]

根文件系统

一个嵌入式Linux系统可以有多个文件系统,但必须有第一个文件系统,也就是根文件系统。系统启动后看到的目录和目录里面的文件就是文件系统。

 

建立根文件系统

1.创建目录

示例:

mkdir rootfs

cd rootfs

mkdir bin dev etc lib mnt proc sbin sys tmp usr var

mkdir usr/bin usr/lib usr/sbin lib/modules

 

2.创建设备文件

Linux系统中设备以文件的方式存在dev目录下,Linux系统启动时需要console文件和null文件。

示例:

cd dev

mknod -m 666 console c 5 1  -m 666属性,console设备文件名,c字符设备,5主设备号,1次设备号

mknod -m 666 null c 1 3

 

3.添加配置文件

配置文件与处理器架构无关

示例:

tar zxvf etc.tar.gz

cp etc/* rootfs/etc/

 

4.添加内核模块

make modules ARCH=arm CROSS_COMPILE=arm-linux-

make modules_install ARCH=arm INSTARLL_MOD_PATH=.../rootfs/

 

5.编译和安装busybox

5.1配置busybox

make menuconfig

busybox settings->build options->[*]build busybox as a static binary

busybox settings->build options->(arm-linux-)cross compiler prefix

busybox settings->installation options->[*]don’t use /usr

busybox settings->installation options->(.../rootfs)busybox installation prefix

5.2.编译busybox

make

5.2.安装busybox

make install

 

挂载根文件系统

1.文件系统类型

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

 

基于nand flash的文件系统:yaffs2,ubifs

基于norflash的文件系统:jffs2

基于内存的文件系统:ramdisk,initramfs

基于网络的文件系统:nfs

网络文件系统一般在开发阶段使用,内存文件系统的优势是启动速度快,nand flash文件的优势是可以保存用户数据,所在在实际产品中会采用内存文件系统和nand flash文件系统混用的情况。

 

2.使用initramfs挂载根文件系统

特点:

使用initramfs的优点在于启动速度快,缺点是无法修改文件系统里面的内容。一般在做成产品后使用。

 

2.1.在根文件系统下创建软链接

cd .../rootfs/

ln –s ./bin/busybox init

2.2.配置Linux内核

make menuconfig ARCH=arm

general setup->[*]initial ram filesystem and ram disk->(.../rootfs)initramfs source file(s)

 

2.3.编译Linux内核

make uImage ARCH=arm CROSS_COMPILE=arm-linux-

 

2.4.设置启动参数

进入uboot设置环境变量

setenv bootargs noinitrd console=ttySAC0,115200

saveenv

 

2.5.下载内核文件

tftp 31000000 uImage

 

2.6.启动内核

bootm 31000000

 

3.使用nfs挂载根文件系统

特点:

使用nfs的优点在于可以通过网络直接修改文件系统里面的内容,缺点在于需要网络。一般在开发阶段使用。

 

3.1.配置内核

make menuconfig ARCH=arm

general setup->[ ]initial ram filesystem and ram disk

file systems->[*]network file systems->[*]root file system on nfs

 

3.2.编译Linux内核

make uImage ARCH=arm CROSS_COMPILE=arm-linux-

 

3.3.设置启动参数

进入uboot设置环境变量

console=ttySAC0,115200   表示使用串口0,波特率是115200

root=/dev/nfs rw   表示使用根目录下的/dev/nfs设备作为文件系统,rw可读可写

nfsroot=192.168.1.101:.../rootfs   表示nfs服务器的地址和根文件系统的路径

ip=开发板IP地址:服务器IP地址:网关地址:地址掩码:开发板主机名:IP对应的网卡设备:动态域名获取

示例:

setenv bootargs noinitrd console=ttySAC0,115200 init=/init root=/dev/nfs rw nfsroot=192.168.1.101:.../rootfs ip=192.168.1.230:192.168.1.101:192.168.1.1:255.255.255.0::eth0:off

saveenv

 

3.4.配置NFS服务器

vim /etc/exports   修改NFS服务器路径

.../rootfs *(rw,sync,no_root_squash)

/etc/init.d/nfs restart   启动NFS服务器

 

3.5.下载内核文件

tftp 31000000 uImage

 

3.6.启动内核

bootm 31000000

 

posted @ 2016-03-04 16:53  盛夏夜  阅读(407)  评论(0编辑  收藏  举报