linux下文件系统的移植

首先文件系统的构造如图

linux下文件系统的移植_第1张图片

所以 我们如果要移植文件系统的话 也就是在根目录上去创建(挂载)这些系统启动所必须的目录

/bin           存放linux系统下常用的命令 cat,chmod,等

/sbin          存放需要管理员权限才能使用的命令 比如 shutdown reboot等 挂接其他文件前都可以使用,所以

                  放在和根文件相同的分区中。不紧迫的命令可以放在 、/usr/sbin下

/dev          存放设备文件比如串口啊存储啊 手动创建 + uedv 自动创建

/etc           用来存放各种配置文件export passwd 等

/lib            存放共享库 和 可加载文件运行根文件系统中的可执行程序 libc.so*

/home 、 /root 、/usr 、 跟用户相关的一些东西

/proc   存储一下临时生成的文件 用来表示系统的运行状态

/mnt   用于临时挂接某个文件系统的挂接点 通常是空的 也可以在里面创建目录挂接 一些硬盘设备等

/tmp 通常是空的 一些需要临时生成的文件用到 必须要有

2、移植BusyBox 

从官网下载最新版本的busyBox压缩包 然后解压 修改其中的Makefile 

CROSS_COMPILE = arm-linux-

ARCH = arm
Busybox Settings  --->
    Build Options  --->
        [ ] Build BusyBox as a static binary (no shared libs) (NEW)
这个意思是运行busybox才动态链接库,busybox需要的库要我们提供
Busybox Settings  --->
    Installation Options ("make install" behavior)  --->
        What kind of applet links to install (as soft-links)  --->
设置busybox生成后各种命令均为指向busybox主程序的软链接
Busybox Settings  --->
    Busybox Library Tuning  --->
        (255) History size 
        [*]   History saving (NEW)   // 支持历史记录
        [*]   Tab completion (NEW)   // 支持Tab补全操作
选项Applets就是将busybox支持的几百个命令分门别类,我们可以在各个门类下选择想要的命令。

保存 然后make menuconfig 配置这些选项

关于需要注意的一些选项说明如下:

最后出现下面的信息,make成功
  CC      util-linux/volume_id/xfs.o
  AR      util-linux/volume_id/lib.a
  LINK    busybox_unstripped
Trying libraries: crypt m
 Library crypt is not needed, excluding it
 Library m is needed, can't exclude it (yet)
Final link with: m
libbusybox: 0_lib/libbusybox.so.1.23.1
  DOC     busybox.pod
  DOC     BusyBox.txt
  DOC     busybox.1
  DOC     BusyBox.html

然后 make

生成以后  make install 到目标板的目录


出现下面的信息安装成功
--------------------------------------------------
You will probably need to make your busybox binary
setuid root to ensure all configured applets will
work properly.

2,构建文件系统的目录


构建文件系统需要三个步骤

1、创建所需要的文件夹

mkdir  dev etc home lib media mnt opt proc sys tmp var root

2、添加文件系统所需要的库

mkdir lib

cp home/wjl/work/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/lib 下的库到刚建的目录下

3、创建所需要的文件

mkdir etc 目录

需要再etc 目录下创建三个文件

1>initab  /ect/initab 

     initab 主要是任务是创建其他进程,比如调用脚本文件配置IP地址,挂接其他文件系统。启动shell等

  2> rcS etc/init.d/rcS

     rcS  里面可以添加你真正想执行的程序 配置的信息 在这里面可以用 mount -a  

 3> fatab etc/fstab

fstab文件被用来控制 mount 的行为  

         fstab的表示形式如下

   #device   mount-point  type  options  dump fsck  order 

    proce     /proce              proc    defaults  0    0 


 构建dev 目录

      1、 静态创建设置文件  在dev 目录下手动创建 一些设备节点

        mkdir       /dev

        sudo mknod console c 5 1  

        sudo  mknod null c 1 3 

sudo mknod  ttySAC0 c 204 64

     2、使用mdev动态的去创建设备文件

    要使用 mdev 需要内核支持sysfs文件系统 为了减少flash的读写还需要支持tempfs 文件系统

  所以要配置内核设置 CONFIG_SYSFS CONFIG_TEPFS 配置项

     mount -t tmpfs mdev /dev

     mkdir /dev/pts

     mount -t dev

mount -t  devpts devpts /dev/pts

mount -t sysfs sysfs /sys

echo /bin/mdev > /proc/sys/kernel/hotplug

mdev -s 

     还需要修改 rcS fstsb 文件


 4  制作 YAFFS 文件系统映像文件 

   所谓制作文件系统映像文件 就是将一个目录下的所有内容按照一定的格式存放到一个文件中 这个文件可以直接烧写到

存储设置上去,当系统启动狗挂接这个设备 就可以看到与原来目录一样的内容


mkyaffsimage fs_mini fs_mini.yaffs 

j将fs_mini.yaffs 放入tftp 目录或者nfs目录后 在U-BOOT阶段 烧入指定的内存即可






你可能感兴趣的:(ARM)