嵌入式Linux-根文件系统制作
2017-01-16 20:05
543 查看
嵌入式Linux-根文件系统制作
一, 文件系统相关概念
嵌入式文件系统可以有多个文件系统,但是必须有一个根文件系统,根文件系统RootFs,可以简单的说就是使用ls命令列出来的目录和文件,这就是文件系统的基本概念。
二, 根文件系统的创建
我使用的开发板来测试创建的文件系统,基于Linux3.0.8内核, 使用的redhat-2.6系统,下面是创建RootFs的一些基本的步骤。
建立RootFs
创建目录
创建设备文件:console, null
加入配置文件
配置文件与体系结构无关,我们可以直接拷贝,然后自己修改,本次拷贝5个配置文件到/etc/下
添加内核模块:在开发板对应的内核源代码目录下,编译内核模块,然后将模块安装到rootfs中
编译BusyBox:BusyBox被称为嵌入式系统中的瑞士军刀,可以为嵌入式系统添加命令和功能。
配置BusyBox, 首先你需要到网站上下载busybox源代码
配置选项:
1.BusyBox Settings -> build options ->
选中Build busybox as a static binary
设置Cross Compiler prefix(arm-linux-)
2.Installation Options ->
选中 Don`t use /usr
3.Busybox Installation Prefix(…/rootfs)
…/rootfs为你自己的rootfs的根目录
编译安装BusyBox
三, 根文件系统挂载
1.挂载方式
主要的存储设备为 RAM 和 FLASH,常用的基于存储设备的文件系统类型包括:jffs2, yaffs2, ubifs, ramdisk等
NandFlash:可读可写
Yaffs
UbiFS
NorFlash:可读可写
Jffs2
基于内存:启动速度很快,但是不能保存数据,会掉电丢失
Ramdisk:固定大小
Initramfs:可以动态改变大小
基于网络:
NFS:在产品开发阶段经常使用
多种FS可以结合:
Initramfs + UbiFs
2.Initramfs挂载
在rootfs根目录建立busybox软连接
配置内核,支持initramfs
重新编译内核
此时我们编译的内核已经挂载了rootfs
设置启动参数:
启动tftp服务,下载uImage, 启动内核
测试
因为我们使用的Initramfs,每次改变rootfs中内容后,我们只有重新编译内核,因为编译的uImage = kernel + fs(RootFs压缩后的fs),uImage启动后会将fs解压到内存中去,才能对新加的内容进行测试,这非常不利于产品的开发,在产品的开发过程中,我们多数都是使用NFS。
3.NFS挂载
配置内核,使得其支持NFS,并重新编译
启动Linux上的NFS服务
设置开发板启动参数
如何查看ip和默认网关呢
重启开发板,下载内核
测试
在Linux下的rootfs根目录中添加一个测试文件,在开发板中立刻可以看到添加的文件,这非常方便我们调试产品。
四,总结
本次介绍了rootfs的基本知识,希望大家共同学习,下面是思维导图:
本次资料链接:链接:http://pan.baidu.com/s/1qXJzrnI 密码:tt6o
一, 文件系统相关概念
嵌入式文件系统可以有多个文件系统,但是必须有一个根文件系统,根文件系统RootFs,可以简单的说就是使用ls命令列出来的目录和文件,这就是文件系统的基本概念。
二, 根文件系统的创建
我使用的开发板来测试创建的文件系统,基于Linux3.0.8内核, 使用的redhat-2.6系统,下面是创建RootFs的一些基本的步骤。
建立RootFs
创建目录
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
创建设备文件:console, null
cd rootfs/dev/ mknod -m 666 console c 5 1 mknod -m 666 null c 1 3
加入配置文件
配置文件与体系结构无关,我们可以直接拷贝,然后自己修改,本次拷贝5个配置文件到/etc/下
etc/init.d/rcS fstab inittab profile
添加内核模块:在开发板对应的内核源代码目录下,编译内核模块,然后将模块安装到rootfs中
#你的内核源码根目录 cd .../linux make modules ARCH=arm CROSS_COMPILE=arm-linux- #你自己的rootfs的路径 make modules_install ARCH=arm INSTALL_MOD_PATH=.../rootfs
编译BusyBox:BusyBox被称为嵌入式系统中的瑞士军刀,可以为嵌入式系统添加命令和功能。
配置BusyBox, 首先你需要到网站上下载busybox源代码
cd busybox/ make menuconfig
配置选项:
1.BusyBox Settings -> build options ->
选中Build busybox as a static binary
设置Cross Compiler prefix(arm-linux-)
2.Installation Options ->
选中 Don`t use /usr
3.Busybox Installation Prefix(…/rootfs)
…/rootfs为你自己的rootfs的根目录
编译安装BusyBox
make make install
三, 根文件系统挂载
1.挂载方式
主要的存储设备为 RAM 和 FLASH,常用的基于存储设备的文件系统类型包括:jffs2, yaffs2, ubifs, ramdisk等
NandFlash:可读可写
Yaffs
UbiFS
NorFlash:可读可写
Jffs2
基于内存:启动速度很快,但是不能保存数据,会掉电丢失
Ramdisk:固定大小
Initramfs:可以动态改变大小
基于网络:
NFS:在产品开发阶段经常使用
多种FS可以结合:
Initramfs + UbiFs
2.Initramfs挂载
在rootfs根目录建立busybox软连接
ln -s ./bin/busybox init
配置内核,支持initramfs
cd .../linux make menuconfig
重新编译内核
make ARCH=arm CROSS_COMPILE=arm-linux-
此时我们编译的内核已经挂载了rootfs
设置启动参数:
setenv bootargs noinitrd console=ttySAC0,115200
启动tftp服务,下载uImage, 启动内核
tftp 0x20000000 uImage bootm 0x20000000
测试
因为我们使用的Initramfs,每次改变rootfs中内容后,我们只有重新编译内核,因为编译的uImage = kernel + fs(RootFs压缩后的fs),uImage启动后会将fs解压到内存中去,才能对新加的内容进行测试,这非常不利于产品的开发,在产品的开发过程中,我们多数都是使用NFS。
3.NFS挂载
配置内核,使得其支持NFS,并重新编译
cd .../linux make menuconfig
make ARCH=arm CROSS_COMPILE=arm-linux-
启动Linux上的NFS服务
sudo service nfs restart
设置开发板启动参数
#ip=10.13.1.150(开发板IP):10.13.1.215(Linux 服务器IP):192.168.1.1(网关):255.255.255.0:空白:eth0:off setenv bootargs noinitrd console=ttySAC0,115200 init=/init root=/dev/nfs rw nfsroot=10.13.1.215:/root/Desktop/work/RootFs,proto=tcp nfsvers=3 ip=10.13.1.150:10.13.1.215:10.13.0.1:255.255.255.0::eth0:off
如何查看ip和默认网关呢
#查看ip ifconfig #查看网关,default选项 route
重启开发板,下载内核
tftp 0x20000000 uImage bootm 0x20000000
测试
在Linux下的rootfs根目录中添加一个测试文件,在开发板中立刻可以看到添加的文件,这非常方便我们调试产品。
四,总结
本次介绍了rootfs的基本知识,希望大家共同学习,下面是思维导图:
本次资料链接:链接:http://pan.baidu.com/s/1qXJzrnI 密码:tt6o
相关文章推荐
- 制作嵌入式linux文件系统(ramdisk,cramfs,squashfs)
- 用Busybox制作嵌入式Linux的文件系统
- linux中的热插拔和mdev机制(深入理解嵌入式linux文件系统的制作)
- 嵌入式linux内核与根文件系统制作
- 用busybox制作嵌入式Linux的文件系统
- Linux内核制作与嵌入式根文件系统的构建
- 嵌入式Linux文件系统制作详解
- linux中的热插拔和mdev机制(深入理解嵌入式linux文件系统的制作)
- 嵌入式Linux内核,文件系统的制作
- 用busybox制作嵌入式Linux的文件系统
- 用busybox制作嵌入式Linux的文件系统
- 嵌入式Linux文件系统制作详解
- 如何制作嵌入式Linux文件系统
- 如何制作嵌入式Linux文件系统
- 基于嵌入式Linux平台的最小文件系统的制作
- Busybox制作嵌入式Linux的文件系统
- 转:制作嵌入式linux文件系统(ramdisk,cramfs,squashfs)
- 用busybox制作嵌入式Linux的文件系统
- 构建嵌入式linux系统 、制作根文件系统
- 细说嵌入式Linux文件系统的制作方法