rootfs 制作

最小 根文件系统 

(1)/dev/console(终端控制台, 提供标准输入、标准输出以及标准错误)

    /dev/null (表示空设备终端, 所有写到这个文件中的数据都会被丢弃掉。)

(2)init进程的程序(也就是busybox,因为init程序位于busybox中,已经完成)

(3)/etc/inittab(用于init进程读取配置, 然后执行inittab里的指定应用程序)

(4)应用程序(被inittab配置文件调用的应用程序)

(5)C库(glibc,被应用程序调用的C库函数,比如:printf,strcmp,fopen等)

注:以下操作均是在/home目录下操作,实操前请注意修改path

1、创建终端文件(/dev/console 和 /dev/null)

  1.1查看pc /dev/console 和 /dev/null  

  ls /dev/console /dev/null -al
  crw------- 1 root root 5, 1 Feb 21 18:53 /dev/console
  crw-rw-rw- 1 root root 1, 3 Feb 12 22:08 /dev/null

  1.2参照pc 创建字符设备/dev/console 和 /dev/null

  mkdir first_fs;cd first_fs

  sudo mknod console c 5 1    //创建console字符设备, 5:主设备号 1:次设备号

  sudo mknod null c 1 3    //创建null 字符设备

2、busybox已做好,所以init进程的程序也就做好了

3、构造/etc/inittab

  mkdir etc

  touch etc/inittab

  vi  etc/inittab

  输入

  console::askfirst:-/bin/sh      //action值必须小写  id可以写成/dev/xx或xx

  表示action= askfirst(每次启动/bin/sh进程之前等待用户按下enter键),然后指定/bin/sh的终端对应/dev/console字符设备

4、应用程序

  因为是最小根文件系统,所以用户程序可以先不制作。

5、安装 glibc lib

  mkdir lib

  cd /home/gcc-3.4.5-glibc-2.3.6/arm-linux/lib     //进入源目录

  cp *.so* /home/first_fs/lib -d //复制glibc库到lib目录(*:匹配符,-d:保持链接)

  

 

上一篇:跟我学PHP-第一篇:如何安装Zend Studio 以及汉化和基本准备工作


下一篇:J - 哈密顿绕行世界问题