您的位置:首页 > 其它

jffs2根文件系统制作笔记

2010-10-22 11:37 295 查看
p { margin-bottom: 0.21cm; }

1.linux内核配置



目的:在内核中添加对
jffs2

文件系统的支持

  想要在系统中提供
jffs2

文件系统的能力,我们必须要在编辑
liunx

内核时把支持
jffs2

的选项加入。尽管
Linux

可以以模块的形式加载各种类型的设备驱动上,但我们选择直接把设备驱动及
jffs2

文件系统静态地编译进内核中。(
1


MTD

相关选项

  在
Memory
Technology Devices (MTD)

选项中进行配置,具体选那些选项以后再说。  


2

)文件系统选项

  在
File
Systems

选项中进行配置,选中
jffs2

相关选项,具体选那些选项以后再说。

2.busybox

的配置

下面是需要编译进
busybox

的功能选项
,

其他的可以根据需要自选。

  
Build
Options

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

  这个选项是一定要选择的
,

这样才能把
busybox

编译成静态链接的可执行文件
,

运行时才独立于其他函数库,否则必需要其他库文件才能运行
,

在单个
linux

内核不能使他正常工作。

[*]
Do you want to build BusyBox with a Cross Compiler

选择你自己定义的交叉编译环境。

我的设置:
/usr/local/arm/3.4.1/bin/arm-linux-

  
Installation
Options

  
[*]
don’t use /usr

  这个选项也一定要选,否则
make
install


busybox

将安装在原系统的
/usr

下,这将覆盖系统原有的命令。选择这个选项后
,make
install

后会在
busybox

目录下生成一个叫
_install

的目录,里面有
busybox

和指向他的链接。

  其他选项都是一些
linux

基本命令选项,自己需要哪些命令就编译进去,一般用默认的就可以了,配置好后退出并保存。

3.制作根文件系统

根文件系

的组成
:目录、
Shell、库、脚本

1.
目录

根文件系统要包含的目录:
/dev,

/lib,

/etc,

/proc

/dev:设备文件系统的挂接点

/lib:用于存放动态链接库

/etc:用来存放初始化脚本和其他配置文件的

/proc:用来挂载存放系统信息虚拟文件系统

未列举完
......

2. Shell

Shell
就是 Busybox,从网上下载来
busybox-1.00-pre10.tar.bz2,并解压。

#cd busybox-1.00-pre10

# make
menuconfig(busybox
的配置很关键,在后面细说


# make

# make install

编译后安装在 Busybox
下的 _install 目录里。

3. 建立跟文件系统

我们可以在
Busybox生成的 Shell
基础上建根文件系统了,以命令示之,如下:

# mkdir
/home/lin/rootfs

# cd
/home/lin/busybox-1.00-pre10/_install

# cp -r ./
/home/lin/rootfs

# cd
/home/lin/rootfs

# mkdir dev

# mkdir
etc

# mkdir lib

# mkdir proc

# mkdir sys

# mkdir tmp

未列举完
......

以 root 身份执行(可通过
su 切换):

# cd dev

# mknod -m 660 console c 5 1

# mknod -m 660 null c 1 3

# mknod -m 660 zero c 1 5

4. 库

可拷贝开发板自带的文件系统的库,如果开发板的文件系统是映像,只需把映像挂载在某个目录下访问即可。
假设映像为 root_tmp.cramfs,如下:

# mkdir
/home/lin/cramfs

# mount -o loop demo.cramfs
/home/lin/cramfs

# cd /home/lin/cramfs/lib

# cp -r ./ /home/lin/rootfs/lib

5. 脚本

要使 Shell 正常工作,
还要设置初始化脚本。

(1) /etc/inittab;

#
This is run first except when booting

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

#
Start an "askfirst" shell on the console

#::askfirst:-/bin/bash

#::askfirst:/bin/bash

tts/0::askfirst:-/bin/sh

#ttyS1::respawn:-/bin/sh

#tty1::respawn:-/bin/sh

#::respawn:/bin/sh

#
Stuff to do when restarting the init process

::restart:/sbin/init

#::once:/sbin/raja.sh

#::respawn:/sbin/iom

::once:/usr/sbin/inetd

::once:/usr/etc/rc.local

#::respawn:/bin/sh

#
Stuff to do before rebooting

::ctrlaltdel:/sbin/reboot

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

(2)设置文件系统的挂载表
/etc/fstab

#
<file system> <mount pt> <type> <options>
<dump> <pass>

none
/proc proc defaults 0 0

none
/dev/pts devpts mode=0622 0 0

tmpfs
/dev/shm tmpfs defaults 0 0

none
/sys sysfs defaults 0 0

#192.168.1.13:/home/export/nfs
/tmp nfs rsize=2048,wsize=8192 0 0

(3)设置
/etc/init.d/rcS

#!/bin/bash

/bin/mount
-a

/bin/mount
-t usbdevfs none /proc/bus/usb

/bin/hostname
pxa270

/usr/etc/profile

ln
-s /dev/tts/1 /dev/ttyS1

#echo
"make /var,/tmp in /dev/shm"

#mkdir
/dev/shm/tmp

#cp
-a /etc/var /dev/shm

#/bin/batt_blite

grep
-q 'dnmode=multi' /proc/cmdline 2>/dev/null

if
[ "$?" = "0" ]; then

/bin/canna

exit
0

fi

grep
-q 'dnmode=single' /proc/cmdline 2>/dev/null

if
[ "$?" = "0" ]; then

/bin/canna
-s

exit
0

6.生成根文件系统映像

命令:

./mkfs.jffs2 -r rootfs -o
root_lb.jffs2 -e 0x40000


释:

-r


指定要做成
image

的源资料目录
.

-o
:

指定输出
image

镜像
的文件名
.

-e
:

每一块要擦除的
block
size

,預設是
64KB.

要注意,不同的
flash,


block
size

會不一樣
.

YLE270是

intel
TE28F128 FLASH

的块大小为

256K

(即

0x00040000


.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: