实验六 内核与根文件系统实验
一、实验目的
1.了解UP-NetARM2410-S的根文件系统结构 2.了解根文件系统的生成过程 3.完成一个简单的文件系统生成步骤 4.了解busybox、mkcramfs工具 二、实验内容
使用busybox生成文件系统中的命令部分,使用mkcramfs工具制作文件系统,并完成 将文件系统放置到开发板的烧写工作。 三、预备知识
1.熟悉linux下文件目录结构 2.熟悉linux下常用命令的使用 3.掌握Makefile 的编写和使用。
4.掌握Linux下的程序编译与交叉编译过程 四、实验设备及工具
硬件:UP-NetARM2410-S嵌入式实验仪,PC机pentumn500以上, 硬盘10G以上。
软件:PC机操作系统REDHAT LINUX 9.0 +MINICOM + AMRLINUX开发环境。 五、实验步骤
1.UP-NetARM2410-S Linux文件系统构建方案: 1) 根文件系统:
根文件系统是系统启动时挂载的第一个文件系统,其他的文件系统需要在跟文件系统 目录中建立节点后再挂载。UP-NetARM2410-S有一个64M大小的NANDFLASH,根文件系统和用户文件系统建立在该 flash的后大半部分。该flash的前小半部分用来存放bootloader和kernel映像。根文 件系统选用了Cramfs文件系统格式。 2) 用户YAFFS文件系统:
由于Cramfs为只读文件系统,为了得到可读写的文件系统,用户文件系统采用YAFFS 格式。用户文件系统挂载于根文件系统下的/mnt/yaffs目录。 3) 临时文件系统:
为了避免频繁的读写操作对Flash造成的伤害,系统对频繁的读写操作的文件夹采用 了Ramfs文件系统。根目录下的/var,/tmp目录为Ramfs临
时文件系统的挂载点。
文件系统构建流程:在嵌人式Linux系统中混合使用Cramfs、YAFFS和Ramfs。
三种文件系统的实现思路如 下:
配置内核:将内核对MTD,Cramfs,YAFFS以及Ramfs文件系统的支持功能编译进内核。划分Flash分区:对Flash物理空间进行分区,以便在不同的分区上存放不同的数据,采用 不同的文件系统格式;必要时编写MAPS文件。今修改系统脚本:在系统启动后利用脚本挂载 文件系统。今创建文件系统镜像文件:利用工具生成文件系统镜像文件,并通过Flash烧写。工具将镜像文件烧写到Flash物理空间。 2.内核配置
1) 内核配置(运行make menuconfig)
① 配置MTD_要使用Cramfs和YAFFS文件系统,首先需要配置MTD.在Memory Technology Devices (MTD) --->选项中选中如下选项:
<*> Memory Technology Device (MTD) support MTD支持 [*] MTD partitioning support MTD分区支持
<*> Direct char device access to MTD devices 字符设备的支持 <*> Caching block device access to MTD devices 块设备支持 NAND Flash Device Drivers ---> 对NAND Flash的支持 <*> SMC Device Support
<*> Simple Block Device for Nand Flash(BON FS) <*> SMC device on S3C2410 SMDK [*] Use MTD From SMC ② 配置文件系统。
<*> Kernel automounter version 4 support (also supports v3) 文件系统自动挂载支持
<*> DOS FAT fs supportt fs support 对DOS/FAT文件系统的支持 <*> VFAT (Windows-95) fs support
<*> Yaffs filesystem on NAND 对YAFFS文件系统的支持 <*> Compressed ROM file system support 对Cramfs文件系统的支持 [*] Virtual memory file system support (former shm fs) 对temfs文件系统的支持 <*> Simple RAM-based file system support
[*] /proc file system support 对/proc和/dev设备文件系统的支持
[*] /dev file system support (EXPERIMENTAL) /dev设备文件系统支持 [*] Automatically mount at boot 启动时自动挂载的支持[*] /dev/pts file system for Unix98 PTYs
Network File Systems ---> 对NFS网络文件系统的支
持 <*> NFS file system support [*] Provide NFSv3 client support 2) 根文件系统的实现
制作Cramfs格式的根文件系统: 一个使用 linux内核的嵌入式系统中的root文件系统必须包括支持完整 linux系统的全部东西,因此它至少应包括:基本文件系统结构;至少含有目录/dev/proc/bin/etc/lib/usr;最基本的应用程序,如sh、ls、cp、mv等;
最低限度的配置文件,如inittab、fstab等;
设备:/dev/null/dev/console/dev/ tty*/dev/ttyS*对应flash分区的设备节点等; 基本程序运行所需的函数库。但由于嵌入式系统资源相对紧缺,在构建的时候要根据系统进行定制。
实验步骤如下:
cd /arm2410s/exp mkdir rootfs cd rootfs/
cp –arf/arm2410s/busybox-1.00-pre10/ /arm2410s/root/ . cd busybox-1.00-pre10/ 进行到这一步时注意: General Configuration --->
[*] Use the devpts filesystem for Unix98 PTYs Build Options --->
[*] Build BusyBox as a static binary (no shared libs) [*] Do you want to build BusyBox with a Cross Compiler?
选择交叉编译(/opt/host/armv4l/bin/armv4l-unknown-linux-gcc) Cross Compiler prefix 回车
将路径改为/opt/host/armv4l/bin/armv4l-unknown-linux- Installation Options ---> [ ] Don't use /usr Init Utilities ---> 全都不要
网络环境不差的话几秒钟应该可以烧完。如图1所示。
六、实验总结
通过本次实验,移植QT/E到UP-ARM2410CL上;在QT/E中添加触摸屏鼠标等设备支持;在Qt Designer下编写程序,ARM设备上运行;了解了UP-NetARM2410-S的根文件系统结构,了解了根文件系统的生成过程以及busybox、mkcramfs工具的使用 。能够完成一个简单的文件系统生成步骤。
图1(a)
图1(b)

