根文件系统的构建与分析(三)

转载请注明 http://blog.csdn.net/jianchi88   Author:Lotte   邮箱:baihaowen08@126.com

一、FHS(Filesystem Hierarchy Standard)标准介绍

当我们在linux下输入ls  / 的时候,见到的目录结构以及这些目录下的内容都大同小异,这是因为所有的linux发行版在对根文件系统布局上都遵循FHS标准的建议规定。

该标准规定了根目录下各个子目录的名称及其存放的内容:

目录名 存放的内容
/bin 必备的用户命令,例如ls、cp等
/sbin 必备的系统管理员命令,例如ifconfig、reboot等
/dev 设备文件,例如mtdblock0、tty1等
/etc 系统配置文件,包括启动文件,例如inittab等
/lib 必要的链接库,例如C链接库、内核模块
/home 普通用户主目录
/root root用户主目录
/usr/bin 非必备的用户程序,例如find、du等
/usr/sbin 非必备的管理员程序,例如chroot、inetd等
/usr/lib 库文件
/var 守护程序和工具程序所存放的可变,例如日志文件
/proc 用来提供内核与进程信息的虚拟文件系统,由内核自动生成目录下的内容
/sys 用来提供内核与设备信息的虚拟文件系统,由内核自动生成目录下的内容
/mnt 文件系统挂接点,用于临时安装文件系统
/tmp 临时性的文件,重启后将自动清除

二、最基本的目录

在嵌入式系统中,可以对根目录下的目录进行裁剪,例如:

• 为多用户提供可扩展环境的所以目录都可以删除;如(/home,/mnt,/root)

• 根据引导加载情况,/boot目录可以删除。

• 系统与程序正常运行的必要目录一般保留

 /bin,/dev,/etc,/proc,/sbin,/usr,/lib,/sys 一般保留。

Linux的根文件系统包括支持linux系统正常运行的基本内容,一般应包括以下几项内容:

� 基本的文件系统结构,如bin、dev、etc、sbin,lib、usr、proc。

� 基本程序运行所需的动态库。

� 基本的系统配置文件。

� 必要的设备文件支持。

� 基本的应用程序,如sh、ls、cp等(busybox提供)

构建根文件系统就是往相应的目录添加相应的文件。如:

� 在/dev添加设备文件(本篇介绍《根文件系统的构建与分析(三)之根文件目录及最简/dev目录》),

� 在/etc添加配置文件(请参考后续),

� 在/bin添加命令或者程序(根文件系统的构建与分析(四)之瑞士军刀busybox生成系统基本命令),

� 在/lib添加动态库等(请参考《根文件系统的构建与分析(二)之构建动态库》)。

三、最简化的/dev目录

在linux机器上,/dev目录常常可以看到几百个设备节点,但要手工创建它们吗?不需要,我们只需要创建几个设备节点。但是哪几个呢?构建/dev目录时,有两种方法:即静态构建和mdev设备管理工具构建。看了《根文件系统的构建与分析(一)之流程分析》这篇的都应该依稀记得最后提到init进程至少用到有两个,/dev/console和/dev/null。

下面我们创建根文件系统目录:

vim build_rootfs.sh

[cpp] view
plain
?
  1. 1 #!/bin/bash
  2. 2
  3. 3 echo "------ build  file system directory -------"
  4. 4 mkdir /opt/build_rootfs
  5. 5 mkdir /opt/build_rootfs/{bin,dev,etc,usr,lib,sbin,proc,sys,tmp}
  6. 6 mkdir /opt/build_rootfs/usr/{bin,sbin,lib}
  7. 7
  8. 8 mknod  /opt/build_rootfs/dev/console c 5 1
  9. 9 mknod  /opt/build_rootfs/dev/null    c 1 3
  10. 10
  11. 11 chmod 777 /opt/build_rootfs/dev/console
  12. 12 chmod 777 /opt/build_rootfs/dev/null
  13. 13
  14. 14 echo "------  end  -------"
[cpp] view
plain
?
  1. [root@localhost opt]# ls build_rootfs
  2. bin  dev  etc  lib  proc  sbin  sys  tmp  usr

