没有根文件系统是启动不了linux,会出错,见3.1中的演示。linux
什么是文件系统?编辑器
文件系统包含两个层次的含义:工具
1. 按照固定格式组织的目录与文件(看得见)ui
2. 在特定的存储介质上管理这些目录和文件须要的数据(看不见).net
如何制做嵌入式linux所需的文件系统?get
1. 建立目录和文件it
2. 为建立好的目录和文件创建管理数据io
1. 建立目录和文件console
mkdir rootfs编译
cd rootfs
mkdir bin dev etc lib proc sbin sys usr mnt tmp var
mkdir usr/bin usr/lib usr/sbin lib/modules
2. 建立设备文件
cd dev/
mknod -m 666 console c 5 1
mknod -m 666 null c 1 3
cd ..
3. 安装/etc(etc目录下的是配置文件,是通用的,因此是直接从别的地方拷贝过来)
tar xvzf etc.tar.gz -C /xxx/rootfs
4. 编译内核模块
进入linux内核目录(linux 2.6.36)
在3.1中作的是内核的编译,而没有作内核模块的编译。这里是模块的编译,而且要安装到文件系统中去。是安装在lib/modules/下面,此时这个目录下仍是空的。
make modules ARCH=arm CROSS_COMPILE=arm-linux-
...
5. 安装内核模块
make modules_install ARCH=arm INSTALL_MOD_PATH=/xxx/rootfs
INSTALL_MOD_PATH是指定安装的路径。
查看是否是将上面编译生成的模块拷贝到了rootfs/lib/modules下面:
6. 配置busybox(安装linux命令工具)
咱们这里使用的是busybox-1.17.2,首先解压:
tar zxvf busybox-1.17.2.tgz
进入busybox目录中执行:make menuconfig
注意:这里的控制台窗口必须拉大一点,不然出错:
对于哪些功能要,哪些不要,这个是根据本身的须要来的。可是有些是必须的,好比说静态连接等。
a. 配置
进入Busybox Setting -->
build options -->
<1> 选中"Build busybox as a static binary",静态连接
<2> Cross Compiler prefix(arm-linux-)
指明使用到的交叉工具链的前缀,也能够在make命令中使用"CROSS_COMPILE=arm-linux-"来指明
Installation Options -->
<1> 选中"Don't use /usr",选中该项能够避免busybox被安装到宿主机系统的/usr目录下,破坏宿主机
<2> Busybox Installation Prefix(/xxx/rootfs)
该选项代表编译后的busybox的安装位置。
能够在editors里面去掉vi编辑器,由于在嵌入式里面不须要这个工具,awk,cmp,diff,sed等这些命令都不须要:
find,grep,xargs命令也不须要:
b. 编译busybox
make
c. 安装busybox
在安装以前,rootfs/bin/下面是空的:
make install
再查看下rootfs/bin/下面是不是空(固然其余目录下也会有东西加进去,好比sbin):
里面多了好多的东西,这都是安装进去的命令工具。并且他们都是一些软链接,链接到busybox的应用程序上
因此咱们执行的命令都是busybox提供的。它根据命令的名称来分辨是哪一个命令。