Linux 在启动根文件系统时首先执行根目录下的linuxrc,linuxrc是一个快捷方式,这个快捷方式链接到/bin/busybox,busybox是一个可执行程序。这时busybox试图去解析/inittab文件。系统的init进程通过inittab来创建其它子进程,比如调用脚本文件配置IP地址、挂接其它文件系统,最后启动shell等。
这里的顺序是:linuxrc->/bin/busybox->/etc/inittab->/etc/init.d/rcS->/etc/fstab从这个执行的顺序可以看出:我们可以直接将/etc/inittab和/etc/fstab中的内容都集中放在/etc/init.d/rcS中。mini2440中的文件系统就是这么干的。
下面开始移植->
该文件系统的移植主要参考了下面这个博客。在移植的过程中并非很顺利,也遇到了非常多的问题,最终都是通过网上找文章和看书来修改文件系统代码。
主要是修改这 3 个 文件的代码->
/etc/fstab /etc/init.d/rcS /etc/inittab. 具体修改的内容如下红色部分所示
------------------------------------------------------------------------------
#/etc/inittab
::sysinit:/etc/init.d/rcS
s3c2410_serial0::askfirst:-/bin/sh
::ctrlaltdel:-/sbin/reboot
::shutdown:/bin/umount -a -r
::restart:/sbin/init
------------------------------------------------------------------------------
#/etc/init.d/rcS
#! /bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
runlevel=S
prevlevel=N
umask 022
export PATH runlevel prevlevel
#
#Trap CTRL-C &c only in this shell so we can interrupt subprocesses.
#
#/bin/mount -t proc none /proc
#/bin/mount -t tmpfs none /tmp
#/bin/mount -t tmpfs none /var
mount -a
mkdir /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
/bin/mkdir -p /var/log
/bin/hostname -F /etc/sysconfig/HOSTNAME
------------------------------------------------------------------------------
#/etc/fstab
#
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /var tmpfs defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
tmpfs /dev tmpfs defaults 0 0
--------------------------------------------------------------------------------
在移植的时候我省略了打 yaffs2 补丁这一步骤,因为我用的内核是友善之臂的2.6.32版本,该内核已经支持了 yaffs2 文件系统。
一、移植环境
- 主 机:VMWare--Fedora 9
- 开发板:Mini2440--256MB Nand
- 编译器:arm-linux-gcc-4.3.2
- yaffs补丁:cvs-root.tar.gz 这里下载
- Busybox:busybox-1.13.0.tar.tar
- yaffs制作工具:mkyaffs2image.tgz(友善提供)
二、以下制作步骤参考博客
http://blog.chinaunix.net/u3/101649/showart.php?id=2075312
运行结果如下图所示->
三、结束语
至此,最小的根文件系统已经搭建起来了,接下来就可以往文件系统里面添加自己的应用程序了。
阅读(2212) | 评论(1) | 转发(2) |