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

mini2440中busybox和yaffs2文件系统的移植

2013-01-14 16:36 531 查看
mini2440,bootloader为官方提供的supervivi,linux内核为linux-2.6.34.2。移植busybox和yaffs2文件系统的步骤:

(1) 获取busybox源码包。

下载地址http://www.busybox.net/downloads/。在此,下载的版本为:busybox-1.20.2。

(2) 获取yaffs2源码包。

从官网上下载最新版本的,在此,下载的版本为:yaffs2-52df965。

(3) 进入yaffs2-52df965目录,给内核打补丁

./patch-ker.shc m ../linux-2.6.34.2

(4) 配置内核,支持yaffs2文件系统。

进入内核根目录,运行make menuconfig命令,选择File Systems、Miscellaneous filesystems、YAFFS2 filesystem support。

(5) 构建根文件系统。

在/opt/目录下,新建目录/fs/,进入fs中,编写创建根文件系统脚本create_rootfs_bash,其内容如下:

#!/bin/sh

echo "------Create rootfs directons start...--------"

mkdir rootfs

cd rootfs

echo "--------Create root,dev....----------"

mkdir root dev etc boot tmp var sys proc lib mnt home usr

mkdir etc/init.d etc/rc.d etc/sysconfig

mkdir usr/sbin usr/bin usr/lib usr/modules

echo "make node in dev/console dev/null"

mknod -m 600 dev/console c 5 1

mknod -m 600 dev/null c 1 3

mkdir mnt/etc mnt/jffs2 mnt/yaffs mnt/data mnt/temp

mkdir var/lib var/lock var/run var/tmp

chmod 1777 tmp

chmod 1777 var/tmp

echo "-------make direction done---------"

修改脚本的可执行权限:chmod +xcreate_rootfs_bash

建立动态链接库:

将mini2440官方提供的根文件系统解压,然后将lib下的文件全部复制到我们的lib下边。

(6) 配置busybox。

解压安装busybox,进入busybox根目录,修改Makefile文件:

CROSS_COMPILE ?=arm-linux-

ARCH ?= arm

然后运行make menuconfig,进行配置:





(7) 编译busybox。

makeCONFIG_PREFIX=/opt/fs/rootfs install

(8) 建立etc目录。

i. 拷贝主机etc目录下的passwd、group、shadow文件到rootfs/etc目录下。

ii. 在etc/下创建mdev.conf文件

mdev.conf的内容为:

# system all-writable devices

full 0:0 0666

null 0:0 0666

ptmx 0:0 0666

random 0:0 0666

tty 0:0 0666

zero 0:0 0666

# console devices

tty[0-9]* 0:5 0660

vc/[0-9]* 0:5 0660

# serial port devices

s3c2410_serial0 0:5 0666 =ttySAC0

s3c2410_serial1 0:5 0666 =ttySAC1

s3c2410_serial2 0:5 0666 =ttySAC2

s3c2410_serial3 0:5 0666 =ttySAC3

# loop devices

loop[0-9]* 0:0 0660 =loop/

# i2c devices

i2c-0 0:0 0666 =i2c/0

i2c-1 0:0 0666 =i2c/1

# frame buffer devices

fb[0-9] 0:0 0666

# input devices

mice 0:0 0660 =input/

mouse.* 0:0 0660 =input/

event.* 0:0 0660 =input/

ts.* 0:0 0660 =input/

# rtc devices

rtc0 0:0 0644 >rtc

rtc[1-9] 0:0 0644

# misc devices

mmcblk0p1 0:0 0600 =sdcard */bin/hotplug.sh

sda1 0:0 0600 =udisk * /bin/hotplug.sh

iii. etc/inittab文件:仿照Busybox的examples/inittab文件,在etc/目录下创建一个inittab文件,写上以下内容:

#etc/inittab

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

::askfirst:-/bin/sh

::ctrlaltdel:/sbin/reboot

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

iv. 创建etc/init.d/rcS文件:

#!/bin/sh

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

runlevel=S //运行的级别

prevlevel=N

umask 022 //文件夹的掩码

export PATH runlevel prevlevel

echo"--------- munt all--------"

mount –a //挂载/etc/fstab/文件指定的所有的文件系统

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

mdev -s

echo "*************************"

echo "**********************mnonm ARM**************"

echo "Kernel version:linux-2.6.34.2"

echo "Author:mnonm"

echo "Data:2013,01,14"

echo "***********************"

/bin/hostname -F /etc/sysconfig/HOSTNAME //主机的名字

最后,还要改变它的属性,使它能够运行

sudo chmod +x etc/init.d/rcS

v. etc/sysconfig目录下新建文件HOSTNAME,内容为”mnonm-mini2440”。

vi. 创建etc/fstab文件:

#device mount-point type option dump fsck order

proc /proc proc defaults 0 0

tmpfs /tmp tmpfs defaults 0 0

none /tmp ramfs defaults 0 0

sysfs /sys sysfs defaults 0 0

mdev /dev ramfs defaults 0 0

vii. 创建etc/profile文件:

#Ash profile

#vim:syntax=sh

#No core file by defaults

#ulimit -S -c 0>/dev/null 2>&1

USER="id -un"

LOGNAME=$USER

PS1='[\u@\h\W]#'

PATH=$PATH

HOSTNAME='/bin/hostname'

export USER LOGNAME PS1 PATH

(9) 制作根文件系统映像文件

使用mini2440官方提供的mkyaffs2image-128M制作。

运行命令mkyaffs2image-128M rootfs rootfs.img,生成rootfs.img。

(10) 将根文件系统映像下载到开发板。可以看到文件系统,不过现在只是一个最基本的Linux系统,里面的驱动程序还没有,网上驱动,LCD驱动等等,所以还有很多的东西要移植呢。这也是下一步的任务。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: