您的位置:首页 > 编程语言 > PHP开发

yaffs2文件系统移植

2010-04-19 12:47 357 查看
制作
ARM
版
linux


一、

修改顶层
Makefile
,确定内核要移植到的目标架构及使用的交叉编译器。


ARCH ?= arm

CROSS_COMPILE ?= arm-linux-

二、

修改平台的输入时钟频率为
12M
。


arch/arm/mach-s3c2440/mach-smdk2440.c
文件,在函数
static void __init smdk2440_map_io(void)
中,修改成
s3c24xx_init_clocks(12000000)


三、

修改
Nand flash
分区信息,使其与
bootloader
对
Flash
的分区设置保持一致







arch/arm/plat-s3c24xx/common-smdk.c
文件

static struct mtd_partition smdk_default_nand_part[] =

{

[0] = {

.name = "supervivi",

.offset = 0x00000000,

.size = 0x00040000,

},

[1] = {

.name = "kernel",

.offset = 0x00060000,

.size = 0x00200000,

},

[2] = {

.name = "root",

.offset = 0x00260000,

.size = 0x3fd80000,

}

};

四、

修改
mach_type
。
Bootloader
传递的
mach_type
需要与内核中的某个
mach_type
匹配


方法一:

修改
bootloader
传递给内核的启动参数

方法二:

arch/arm/tools/mach-types
文件中,

s3c2440       ARCH_S3C2440         S3C2440                362

修改为:

s3c2440      ARCH_S3C2440          S3C2440                1999

其中
1999
为
supervivi
默认的
mach_type
,也是
mini2440
的
mach_type
,发生冲突,但只要不加入
mini2440
的配置就不会出问题

五、

给内核打上
yaffs2
文件系统的补丁


六、

配置内核,主要是添加对
s3c2440
、
yaffs2
文件系统的支持


七、

make zImage
编译内核得到
zImage
文件


制作根文件系统


一、

建立
bin
、
linuxrc
、
sbin
、
usr
目录


通过安装
Busybox
来建立这些目录

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

ARCH ?= arm

CROSS_COMPILE ?= arm-linux-

(
2
)执行“
make menuconfig
”后退出

(
3
)执行“
make”
编译
Busybox

(
4
)执行“
make CONFIG_PREFIX=/work/rootfs install
”,将
Busybox
安装在
rootfs
目录下

此时在
rootfs
目录下建立了
bin
、
linuxrc
、
sbin
、
usr
目录

二、

建立
lib
目录
(
程序运行所需要的动态链接库的目录
)


mkdir /work/rootfs/lib

cp -rfd /work/root_qtopia/lib/*  /work/rootfs/lib/

此时在
rootfs
目录下建立了
lib

目录

三、

建立
etc
目录


mkdir rootfs/etc

(
1
)建立

etc/inittab

gedit etc/inittab
,内容为:

# /etc/inittab

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

s3c2410_serial0::askfirst:-/bin/sh

::ctrlaltdel:/sbin/reboot

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

(
2
)建立
etc/init.d/rcS

mkdir init.d

gedit rcS
,内容为:

#!/bin/sh

ifconfig eth0 192.168.1.17

mount -a

mkdir /dev/pts

mount -t devpts devpts /dev/pts

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

mdev -s

另外,还要改变它的属性使它能够执行。

chmod +x etc/init.d/rcS

(3)建立etc/fstab文件

gedit fstab
,内容为:

#device        mount-point        type        options        dump        fack order

proc            /proc                 proc        defaults        0            0

tmpfs           /tmp                tmpfs       defaults        0            0

sysfs           /sys                  sysfs        defaults       0            0

tmpfs           /dev                tmpfs       defaults        0            0

(4)构建其他必要的目录,但它们可以是空的

mkdir proc mnt tmp sys root

(5)另外,mdev(udev的简化版)是通过init进程来启动的,在使用mdev构造/dev目录之前,init进程至少要用到设备文件/dev/console、/dev/null,所以必须先建立这两个设备文件:

mkdir rootfs/dev

# mknod -m 660 dev/console           c         5     1

# mknod -m 660 dev/null                  c            1     3

至此,生成的目录和文件为:
bin
、
linuxrc
、
sbin
、
usr
、
lib
、
etc
、
proc
、
mnt
、
tmp
、
sys
、
root


此时的
rootfs
就是一个非常小的根文件系统。开发板可以将它作为网络根文件系统直接启动,或者制作成文件系统映像文件存储到
Flash
中。

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