构建嵌入式linux根文件系统

时间:2021-06-12 18:44:14

                                          构建嵌入式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中去 。