zoukankan      html  css  js  c++  java
  • 制作根文件系统,基于JZ2440

    移植好u-boot 和 linux内核后,还需要制作根文件系统,在内核启动后挂接根文件系统,再运行应用程序

    下面列出根文件系统的制作步骤和方法:注意,制作根文件系统使用的编译器需要和内核编译器一样,否则有可能无法运行

    最小根文件系统有五大要素:

        1:busybox:就是各种命令的集合

        2:需要两个设备 /dev/console    /dev/null 

        3:/etc/inittab 配置文件

        4:C库

        5:配置指定的程序

    第一步:编译busybox 基于busybox-1.23.0版本

      1:在指定的目录下创建一个文件夹用于根文件系统目录

        命今行:例 mkdir fs_mini

      2:获得busybox源码 网址 https://busybox.net/downloads/   下载想使用的版本

        解压后进入源码目录 先配置编译器选项 命令行:make menuconfig 然后在菜单界面找到配置项  INSTALL文档里有说明如何编译  

          Busybox Settings => Build Options => cross Compiler prefix 输入 arm-linux-   如果配置文件没有这项配置的话我们就需要在MAKEFILE里指定

          接下来配置选择 Linux Module Utilities

          如果配置了 Simplified modutils ,配置选项如下:

          [*] Simplified modutils
          [*] Accept module options on modprobe command line (NEW)
          [*] Skip loading of already loaded modules (NEW)
          --- Options common to multiple modutils
          [ ] Try to load module from a mmap'ed area
          (/lib/modules) Default directory containing modules
          (modules.dep) Default name of modules.dep

          如果没有配置 Simplified modutils ,配置选项如下:
          [*] modinfo
          [ ] Simplified modutils
          [*] insmod
          [*] rmmod
          [*] lsmod
          [*] Pretty output
          [*] modprobe
          [*] Blacklist support
          [*] depmod
          --- Options common to multiple modutils
          [ ] Support version 2.2/2.4 Linux kernels
          [ ] Try to load module from a mmap'ed area
          [*] Support tainted module checking with new kernels
          [*] Support for module.aliases file
          [*] Support for module.symbols file
          (/lib/modules) Default directory containing modules
          (modules.dep) Default name of modules.dep
          其它先使用黙认配置

        否则会出现在后面加载或卸载驱动时出错

      3:保存退出后直接执行make 编译等待完成

      4:安装 busybox  查看 busybox说明文件 vi README 得知安装方法

        安装到根文件系统指定的目录下 make install CONFIG_PREFIX=/work/template/filesystem/fs_mini_mdev

        进入根文件系统目录执行 ls 命令 即可查看 有以下内容

       

      到此关于根文件系统 busybox 就完成了。

    二、创建 /dev/console  /dev/null 这两个设备文件

      查看PC机上的这两个设备文件的属性,参考并创建  ls /dev/console /dev/null -l 得到以下信息

     

      创建 dev 目录 并在目录下创建这两个设备

      mkdir dev

      cd dev/

      sudo mknod console c 5 1

      sudo mknod null c 1 3

    三、构造 etc/inittab 配置文件

      如果我们不构造 那么将会使用黙认的配置 黙认配置在根文件系统分析时有说明

      我们制作一个最小的根文件系统,所以我们以简单为前提 下面是命令行

      mkdir etc

      cd etc/

       vi inittab

        console::askfirst:-/bin/sh

    四、配置指定的应用程序

      我们暂时不指定,现在先完成最小根文件系统,后续我们再慢慢完善

    五、C库

      我们的根文件系统运行依赖于C库,所以 我们把编译器下的C库拷贝到根文件系统下去 注意:在拷贝时在最后加上 -d 否则会把库的链接源文件拷过去,文件系统会很大

      查看编译器的C库 

      cd /usr/local/arm/4.3.2/

      find -name lib  得到以下内容

      

      在根文件系统目录下创建库目录

      mkdir lib

      mkdir usr/lib -p

      cp arm-none-linux-gnueabi/libc/armv4t/lib/*.so* /work/smdk2440/filesystem/fs_mini_mdev/lib/ -d

      cp arm-none-linux-gnueabi/libc/armv4t/usr/lib/*.so* /work/smdk2440/filesystem/fs_mini_mdev/usr/lib/ -d

      这里就完成了C库 可以到对应的目录下用 LS 命令查看一下库文件是否拷贝成功 如下图:

      到此 根文件系统目录下有如下文件,其内容上文中都有说明,自行仔细查看是否正确,整个最小根文件系统就制作完成了。

      这里只是完成了根文件系统的组成,我们要烧录到开发板上去,就需要制作成映像文件,制作映像文件需要指定的工具。

      下一节,制作映像文件的工具步骤方法。

    钻木取火!拼的是体力?耐心?智慧?
  • 相关阅读:
    关于TCP/IP协议栈
    关于java socket
    批处理的高吞吐率和高延迟的解释
    关于Xmanager使用问题的总结
    关于Storm Stream grouping
    django url 传递多个参数
    多线程 python threading 信号量/递归锁
    多线程 python threading 简单锁/互斥锁
    django 1.9 wsgi + nginx
    django models ForeignKey Many-to-ManyField 操作
  • 原文地址:https://www.cnblogs.com/x2i0e19linux/p/11669125.html
Copyright © 2011-2022 走看看