本文主要是介绍制作可在MINI2440上运行的文件系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1. 前言
目的:制作可在MINI2440上运行的文件系统
Busybox版本: 1.20.0 (from https://busybox.net/downloads/)
交叉编译器: arm-linux-gcc version 4.3.2
2. What is busybox
from README in busybox folder.
BusyBox combines tiny versions of many common UNIX utilities into a single small executable. It provides minimalist replacements for most of the utilities you usually find in bzip2, coreutils, dhcp, diffutils, e2fsprogs, file, findutils, gawk, grep, inetutils, less, odutils, net-tools, procps, sed, shadow, sysklogd, sysvinit, tar, util-linux, and vim. The utilities in BusyBox often have fewer options than their full-featured cousins; however, the options that are included rovide the expected functionality and behave very much like their larger counterparts.
BusyBox is extremely configurable. This allows you to include only the components and options you need, thereby reducing binary size. Run ‘make config’ or ‘make menuconfig’ to select the functionality that you wish to enable. (See ‘make help’ for more commands.)
3. 制作过程
3.1 编译busybox
$ tar -xjf busybox-1.20.0.tar.bz2
$ cd busybox-1.20.0/
$ make menuconfig
在菜单中,进入Busybox Settings/Build Options/Cross Compiler prefix, 键入编译器的前缀 arm-linux-
然后开始编译
make
编译成功之后,就可以安装了。
3.2 安装busybox
In README:
The build automatically generates a file “busybox.links”, which is
used by ‘make install’ to create symlinks to the BusyBox binary for
all compiled in commands. This uses the CONFIG_PREFIX environment variable to specify where to install, and installs hardlinks or symlinks depending on the configuration preferences.
3.2.1 创建busybox的安装路径
$ mkdir /work/nfs_root/fs_mini_mdev_new
3.2.2 安装busybox
$ make install CONFIG_PREFIX=/work/nfs_root/fs_mini_mdev_new
3.2.3 查看安装结果
$ ls /work/nfs_root/fs_mini_mdev_new
发现下面已经创建了文件夹
bin linuxrc sbin usr
4. 安装glibc库
4.1 创建库目录
$ mkdir /work/nfs_root/fs_mini_mdev_new/lib
$ mkdir -p /work/nfs_root/fs_mini_mdev_new/usr/lib
4.2 拷贝库文件
从编译交叉工具目录下拷贝所需的库文件。
$ cp -d /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib/*so* /work/nfs_root/fs_mini_mdev_new/lib$ cp -d /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/*so* /work/nfs_root/fs_mini_mdev_new/usr/lib
5. 构建根文件系统
5.1 构建etc目录
etc目录下的内容取决于要运行的程序,这里创建3个文件
etc/inittab、etc/init.d/rcS、etc/fstab。
5.1.1 创建etc/inittab文件
init进程根据/etc/inittab文件来创建其他子进程的,比如调用脚本文件配置IP地址、挂接其他文件系统,最后启动shell等。
$ cd /work/nfs_root/fs_mini_mdev_new
$ mkdir etc
$ cd etc
$ touch inittab
$ vim inittab
编辑inittab内容如下:
# /etc/inittab
::sysinit:/etc/init.d/rcS
ttySAC0::askfirst:-/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
5.1.2 创建etc/init.d/rcS文件
脚本文件,可以在里面添加想自动执行的命令。
$ cd /work/nfs_root/fs_mini_mdev_new/etc
$ mkdir init.d
$ cd init.d
$ touch rcS
$ vim rcS
编辑rcS内容如下:
#!/bin/sh
ifconfig eth0 192.168.1.17
mount -a
5.1.3 创建etc/fstab文件
$ cd /work/nfs_root/fs_mini_mdev_new/etc
$ touch fstab
$ vim fstab
编辑fstab内容如下,表示执行 “mount -a”命令后将挂接proc、tmpfs文件系统。
# device mount-point type options dump fsck order
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
5.2 构建dev目录
有两种方法构建dev:静态方法和动态方法。动态方法支持热插拔。这里使用动态方法。
5.2.1 检查内核
要使用mdev,需要内核支持sysfs文件系统,为了减少对FLASH的擦写,还要支持tmpfs文件系统。先确保内核已经设置了CONFIG_SYSFS、CONFIG_TMPFS配置项。
5.2.2 配置使mdev开机自动运行
修改两个文件:
5.2.2.1 etc/fstab修改后的内容如下
# device mount-point type options dump fsck order
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
tmpfs /dev tmpfs defaults 0 0
5.2.2.2 etc/init.d/rcS添加如下几行:
mount -t
mkdir -p /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
5.2.3 建立init进程需要的两个设备/dev/console, /dev/null
$ mkdir -p /work/nfs_root/fs_mini_mdev_new/dev
$ cd /work/nfs_root/fs_mini_mdev_new/dev
$ sudo mknod console c 5 1
$ sudo mknod null c 1 3
5.3 构建其他目录
其他目录可以是空目录,如下创建
$ cd /work/nfs_root/fs_mini_mdev_new
$ mkdir proc mnt tmp sys root
到现在为止,/work/nfs_root/fs_mini_mdev_new下就是一个非常小的根文件系统了。开发板可以将它作为网络根文件系统直接启动。如果要烧录到开发板,还要讲它制作成一个文件,称为映像文件。
6. 制作 yaffs文件系统映像文件
所谓制作文件系统映像文件,就是将一个目录下的所有内容按照一定的格式存放到一个文件中,这个文件可以直接烧写到存储设备上去。当系统启动后挂接这个设备,就可以看到与原来目录一样的内容。
制作不同类型的文件系统映像文件需要使用不同的工具。
去如下链接获取映像文件制作工具源码:
http://download.csdn.net/download/u013083059/9974620
6.1 解压、编译
$ tar -xjf yaffs_source_util_larger_small_page_nand.tar.bz2
$ cd ./Development_util_ok/yaffs2/utils
$ make
编译生成mkyaffs2image,将其拷贝到合适目录并修改属性
$ cp mkyaffs2image /usr/local/bin
$ chmod +x /usr/local/bin/mkyaffs2image
至此,镜像文件制作工具已经可以使用了
6.2 制作镜像文件
$ cd /work/nfs_root/
$ mkyaffs2image fs_mini_mdev_new.yaffs2 ./fs_mini_mdev_new
生成的fs_mini_mdev_new.yaffs2就是我们需要的镜像文件了。
这篇关于制作可在MINI2440上运行的文件系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!