at91sam9260ek開發板上jffs2根文件系統製作步驟(轉)

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格式的根文件系統製作完畢,可以下載到開發板上運行了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章