yaffs2文件系统移植

制作 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 中。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值