您的位置:首页 > 其它

at91sam9260ek开发板上jffs2根文件系统制作步骤(转)

2011-09-14 18:51 447 查看
at91am9260ek开发板根文件系统移植步骤:

1.准备制作jffs2根文件系统的工具mkfs.jffs2;

2.建立目录;

3.编译busybox;

4.拷贝动态链接库到lib目录中;

5.创建/etc/init.d/rcS、/etc/profile、/etc/fstab、/etc/inittab文件,并且拷贝主机中的/etc/passwd、/etc/shadow、/etc/group文件到相应的目录中;

6.移植bash,将其复制到/bin目录中;

7.执行mkfs.jffs2 -r ./rootfsM/ -o rootfs.jffs2.m9 -n -e 0x20000,生成jffs2根文件系统镜像。

下面将详细描述每一步的执行过程:

1. 准备制作jffs2根文件系统的工具mkfs.jffs2;

(1) 从http://www.zlib.net/zlib-1.2.3.tar.gz 下载文件zlib-1.2.3.tar.tar,放入/usr/local/src目录,然后按照如下步骤操作:

[root@localhost src]# pwd

/usr/local/src

[root@localhost src]# ls

mtd-utils-1.0.0.tar.gz zlib-1.2.3.tar.tar

[root@localhost src]# tar xvf zlib-1.2.3.tar.tar

[root@localhost src]# cd zlib-1.2.3

[root@localhost zlib-1.2.3]# ./configure --prefix=/usr/local/arm/arm-linux –shared

[root@localhost zlib-1.2.3]# vi Makefile

将CC=gcc 改为 CC=arm-linux-gcc

将LDSHARED=gcc -shared -Wl,-soname,libz.so.1 改为 LDSHARED=arm-linux-gcc -shared -Wl,-soname,libz.so.1并保存退出。

[root@localhost zlib-1.2.3]# make all

[root@localhost zlib-1.2.3]# make install

注意:这里是安装在/usr/local/arm/arm-linux目录下,由于交叉编译mtd工具时需要zlib.h文件,所以在编译之前先安装zlib库文件。

(2)从ftp://ftp.infradead.org/pub/mtd-utils/mtd-utils-1.0.0.tar.gz 下载文件mtd-utils/mtd-utils-1.0.0.tar.gz,放入/usr/local/src目录,然后按照如下步骤操作:

[root@localhost src]# tar zxvf mtd-utils-1.0.0.tar.gz

[root@localhost src]# cd mtd-utils-1.0.0

[root@localhost mtd-utils-1.0.0]# vi Makefile

将#CROSS=arm-linux- 改为CROSS=arm-linux-

将CFLAGS := -I./include -O2 –Wall 改为 CFLAGS := -I./include -O2 –Wall –I/usr/local/arm/arm-linux/include

将$(CC) $(LDFLAGS) -o $@ $^ -lz 改为 $(CC) $(LDFLAGS) -o $@ $^ -L/usr/local/arm/arm-linux/lib -lz

并保存退出。

[root@localhost mtd-utils-1.0.0]# make all

[root@localhost mtd-utils-1.0.0]# PATH=$PATH:/usr/local/src/mtd-utils-1.0.0

至此,将会在当前目录下生成制作jffs2根文件系统的工具mkfs.jffs2文件。

2.创建根文件系统的目录

[root@localhost src]# pwd

/usr/local/src

[root@localhost src]# mkdir jffs2 jffs2/rootfs jffs2/rootfs_build

[root@localhost src]# cd jffs2/rootfs

[root@localhost rootfs]# mkdir {bin,dev,etc,usr,lib,sbin,proc,sys,tmp}

[root@localhost rootfs]# mkdir usr/{bin,sbin,lib}

3.编译busybox

从http://www.busybox.net/downloads/busybox-1.15.2.tar.bz2下载文件busybox-1.15.2.tar.bz2,放入/usr/local/src目录,然后按照如下步骤操作:

[root@localhost src]# tar jxvf busybox-1.15.2.tar.bz2

[root@localhost busybox-1.15.2]# vi Makefile

修改下面两行

CROSS_COMPILE ?=/usr/local/arm/4.3.2/bin/arm-linux- (这个视你的交叉编译工具所在路径而定)

ARCH ?= arm

[root@localhost busybox-1.15.2]# make menuconfig

Busybox Settings --->

Build Options --->

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

[ ] Force NOMMU build

[*] Build with Large File Support (for accessing files > 2 GB)

() Cross Compiler prefix

