linux打包文件夹移植,根文件的制作与移植(yaffs2)

根文件的制作

1. 准备根文件系统

创建工作目录:$mkdir my_rootfs

创建根文件系统的目录:$cd ./my_rootfs

$mkdir bin dev etc home lib mnt proc sbin sys tmp var usr

(12个目录)

$mkdir etc/init.d

2. 创建设备文件

复制当前系统的设备文件:$cp -dpR /dev ./my_rootfs/dev

如果使用 linux 2.6.x.x 内核,应该有节点 console、null 。如果在 /rmy_ootfs/dev

目录下没有这些节点,则转到 /my_rootfs/dev/目录来创建:

$mknod console c 5 1

$mknod null c 1 3

缺少这些设备,会在启动 shell 时出现提示“Warning: unable to open an initial

console. Kernel panic- not syncing: Attempted to kill init!”

的错误。

3. 准备目录系统启动所要的文件:linuxrc、rcS、inittab、fstab

四个文件。

linuxrc 文件(位于 "my_rootfs/")的内容如下:

#!/bin/sh

echo "mount /etc as ramfs"

/bin/mount -f -t cramfs -o remount, ro /dev/bon/2 /

/bin/mount -t ramfs ramfs /var

/bin/mkdir -p /var/tmp

/bin/mkdir -p /var/run

/bin/mkdir -p /var/log

/bin/mkdir -p /var/lock

/bin/mkdir -p /var/empty

#/bin/mount -t usbdevfs none /proc/bus/usb exec /sbin/init

rcS

文件位于my_rootfs/etc/init.d/)的内容如下:

#!/bin/sh

/bin/mount -a

这连个文件生成后,应该使其具有执行的权限,用chmod 来修改

inittab 文件位于 my_rootfs/etc

的内容如下:

#This is run first except when booting

::sysinit: /etcinit.d/rcS

#Start an "askfirst" shell on the console

#::askfirst: ~/bin/bash

::askfirst:~/bin/sh

#Stuff to do when restarting the init process

::restart: /sbin/init

# Stuff to do before rebooting

:: ctrlaltdel: /sbin/reboot

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

fstab 文件位于 my_rootfs/etc

的内容如下所示:

none /proc proc defaults 0 0

none /dev/pts devpts mode=0622 0 0

tmpfs /dev/shm tmpfs defaults 0 0

4. 将编译好的 BusyBox 的_install 目录下的三个文件夹用 tar

命令打包复制到 my_rootfs 目录,解压后删除打包文件。

5. 将一些常用的 lib 文件复制到 /rootfs/lib/ 目录下,例如:

ld-2.5.so、libc-2.5.so等文件以及其符号链接。注意这些lib 文件指的是交叉编译工具链的 lib 文件,即位于

/arm-linux-gcc/lib 下的lib

文件。在复制时应该注意采用打包后解包方式复制,以保证符号链接的正确性和完整性。

6. 生成根文件系统映像文件 *.img

(1) 制作cramfs:$mkfs.cramfs ./my_rootfs cramfs.img

(2) 制作yaffs: $mkyaffsimage ./my_rootfs yaffs.img

$mkyaffs2image ./my_rootfs yaffs2.img

(3) 制作jffs2: $mkfs.jffs2 -d ./my_rootfs -o jffs2.img

7. 测试生成的根文件系统 *.img

(1) 测试 cramfs:$mount -o loop -t cramfs cramfs.img /mnt

$ls /mnt

(2) 测试 yaffs: $mount -t yaffs /dev/mtdblock3 /mnt

$ ls /mnt

(3) 测试 jffs: $mount -t jffs2 jffs2.img /mnt -o loop

$ls /mnt

移植过程

1、下载yaffs的补丁,然后解压打补丁,则/fs/下就有了一个yaffs2文件夹,而且目录下的Makefile和Kconfig也有了对yaffs2的支持。

2、linux内核下:make

menuconfig,选上对yaffs2的支持。

制作文件系统,首先需要用busybox编译出文件系统所需要的应用程序,然后再做文件系统。

3、首先下载一个busybox的源码,到网页http://www.busybox.net/downloads/,就可以下载了,这里用

busybox-1.13.0.tar.bz2源码包为例。这里使用的交叉编译器还是4.3.3的。

注意:由于3.4.5(及以前的)和4.3.3的交叉编译器不同,所以,当您决定了用哪个编译器编译内核

之后,对应的文件系统也要使用该编译器,文件系统中的所有程序也要使用该编译器编译。

4、修改并配置BusyBox

解压busybox,使用命令#tar xvfjbusybox-1.13.0.tar.bz2-C

/opt/EmbedSky/。

然后进到源码中,修改Makefile文件,把164行修改为:

CROSS_COMPILE=arm-linux-把189行修改为:

ARCH=arm

然后输入:#make

menuconfig,进入配置单。

编译并安装BusyBox

5、然后退出配置单,然后编译出busybox即可,使用命令:#make;makeinstall,编译结束后会在busybox-1.13.0目录下面生成一个名为“_install”的目录,该目录下面情况如下图所示:

“bin”目录、“sbin”目录、“usr”目录和“linuxrc”

完成busybox的编译之后,就可以进行文件系统的构建了。

6、复制busybox编译出的“_install”的文件,然后新建“dev”、“etc”、“home”、“lib”、“mnt”、“opt”、“proc”、“root”、“sddisk”、“sys”、“tmp”、“udisk”、“var”和“web”目录,同时在原有的“usr”目录下面新建一个“lib”和“share”目录。并添加相应的内容。

文件系统的框架就基本搞好了,然后使用制作yaffs文件系统的软件,把它做出yaffs文件系统格式的镜像就可以使用了。使用如下命令制作:

#cd/opt/EmbedSky

#mkyaffsimage_2

root_2.6.30.4 root_2.6.30.4.bin

注意:上面的操作命令之间的空格键;制作针对64MB的NandFlash的文件系统使用:mkyaffsimage_2软

件;制作针对128MB以上的NandFlash的文件系统使用:mkyaffs2image的软件;该软件在交叉编译器里

面已经提供了,安装交叉编译器的同时也就安装了它,在“/usr/local/sbin/”目录下。

然后把制作好的镜像root_2.6.30.4.bin复制出来,烧写到开发板中,就可以运行了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值