根文件系统的构建与分析(三)之根文件目录及最简/dev目录的更多相关文章

  1. 根文件系统的构建与分析(四)之瑞士军刀busybox生成系统基本命令

    根文件系统的构建与分析(四) 转载请注明 http://blog.csdn.net/jianchi88   Author:Lotte   邮箱:baihaowen08@126.com ls /bin, ...

  2. Linux之根文件系统的构建20160611

    说一下LINUX根文件系统的构建: 制作文件系统 1. 交叉编译busybox 安装:make install CONFIG_PREFIX=/work/nfs_root/fs_mini_mdev_ne ...

  3. 构建根文件系统之init进程分析

    busybox是ls.cp等命令的集合. 执行ls时,实际上是执行了busybox ls 执行cp时,实际上是执行了busybox cp 分析init程序之前,再让我们回想一下我们的目标:u-boot ...

  4. 一步一步制作yaffs/yaffs2根文件系统(四)---构建etc、dev等剩余目录

    开发环境:Ubuntu 12.04 开发板:mini2440  256M NandFlash   64M SDRAM 交叉编译器:arm-linux-gcc 4.4.3点此可下载 BusyBox版本: ...

  5. yaffs2根文件系统的构建过程

    基于BusyBox-1.19.2  (以其它作者的作为参考) 1. 下载BusyBox的源码 http://busybox.net/ 2. 解压#tar xvzf busybox-1.19.2.tgz ...

  6. 根文件系统及Busybox简介

    转:http://blog.csdn.net/wqc02/article/details/8930184 1.根文件系统简介...2 2.Busybox简介...2 2.1Busybox简介...2 ...

  7. Linux--安装过程中的根文件系统的分析

    前言: 在这篇文章中S3C6410公版的Linux BSP和U-Boot为了分析,名词和数据文件的所有内容本文是基于环境为例,所有的代码是在设置的示例进行分析的过程中.哈. 假设有不对或者不完好的地方 ...

  8. linux 内核移植和根文件系统的制作【转载】

    原文地址:http://www.cnblogs.com/hnrainll/archive/2011/06/09/2076214.html 1.1 Linux内核基础知识 在动手进行Linux内核移植之 ...

  9. linux 内核移植和根文件系统的制作

    1.1 Linux内核基础知识 在动手进行Linux内核移植之前,非常有必要对Linux内核进行一定的了解,下面从Linux内核的版本和分类说起. 1.1.1  Linux版本 Linux内核的版本号 ...

随机推荐

  1. Windows下下载及安装numpy、pandas及简单应用

    下载numpy 下载地址 https://pypi.python.org/pypi/numpy 进入网站,下载和自己电脑及电脑中安装的python匹配的numpy版本.我的电脑是Win 10 x64位 ...

  2. Python 面向对象-------补充

    Python 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. 如果你以前没有接触过 ...

  3. display:inline-block 和 float 水平排列区别?

    文档流(Document flow):浮动元素会脱离文档流,并使得周围元素环绕这个元素.而inline-block元素仍在文档流内.因此设置inline-block不需要清除浮动.当然,周围元素不会环 ...

  4. mvp和mvc的区别

    一句话总结:你代码逻辑有没有写在View中的,有就是MVC,没有就是MVP MVP模式: View不直接与Model交互,而是通过与Presenter交互来与Model间接交互 Presenter与V ...

  5. Agilent RF fundamentals (10) Mixer ,Phase domain and modulator

    1 Mixer characterization DC input Bias voltage Bias Current RF input Lo input IF output 2 mixer devi ...

  6. mac上安装mongoDb以及简单使用

    年初粗略学习了下node,这好几个月没玩,突然发现已经忘完了,还是简单记录下基本知识,方便再次使用时资料查找. 一.mongoDb安装 在mac上安装了brew的情况下,可以直接执行命令 brew i ...

  7. 预热篇- 总结Delphi Xe4 做App的的可行性分析. ios平台的问题还需要自行学习

    首先澄清一个问题, 很多同学其实是误会了, 以为只要搞定了Delphi 就能很快写快餐程序了.  ios 本身的知识还是需要一些的, 并没有什么捷径可以走. 但如果一个团队有分工协作的话, Delph ...

  8. java网络编程客户端与服务端原理以及用URL解析HTTP协议

    常见客户端与服务端 客户端: 浏览器:IE 服务端: 服务器:web服务器(Tomcat),存储服务器,数据库服务器. (注:会用到Tomact服务器,在webapps下有一个自己创建的目录myweb ...

  9. 在Wifi网络中嗅探明文密码(HTTP POST请求、POP等)

    全世界,现在大约50%的网站没有使用SSL加密,天朝尤其多. 我们都知道通过HTTP发送的数据都是明文,没有使用任何加密,即使是在数据敏感的登录页面. 本文的目的是:如果你在不熟悉的网络环境中,要注意 ...

  10. Ubuntu 16.04 为 PHP7 添加 memcached 以及 redis 扩展

    切换到 PHP 7 之后,网站的速度大幅提升,不过通常的扩展可能某一个就还没有支持 PHP7 Memcached 比如说我现在使用了最新的 Ubuntu 16.04,虽然内置了 PHP 7 源,但 m ...