构建Linux根文件系统

本文主要是对韦东山老师的《嵌入式Linux应用开发完全手册》中第17章中的小结,以及一些自己的经验看法。


概要:本文讲述了Linux根目录中各个目录的作用和内容、busybox工具的使用、内核在加载init进程后进行的操作、mdev是如何被加入Linux的、glibc库的移植。

Linux文件系统概述

Linux中没有像windows的C、D、E盘之分,只有一个根文件系统,其它文件系统通过挂载到根文件系统中的某个目录下,当挂载目录中的其它文件将会变成不可访问,所以挂载点最好是空目录。

根文件目录结构

为了在安装软件时能够预知文件、目录的存放位置,为了让用户方便地找到不同类型文件的位置,在构造根文件系统时,建议遵循FHS标准(Filesystem Hierarchy Standard)。它顶一个文件系统中目录、文件分类存放的原则,定义了系统运行时所需的最小文件、目录的集合,并举例了不遵循这些原则的例外情况及其原因。FHS并不是一个强制的标准。FHS文档可以从网站http://www.pathname.com下载。

  • /bin目录
    该目录下存放的是所有用户(系统管理员和普通用户)都可以使用的命令,这些命令在加载其它文件系统之前就需要使用,所以该目录必须和根文件系统在同一个分区中。
    /bin目录下常用命令:cat、chgrp、chmod、cp、ls、sh、kill、mount、umount、mkdir、mknod、test。

  • /sbin目录
    该目录中存放的是系统命令,只有系统管理员可以使用,系统命令还可以存放在/usr/sbin、/usr/local/sbin目录下。/sbin目录下的系统命令主要用来启动系统、修复系统等。该目录必须要和根文件系统在同一分区下。
    /sbin下常用命令:shutdown、reboot、fdisk、fsck等。不是急迫需要使用的命令存放在/usr/sbin中,本地安装的系统命令安装在/usr/local/sbin。

  • /dev目录
    创建设备文件的方法有3种:

(1)手动创建

在制作根文件系统的时候,在/dev目录下就要创建好要使用的设备文件,之后在系统运行时动态添加设备时,要通过查阅/proc/devices来获得主设备号,然后再在/dev目录下创建设备节点。

(2)使用devfs文件系统

这种方法已经过时了,《嵌入式Linux应用开发完全手册》里面有较详细介绍。

(3)使用udev

udev是个用户程序,它能够根据系统状态动态地更新设备文件,包括设备文件的创建和删除。在busybox中有一个mdev命令,它是udev的简化版本,适合嵌入式应用。

  • /etc目录

该目录下存放了各种配置文件。在PC的Linux系统中该目录下的文件非常多,但是这些文件是可以删选的。在嵌入式应用中,可以根据需求大大减少该目录下的文件。

/etc目录下的子目录

目录 描述
opt 用来配置opt下的程序
X11 用来配置X windows
sgml 用来配置SGML
xml 用来配置XML

/etc 目录下的文件

文件 描述
export 用来配置NFS文件系统,只有当作为NFS服务器时使用
fstab 用来指明”mount -a”执行时,需要挂载的文件系统
mtab 用来显示已经加载的文件系统,通常是/proc/mounts的链接文件
ftpusers 启动FTP服务器时,用来配置用户的访问权限
group 用户的组文件
inittab init进程的配置文件
ld.so.conf 其它共享库的路径
passwd 密码文件
  • /lib目录

该目录下存放共享库和可加载模块,共享库用于运行根文件系统中的可执行程序。其它不是根文件系统所必须的库文件可以放在其他目录,比如/usr/lib、/usr/X11R6/lib、/var/lib.

/lib目录中的内容

目录/文件 描述
libc.so.* 动态连接C库
ld* 连接器、加载器
modules 内核可加载模式存放的目录
  • /home目录

用户目录,它是可选的,存放用户相关的配置文件。

  • /root目录

root用户的目录,存放root用户相关的配置文件。

  • /usr目录

/usr目录的内容可以存放在另一个分区中,系统启动后子再挂接到根文件目录下。里面存放的是共享、只读的程序和数据,这表明/usr目录下的内容可以在多个主机间共享。

/usr目录中的内容

目录 描述
bin 很多用户命令存放在这个目录下
include C程序的头文件,这在PC上进行开发时才用得到,在嵌入式系统中不需要
lib 库文件
local 本地目录
sbin 非必须的系统命令
share 架构无关的数据
X11R6 XWindow系统
game 游戏
src 源代码
  • /var目录

与/usr相反,里面存放的是可变的数据,比如spool目录(mail、news、打印机等用的),log文件、临时文件。

  • /proc目录

这是一个空目录,作为proc文件系统的挂载点。

  • /mnt目录

用于临时挂载某个文件系统,通常是空目录,也可以在里面创建空的子目录,比如/mnt/cdrom、/mnt/hdal等,用来临时挂接光盘和硬盘。

  • /tmp

用于存放临时文件,通常是空文件。一些需要生成临时文件的程序要用到/tmp目录,所以/

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值