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
)
.
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
)
.
相关文章推荐
- 使用mkfs.jffs2工具制作jffs2根文件系统映像。
- 【Linux基础】 Jffs2根文件系统制作
- jffs2根文件系统制作(一)
- 制作jffs2根文件系统
- jffs2根文件系统制作
- at91sam9260ek开发板上jffs2根文件系统制作步骤(转)
- jffs2根文件系统制作(二)
- Jffs2根文件系统制作
- jffs2根文件系统制作
- jffs2根文件系统制作
- jffs2根文件系统制作(三)
- Jffs2根文件系统制作[转]
- Jffs2根文件系统制作[转]
- Jffs2根文件系统制作[转]
- Jffs2根文件系统制作【转】
- at91sam9260ek开发板上jffs2根文件系统制作步骤(转)
- 制作yaffs2根文件系统
- 在nand flash上实现JFFS2根文件文件系统
- 在nand flash上实现JFFS2根文件文件系统
- Yaffs2根文件系统制作