嵌入式根文件系统制作

来源:互联网 发布:小意思mac激活码 编辑:程序博客网 时间:2024/05/16 13:39

构建一个最基本的嵌入式根文件系统,只是为了让Linux能够正常启动,根文件系统是yaffs2的根文件系统

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.创建设备文件

cd dev/

mknod -m 666 console c 5 1

mknod -m 666 null c 1 3

3.编写etc目录下的配置文件

cd etc

touch fstab

fstab文件内容

proc /proc proc defaults 0 0

none /tmp ramfs defaults 0 0

mdev /dev ramfs defaults 0 0

sysfs /sys sysfs defaults 0 0

touch inittab

inittab文件内容

console::sysinit:/etc/init.d/rcS

::respawn:-bin/sh

::restart:/sbin/init

::ctrlaltdel:/bin/umount -a -r

::shutdown:/bin/umount -a -r

::shutdown:/sbin/swapoff –a

mkdir init.d

cd init.d

touch rcS

rcS文件内容

#!/bin/sh

export PATH=/sbin:/bin:/usr/sbin:/usr/bin

/bin/mount -a

echo /sbin/mdev > proc/sys/kernel/hotplug

mdev –s

4.配置编译busybox

(1)修改busybox根目录下的Makefile

CROSS_COMPILE ?=arm-linux-    //164行

ARCH ?= arm                   // 189行

(2)使用make menuconfig配置busybox,这只是一个简单的配置,还可裁减,去掉不用的命令

Busybox Settings  ---> 

       Build Options  --->

              [*] Build BusyBox as a static binary (no shared libs) 

              (arm-linux-) Cross Compiler prefix

       Installation Options  ---> 

              [*] Don't use /usr  

              (/arm/linux/rootfs) BusyBox installation prefix 

Linux System Utilities  ---> 

       [*] mdev 

              [*]   Support /etc/mdev.conf 

其它的暂时采用默认的配置

5.编译安装busybox

make

make install

这样在rootfs目录下会生成bin、sbin、usr和文件linuxrc的内容

6.制作yaffs2根文件系统映像文件

采用的是国嵌的制作yaffs2文件系统映像工具

./mkyaffs2image rootfs rootfs.img

最基本的yaffs2根文件系统制作完毕

将rootfs.img烧写到nand flash中,系统就可以启动起来

 

注意:1.要u-boot支持yaffs2根文件系统烧写,即采用nand write.yaffs2命令来烧写yaffs2根文件系统,不能直接采用nand write来烧写,不然系统读不出来yaffs2根文件系统内容

2.nand flash最小写入单位是按页写,所以烧写的时候注意地址必须是页的整数倍