根文件系统制作

 1、根文件系统包括内容

内容:

       /bin 、/sbin、/usr/bin 、/usr/sbin---> 命令 由busybox软件来生成

       /dev ---> 设备文件

       /proc---> 导出系统信息

            只在系统运行时才具有,存放系统运行时的信息。

 

       /sys ---> 导出设备信息

           在内核运行时,设备运行时,才会将设备信息存放在这里。

 

       /lib ---> 共享库

           例如系统很多地方会调用printf,每调用一次会创建栈,当同时使用

           很多时存在很大的栈空间被使用,而采用共享库,大家都使用同一

           个空间,这样不存在空间被浪费。

 

       /etc ---> 脚本及配置文件

           系统启动时会从这里读取脚本文件执行,因此将init.d/rsC存放在这

           里,etc/inittab/profile

 

       /var ---> 系统日志

       /tmp ---> 临时文件

挂载点

       /

       内核完成挂载

 

2、根文件系统制作

(姜先钢笔记有具体步骤但是采用的是生成文件系统镜像后烧写,老潘的是采用将本地板子的NANDflash作为设备挂载到本地/mnt目录,然后将做好的文件系统全部拷贝到nandflash中,这就相当于烧写进nand,方便)

 

   A、命令

使用busybox编译出来  例如在终端输入busybox ls 命令 会显示当前文件夹里面内容 :首先是将busybox这个字符给shell,让shell解析命令,然后调用busybox软件,将ls命令传给busybox软件,从而显示文件夹内容。说明ls是busybox里面支持的命令。

 

(1)、指定交叉编译工具链

修改源码顶层目录Makefile

CROSS_COMPILE ?= arm-linux-

ARCH = arm

 

   (2)、选配 通过命令make menuconfig 显示出界面

 

          Busybox Settings  --->

            [ ] Build BusyBox as a static binary (no shared libs) (NEW) 编译时作为静态库,当应用程序使用的库与文件系统编译出来的库不一致时会导致应用软件不能运行。

  

(3)、编译

# make

(4)、安装

# make install

 

首先在  busybox目录下 打开#cd _install  会见到已经生成了命令文件

    bin  linuxrc sbin  usr

再手动在这个文件夹下面创建以下目录

#mkdir  dev  etc mnt  proc  var tmp  sys  root

 

(5)、共享库lib

   此库是用的编译工具的lib库,将编译工具的lib库拷贝到_install文件中,

cp  (路径)arm-cortex_a8/arm-cortex_a8-linux-gnueabi/lib/   ./  -a   

                                                       全部拷贝

将库中静态文件 及lib/libstdc++*删除

 

 

(6)、配置启动脚本(可参见姜的笔记)

BootLoader--加载内核-->kernel--mountfs(挂载文件系统)--> 加载执行init--解析inittab-->sh(sh解释执行rcS)

初始化脚本rcS

 

     在etc下添加文件inittab 文件内容见姜

     创建init.d文件夹,在init.d下创建rcS文件

     在etc下添加文件fstab

     在etc下添加profile文件

 当以上步骤完成后#mknod  dev/console  c  5  1

 

(7)、测试根文件系统

测试根文件系统内容正确性

        #cd /nfs          

        #mkdir rootfs    新建立一个文件夹来保存新生成的根文件系统

        #cp  _install/*   rootfs  –a      将新的根文件系统拷贝到rootfs中             

        #chmod 777 /nfs/rootfs/                       //挂载后不能在里面创建文件。  原因是权限问题

 

 

 

(8)、烧写根文件系统到nand中(老潘特有)

 

==================================================

烧写根文件系统的内容

1、挂载拷贝

A、u-boot

擦除fs分区

    u-boot下擦除内核分区从400000 10000000

B、然后重新启动,加载网络文件系统(nfs)

C、nfs共享目录下准备两个目录(在目标板和PC机共享的目录下再创建一个文件jffs,将新的根文件系统拷贝到这里面来)

Mnt(目标板上的)用于挂载nand fs分区

jffs目录用于存放要烧写的根文件系统内容

确定之前内核jffs2被选中 makemenuconfig中选择

   Filesystems  --->

          [*]Miscellaneous filesystems  --->   

                  <*>  Journalling Flash File System v2 (JFFS2) support 

D、挂载

#mount -t jffs2 /dev/mtdblock2  /mnt   将nand中第二分区以jffs2格式挂载到目标板上/mnt上。

E、拷贝

#cp -a /jffs/* /mnt  将jffs文件中的全部内容拷贝到/mnt文件,相当于烧写到nand中

 

F、u-boot设置内核启动参数  注意内核从哪里启动

$ set bootargs init=/linuxrc console=ttySAC0,115200root=/dev/mtdblock2 rootfstype=jffs2  设置根文件系统在nand中第二分区

 

 

3、将PC机作为客服端,将PC机中文件挂载到目标板上的一个文件中

 

# mount -t nfs -o nolock 10.0.0.111:/home/fstest /mnt

                    PC机IP   需要挂载的目录   目标板的目录

 

4、制作yaffs

给内核打补丁,以支持yaffs文件系统格式

(1、没有加;2、原有,改动后替换)

A、解压源码

# tar xvf yaffs2-8e93b99.tar.gz

B、给内核源码打补丁(追加功能代码)

yaffs2-8e93b99# ./patch-ker.sh c m/media/work/kernel/linux-3.9.8

 

内核功能选配

#make menuconfig

File systems --->

        [*] Miscellaneous filesystems  --->

              <*>   yaffs2 file system support

              -*-     512 byte / page devices

              -*-     2048 byte (or larger) / page devices

              [*]       Autoselect yaffs2 format

             

编译完成则内核支持yaffs文件系统格式

 

 

VxWorks linux实时性比较?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值