构建嵌入式linux根文件系统
步骤流程:
1、 编译、安装Busybox
Tar xjf busybox-1.70.tar.bz2
配置 busybox make menuconfig
修改 makefile ARCH ?= $(SUBARCH)
CROSS_COMPILE ?=
修改为 ARCH ?= arm
CROSS_COMPILE ?= arm-linux-
Make
Make CONFIG_PREFIX = /work/mini_fs install (选定好安装目录)
2、 构建 dev 目录
静态创建设备文件
/dev/console /dev/null
3、 创建/etc 目录 inittab
Console::askfirst : -、bin/sh
4、 C库 glibc 将交叉编译环境下 lib 复制到文件系统lib中
Cp *.so* /xx/xx/xx/arm-linux/lib –d
eg cp *so* /work/fs_mini/ -d
此时在fs_mini目录下就是一个非常小的根文件系统,开发板可以将它作为网络根文件系统直接启动。如果烧入开发板,还要将它制作为一个文件,称作:映像文件
在这里 :首先设置成 NFS 挂载根文件系统方便调试
具体boot参数配置方法参照下面:
增加功能: ps
# ps
PID Uid VSZ Stat Command
ps: can't open '/proc': No such file or directory
方式:
在 etc/inittab 中加入
::sysinit:/etc/init.d/rcS
创建 init.d mkdir etc/init.d vi rcS
#!/bin/sh
Ifconfig 10.15.50.64 //自动配置ip地址
Mount –a // 这个命令挂载一个文件的内容
/etc/fstab
#device mount-point type options dump fsck order
Proc /proc proc defaults 0 0
1、 device要挂接的设备
2、 mount-point 要挂接的设备
3、 type 文件系统的类型
4、 options 挂接参数 以逗号隔开
确切的说 etc/fstab 用来控制mount –a的行为
添加第2个功能 ls /dev udev 机制
在busybox 里 一个简化版本 : mdev
自动创建设备节点。
要使用mdev 需要内核支持sysfs 文件系统还要支持 tmpfs 文件系统
确保内核已经设置了 CONFIG_SYSFS \CONFIG_TMPFS
Tmpfs 内存文件系统减少对flash 的读写
Mdev 通过 sysfs文件系统获得设备信息
[1] mount -t sysfs sysfs /sys
[2] echo /bin/mdev > /proc/sys/kernel/hotplug
[3] mdev -s
Of course, a more "full" setup would entail executing this before the previous code snippet: [4] mount -t tmpfs mdev /dev
[5] mkdir /dev/pts
[6] mount -t devpts devpts /dev/pts
手册上是这几个步骤
我们可以再 /etc/fstab 中挂载文件系统
Tmpfs /tmp tmpfs defaults 0 0
Sysfs /sys sysfs defaults 0 0
在 etc/init.d/rcS
Mount –a // 去挂载 fstab 中的文件系统
Mkdir /dev/pts
Mkdir –t devpts devpts /dev/pts
Echo /sbin/mdev >/pro/sys/kernel/hotplug
Mdev –s
最后在 /etc 文件中加入 mdev.conf
否则报错
到这里一个根文件系统基本就做好了。再就是制作成镜像的形式烧写到 flash中去 。