制作根文件系统,基于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 命令查看一下库文件是否拷贝成功 如下图:

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

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

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

钻木取火!拼的是体力?耐心?智慧?
原文地址:https://www.cnblogs.com/x2i0e19linux/p/11669125.html