1.开始的话 友善之臂没有给出详细的mini6410和tiny6410开发板的根文件系统的制作方法及步骤,于是自己根据《mini2440 Linux移植开发实战指南》做了一遍MINI6410的根文件系统。本次制作过程中使用的工具及源码包均来自于友善的官方光盘,其中有: (1)内核:linux2.6.38-20111116.tgz (2)根文件系统:rootfs_qtopia_qt4-20111103.tgz (3)busybox:busybox-1.17.2-20101120.tgz (4)交叉编译器:arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz (5)文件系统镜像制作工具:mktools-20110720.tar.gz 2.搭建开发环境 开发环境(主要指linux、虚拟机的安装和交叉编译环境的搭建)完全按照mini6410用户手册4.3节操作,在此不再赘述。 3.根文件系统的目录说明 根文件系统是Linux启动的时候使用的第一个文件系统,没有它系统将无法正常的启动,然而在这个根文件系统中又包含了一系列的目录,接下来对这些目录做一个简单的介绍。 ![]() 4.建立根文件系统的目录 进入到自己要放置文件系统的目录,采用《mini2440 Linux移植开发实战指南》,新根文件系统目录的脚本文件create_rootfs_bash,使用命令chmod +x create_rootfs_bash ,改变文件的可执行权限,执行“./create_rootfs_bash ”运行脚本,就完成了根文件系统目录的创建。脚本create_rootfs_bash文件的内容为:
在脚本中改变了tmp 目录的使用权,让它开启sticky 位,为tmp 目录的使用权开启此位,可确保tmp 目录底下建立的文件,只有建立它的用户有权删除。尽管嵌入式系统多半是单用户,不过有些嵌入式应用不一定用root 的权限来执行,因此需要遵照根文件系统权限位的基本规定来设计。 5.建立动态链接库(即lib目录) 动态链接库直接用友善之臂的,先解压友善之臂的根文件包,拷贝lib的内容到新建的根文件目录lib内。
6.交叉编译busybox(即根文件系统内bin,sbin等目录) Busybox 是一个遵循GPL v2 协议的开源项目,它在编写过程总对文件大小进行优化,并考虑了系统资源有限(比如内存等)的情况,使用Busybox 可以自动生成根文件系统所需的bin、sbin、usr 目录和linuxrc 文件。具体介绍可以参考韦东山完全手册的346页。 输入 make menuconfig进行配置 下面的配置和busybox1.17.2的配置基本一样,部分地方不太一样。
7.dev设备文件的制作 设备文件较多,而且比较繁杂,因此其制作一般包括两个部分:静态创建设备文件和使用mdev创建设备文件 (1).静态创建设备文件 其实在刚开始制作文件系统的目录里已经静态制作创建了两个必须的设备的设备文件:console和null,内核在引导时这两个设备节点必须存在。
udev:它是个用户程序,能根据系统中硬件设备的状态动态的更新设备文件,包括设备文件的创建、删除等。它的操作相对复杂,但灵活性很高。 mdev是busybox自带的一个简化版的udev,适合于嵌入式的应用埸合。其具有使用简单的特点。它的作用,就是在系统启动和热插拔或动态加载驱动程序时,自动产生驱动 程序所需的节点文件。在以busybox为基础构建嵌入式linux的根文件系统时,使用它是最优的选择。在busybox的配置中,下面的选项将增加对mdev的支持。
在6,7两步的配置结束后,就可以编译并安装busybox。 编译:make ARCH=arm CROSS_COMPILE=arm-linux,其实仅执行make即可,我在这里添加了ARCH和CROSS_COMPILE,其实没什么作用,只是为了保险。因为如果编译的不是ARM版的busybox,系统时无法运行的。 安装:make install CONFIG_PREFIX=/opt/FriendlyARM/mini6410/rootfs/。CONFIG_PREFIX中安装的位置也可以在配置的时候设置,具体位置为:
在第5步中,安装动态链接库后,lib/modules目录下已经有内核模块了,但是这个内核模块和我采用的内核不是一个版本,因此重新编译安装。 进入内核的目录,在编译安装内核模块之前必须保证内核已经正确无误的配置及编译过一次。在这里假设还没有编译过。 (1)我们要使得Linux-2.6.38的缺省目标平台成为ARM 的平台。 原
(2)配置、编译内核模块 在此不具体说明怎么配置,可以将内核里友善自带的配置文件拷贝。然后执行:
a、新建etc/mdev.conf文件,内容为空。 b、拷贝主机etc目录下的passwd、group、shadow文件到rootfs/etc目录下。 c、etc/sysconfig目录下新建文件HOSTNAME,内容写自己喜欢的名字。 d、etc/inittab文件:
11.制作根文件系统镜像
这将会在/usr/sbin目录下创建生成相应的工具集
然后执行
|
|
来自: adkada > 《嵌入式Linux》