zoukankan      html  css  js  c++  java
  • 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)

      mkdir first_fs;cd  first_fs

      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 dev;cd dev

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

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

      cd -

      

    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(cross  compile 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:保持链接)

    6、完善系统(内核虚拟文件系统proc制作)

      它是通过proc虚拟文件系统挂接到proc目录,然后当前进程的信息会以文件的形式保存到proc目录

      以ps命令为例:

      mkdir proc                    //创建proc目录

      6.1 inittab配置文件中追加内容,避免手动mount挂载proc

      方法1:

      在inittab里追加内容:

      ::sysinit:/etc/init.d/rcS                  //将/etc/init.d/rcS脚本设置成系统的初始化文件

      

      创建etc/init.d/rcS文件

      mkdir -p etc/init.d

      vi etc/init.d/rcS              //添加一行命令(也可以添加其它命令)

      mount -t proc none /proc              //挂载proc(前提根文件系统有proc目录)

      sudo chmod +x etc/init.d/rcS                   //加上可执行权限使脚本rcS能够执行命令 

      

      方法2:

      除了使用在rcS中添加mount -t proc non /proc命令 

      也可以用mount -a  作用是加载文件/etc/fstab中配置的所有设备

      它会依赖一个配置文件/etc/fstab

      在inittab里追加内容:

      ::sysinit:/etc/init.d/rcS                  //将/etc/init.d/rcS脚本设置成系统的初始化文件

      

      创建etc/init.d/rcS文件

      mkdir -p etc/init.d

      vi etc/init.d/rcS, 添加一行命令

      mount -a      //加载文件/etc/fstab中配置的所有设备

      

      创建fstab文件

      vi  etc/fstab

      输入内容:

      #device mount-point type options dump fsck order
      proc /proc proc defaults 0 0

      

     7、完善系统——使用udev自动在/dev下创建设备节点

      在dev下只有2个字符设备(/dev/console /dev/null),如果大量增加设备的话,手动创建太麻烦,可以使用udev 自动创建/dev/设备节点。

      busybox 中mdev 是udev的一个迷你版, 它主要的功能是管理/dev目录底下的设备节点。它同时也是用来接替devfs及热插拔的功能

      7.1 创建sysfs、devpts要挂载的目录

      mkdir   sys                     //创建sysfs要挂载的目录

      7.2、vi  etc /fstab,添加sysfs、tmpfs挂载内容:

      sysfs /sys sysfs defaults 0 0
      tmpfs /dev tmpfs defaults 0 0

      

      7.3  vi etc/init.d/rcS, 追加热拔插命令和配置/dev设备,添加内容如下:

      mount -a
      mkdir /dev/pts
      mount -t devpts devpts /dev/pts
      echo /sbin/mdev > /proc/sys/kernel/hotplug
      mdev -s

      

  • 相关阅读:
    人生感悟经典名言大全
    Linux<DNS配置>
    CentOS7安装详细步骤
    8 个实用在线工具,破解工作学习中的80%难题!
    java.sql.SQLException: Access denied for user '@' localhost' (using password: NO)
    windows10系统激活的方法
    程序猿小哥哥教你们把自己网站变灰色,哀悼……
    常用正则表达式
    2020年Web前端最新框架技术
    Navicat Premium 15 永久激活版安装教程
  • 原文地址:https://www.cnblogs.com/Malphite/p/10422260.html
Copyright © 2011-2022 走看看