基于ubuntu14.04,fl2440开发板的根文件系统移植
所谓根文件系统首先是内核启动时所mount的第一个文件系统,内核代码映像文件保存在根文件系统中,而系统引导启动程序会在根文件系统挂载之后从中把一些基本的初始化脚本和服务等加载到内存中去运行。
文件系统的制作其实并没有想像中那么难。一个基本的文件系统应该包括: busybox (提供 shell 命令集)、配置文件(用来初始化和布局你的文件系统)、设备文件(如果是用 devfs 的话这个就免了)、必要的库文件系统(如果 busybox 是静态编译的话,那根本不用为 busybox 用到的库文件而烦。
根文件系统树制作
├── apps nandflash apps分区挂载点,用来存放应用程序
├── bin 系统基本命令
├── data nandflash data分区挂载点,用来存放数据
├── dev 系统设备节点所在路径
├── etc 系统配置文件所在路径
│ └── init.d 系统初始化、启动程序脚本
├── info nandflash info分区挂载点,用来存放设备信息
├── lib 系统动态库路径
│ └── modules
│ └── 3.0.0 linux内核驱动模块需要该路径
├── mnt 系统挂载点
│ ├── mmc SD卡挂载点
│ └── usb U盘挂载点
├── proc linux proc文件系统挂载点
├── root root用户home
├── sbin 系统管理命令
├── sys linux sys文件系统挂载点
├── tmp linux tmp文件系统挂载点
├── usr
│ ├── bin 用户基本命令路径
│ ├── lib 用户动态库文件
│ └── sbin 用户管理命令路径
└── var 系统日志等文件存放路径
安装动态库
开发板上的所有程序都是靠交叉编译器编译的,所以要链接相应的动态库,就得把交叉编译器的动态库拷到相应的路径下
但是拷贝过程中发现很多的链接库失效了,需要重新建立链接
所以编写一个脚本把失效的链接都恢复
#!/bin/bash
# find all the invalid symlink file and remove "./" before it
for sf in `find -L -type l | cut -d'/' -f2` ; do
# parser and get symlink target file name
file=`ls -l $sf | awk -F '/' '{ print $NF }'`
# remove invalid symlink file and generate new one
rm -f $sf && ln -s $file $sf
done
这样就把创建新的链接文件并替换掉坏掉的文件。
安装busybox
BusyBox 是一个集成了一百多个最常用Linux命令和工具的软件,如ls、cat、ifconfig、vim、grep、sed、awk、find、mount、telnet等。有些人将
BusyBox 称为 Linux 工具里的瑞士军刀,简单的说BusyBox就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令。我们通过下载busybox源码、
配置编译并安装它就会提供这些Linux的基本命令的实现,它们将会被安装到根文件系统树的 bin、sbin、usr/bin、usr/sbin等路径下。
busybox源码:https://busybox.net/downloads/busybox-1.27.1.tar.bz2
同样我们也需要对busybox进行配置
busybox settings —>下
Linux System Utilities —>下