() Additional CFLAGS

Installation Options --->

[*] Don't use /usr

Applets links (as soft-links) --->

(./_install) BusyBox installation prefix

[root@localhost busybox-1.15.2]# make

[root@localhost busybox-1.15.2]# make install

[root@localhost busybox-1.15.2]# cd _install/

[root@localhost _install]# pwd

/usr/local/src/busybox-1.15.2/_install

[root@localhost _install]# cp -a * /usr/local/src/jffs2/rootfs/

4.拷贝动态链接库到lib目录中

[root@localhost rootfs]# cd lib

[root@localhost lib]# pwd

/usr/local/src/jffs2/rootfs/lib

[root@localhost lib]# cp /usr/local/arm/arm-none-linux-gnueabi/libc/lib/* .

5.创建etc/init.d/rcS、etc/profile、etc/fstab、etc/inittab、dev/console、dev/null文件,并且拷贝主机中的/etc/passwd、/etc/shadow、/etc/group文件到etc目录中,步骤如下:

[root@localhost rootfs]# cd etc/init.d

[root@localhost init.d]# pwd

/usr/local/src/jffs2/rootfs/etc/init.d

[root@localhost init.d]# vi rcS

#!/bin/sh

ifconfig eth0 192.168.1.1

#setting host name

. /etc/sysconfig/network

hostname ${HOSTNAME}

#echo "----mount all"

/bin/mount -a

/bin/mkdir /dev/pts

#echo "------Starting mdev..."

/bin/mount -t devpts devpts /dev/pts

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

mdev -s

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

echo "at91sam9260 rootfs"

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

[root@localhost init.d]# cd ..

[root@localhost etc]# vi inittab

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

::restart:/sbin/init

::respawn:-/bin/bash

::ctrlaltdel:/sbin/reboot

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

::shutdown:/sbin/swapoff –a

[root@localhost etc]# vi profile

#/etc/profile: sys

#echo "Processing /etc/profile..."

#echo "Set search library path in /etc/profile"

export LD_LIBRARY_PATH=/lib:/usr/lib

#echo "Set usr path in /etc/profile"

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

export PATH

#echo "Set PS1 in /etc/profile"

export PS1="[\u@\h \W]\$"

#echo "Done"

[root@localhost etc]# vi fstab

proc /proc proc defalts 0 0

tmpfs /tmp tmpfs defaults 0 0

sysfs /sys sysfs defaults 0 0

tmpfs /dev tmpfs defaults 0 0

[root@localhost etc]# mkdir sysconfig

[root@localhost etc]# cd sysconfig/

[root@localhost sysconfig]# pwd

/usr/local/src/jffs2/rootfs/etc/sysconfig

[root@localhost sysconfig]# vi network

HOSTNAME=sam9260//设置主机名称

[root@localhost sysconfig]# cd ..

[root@localhost etc]# pwd

/usr/local/src/jffs2/rootfs/etc

[root@localhost etc]# cp /etc/passwd .

[root@localhost etc]# cp /etc/shadow .

[root@localhost etc]# cp /etc/group .

[root@localhost etc]# cd ../dev

[root@localhost dev]# mknod –m 600 console c 5 1

[root@localhost dev]# mknod –m 666 null c 1 3

6.移植bash,首先从http://down1.chinaunix.net/distfiles/bash-3.2.tar.gz下载文件bash-3.2.tar.gz,然后按照如下步骤操作:

[root@localhost src]# tar zxvf bash-3.2.tar.gz

[root@localhost src]# cd bash-3.2

[root@localhost bash-3.2]# ./configure --host=arm-linux

[root@localhost bash-3.2]# make

[root@localhost bash-3.2]# arm-linux-strip bash

[root@localhost bash-3.2]# cp bash /usr/local/src/jffs2/rootfs/bin/

7.生成jffs2根文件系统镜像。

[root@localhost jffs2]# pwd

/usr/local/src/jffs2

[root@localhost jffs2]# mkfs.jffs2 -r ./rootfs -o rootfs.jffs2.m9 -n -e 0x20000

Mkfs.jffs2命令各参数含义如下,具体使用方法可以使用-h参数查看。

-r 指定内含根文件系统的目录

-o 指定文件系统映象的输出文件名称

-p 表示在映像的结尾用0x0补全到block

-l 存储格式为小端格式

-n 每个擦除的block中不添加clreanmarker

-e 擦除block的大小

至此,已经jffs2格式的根文件系统制作完毕,可以下载到开发板上运行了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: