移植好u-boot 和 linux内核后,还需要制作根文件系统,在内核启动后挂接根文件系统,再运行应用程序
下面列出根文件系统的制作步骤和方法:注意,制作根文件系统使用的编译器需要和内核编译器一样,否则有可能无法运行
最小根文件系统有五大要素:
1:busybox:就是各种命令的集合
2:需要两个设备 /dev/console /dev/null
3:/etc/inittab 配置文件
4:C库
5:配置指定的程序
第一步:编译busybox 基于busybox-1.23.0版本
1:在指定的目录下创建一个文件夹用于根文件系统目录
命今行:例 mkdir fs_mini
2:获得busybox源码 网址 https://busybox.net/downloads/ 下载想使用的版本
解压后进入源码目录 先配置编译器选项 命令行:make menuconfig 然后在菜单界面找到配置项 INSTALL文档里有说明如何编译
Busybox Settings => Build Options => cross Compiler prefix 输入 arm-linux- 如果配置文件没有这项配置的话我们就需要在MAKEFILE里指定
接下来配置选择 Linux Module Utilities
如果配置了 Simplified modutils ,配置选项如下:
[*] Simplified modutils
[*] Accept module options on modprobe command line (NEW)
[*] Skip loading of already loaded modules (NEW)
--- Options common to multiple modutils
[ ] Try to load module from a mmap'ed area
(/lib/modules) Default directory containing modules
(modules.dep) Default name of modules.dep
如果没有配置 Simplified modutils ,配置选项如下:
[*] modinfo
[ ] Simplified modutils
[*] insmod
[*] rmmod
[*] lsmod
[*] Pretty output
[*] modprobe
[*] Blacklist support
[*] depmod
--- Options common to multiple modutils
[ ] Support version 2.2/2.4 Linux kernels
[ ] Try to load module from a mmap'ed area
[*] Support tainted module checking with new kernels
[*] Support for module.aliases file
[*] Support for module.symbols file
(/lib/modules) Default directory containing modules
(modules.dep) Default name of modules.dep
其它先使用黙认配置
否则会出现在后面加载或卸载驱动时出错
3:保存退出后直接执行make 编译等待完成
4:安装 busybox 查看 busybox说明文件 vi README 得知安装方法
安装到根文件系统指定的目录下 make install CONFIG_PREFIX=/work/template/filesystem/fs_mini_mdev
进入根文件系统目录执行 ls 命令 即可查看 有以下内容
到此关于根文件系统 busybox 就完成了。
二、创建 /dev/console /dev/null 这两个设备文件
查看PC机上的这两个设备文件的属性,参考并创建 ls /dev/console /dev/null -l 得到以下信息
创建 dev 目录 并在目录下创建这两个设备
mkdir dev
cd dev/
sudo mknod console c 5 1
sudo mknod null c 1 3
三、构造 etc/inittab 配置文件
如果我们不构造 那么将会使用黙认的配置 黙认配置在根文件系统分析时有说明
我们制作一个最小的根文件系统,所以我们以简单为前提 下面是命令行
mkdir etc
cd etc/
vi inittab
console::askfirst:-/bin/sh
四、配置指定的应用程序
我们暂时不指定,现在先完成最小根文件系统,后续我们再慢慢完善
五、C库
我们的根文件系统运行依赖于C库,所以 我们把编译器下的C库拷贝到根文件系统下去 注意:在拷贝时在最后加上 -d 否则会把库的链接源文件拷过去,文件系统会很大
查看编译器的C库
cd /usr/local/arm/4.3.2/
find -name lib 得到以下内容
在根文件系统目录下创建库目录
mkdir lib
mkdir usr/lib -p
cp arm-none-linux-gnueabi/libc/armv4t/lib/*.so* /work/smdk2440/filesystem/fs_mini_mdev/lib/ -d
cp arm-none-linux-gnueabi/libc/armv4t/usr/lib/*.so* /work/smdk2440/filesystem/fs_mini_mdev/usr/lib/ -d
这里就完成了C库 可以到对应的目录下用 LS 命令查看一下库文件是否拷贝成功 如下图:
到此 根文件系统目录下有如下文件,其内容上文中都有说明,自行仔细查看是否正确,整个最小根文件系统就制作完成了。
这里只是完成了根文件系统的组成,我们要烧录到开发板上去,就需要制作成映像文件,制作映像文件需要指定的工具。
下一节,制作映像文件的工具步骤方法。