第17-1章 Linux文件系统概述

Linux根文件系统

FHS标准(Filesystem Hierarchy Standard,文件系统层次标准)

目录结构

  • /bin目录

    • 该目录下存放所有用户(包括系统管理员和一般用户)都可以使用的、基本的命令,这些命令在挂接其它文件系统之前就可以使用,所以/bin目录必须和根文件系统在同一个分区中
    • /bin目录下常用的命令有:cat、chgrp、chmod、cp、ls、sh、mount、umount、mkdir、mknod、[、test等。
  • /sbin目录

    • 该目录下存放系统命令,即只有管理员能够使用的命令,系统命令还可以存放在/usr/sbin、/usr/local/sbin目录下。/sbin目录中存放的是基本的系统命令,它们用于启动系统、修复系统等。与/bin目录相似,在挂接其它文件系统之前就可以使用/sbin,所以/sbin目录必须和根文件系统在同一个分区中。
    • /sbin目录下常用的命令有:shutdown、reboot、fdisk、fsck等。
    • 不是急迫需要使用的系统命令存放在/usr/sbin目录下。本地安装的系统命令存放在/usr/local/sbin目录下
  • /dev目录

    • 该目录下存放的是设备文件。设备文件是Linux中特有的文件类型,在Linux系统下,以文件的方式访问各种外设,即通过读写某个设备文件操作某个具体硬件。比如通过”/dev/ttySAC0”文件可以操作串口0,通过”/dev/mtdblock1”可以访问MTD设备(NAND Flash、NOR Flash等)的第2个分区。

    • 设备文件有两种:字符设备和块设备。其中字符’b’、’c’表示这是一个块设备文件或字符设备文件

    • 设备文件可以使用mknod命令创建

    mknod /dev/ttySAC0 c 4 64

    mknod /dev/hda1 b 3 1

    /dev的创建
    1. 手动创建

      1. 在制作根文件系统的时候,就在/dev目录下创建好要使用的设备文件,比如ttySAC0等
      2. 系统挂接根文件系统后,就可以使用/dev目录下的设备文件了
    2. 使用devfs文件系统:这种方法已经过时

      1. 在以前的内核中,有一个配置选项CONFIG_DEVFS_FS,它用来将虚拟文件系统devfs挂接在/dev目录上。

      2. 各个驱动程序注册时会在/dev目录下自动生成各种设备文件。在制作根文件系统时,/dev目录可以为空。

        缺点
        1. 不确定的设备映射
        2. 没有足够的主/次设备号
        3. 命名不够灵活
        4. devfs消耗大量的内存
    3. udev

      1. udev是个用户程序(u指user space,dev是指device),它能够根据系统中硬件设备的状态动态地更新设备文件,包括设备文件的创建、删除等

      2. 使用udev机制也不需要在/dev目录下创建设备节点,它需要一些用户程序的支持,并且内核要支持sysfs文件系统。它的操作相对复杂,但是灵活性很高

        busybox中有一个mdev命令,它是udev命令的简化版本

  • /etc目录

    • 该目录下存放各种配置文件

    • PC上的Linux系统,/etc目录下目录、文件非常多。这些目录、文件都是可选的,在嵌入系统中,这些内容可以大为精简

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

    • 该目录下存放共享库和可加载模块(即驱动程序),共享库用于启动系统、运行根文件系统中的可执行程序,比如/bin、/sbin目录下的程序

    • 其它不是根文件系统所必须的库文件可以放在其它目录,比如/usr/lib、/usr/X11R6/lib、/var/lib等

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

    用户目录,可选的

  • /root目录

    根用户目录

  • /usr目录

    • /usr目录的内容可以存在另一个分区中,在系统启动后再挂接到根文件系统中的/usr目录下。里面存放的是共享、只读的程序和数据,/usr中的文件应该是只读的。其它主机相关、可变的文件应该保存在其它目录下,比如/var目录

    • /usr目录通常包含一些目录,嵌入式系统中,这些内容可以进一步精简

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

    /var目录中存放可变的数据,比如spool目录(mail、news、打印机等),log文件、临时文件

  • /proc目录

    • 这是一个空目录,常作为proc文件系统的挂接点

    • proc文件系统时个虚拟的文件系统,它没有实际的存储设备,里面的目录、文件都是由内核临时生成的,用来表示系统的运行状态,也可以操作其中的文件控制文件

    • 系统启动后,使用以下命令挂接proc文件系统(常在/etc/fstab进行设置以自动挂接)

    
    # mount -t proc none /proc
    
  • /mnt目录

    • 用于临时挂接某个文件系统的挂接点,通常是空目录
    • 可以在里面创建一些空的子目录,比如/mnt/cdram、/mnt/hda1等,用来临时挂接光盘、硬盘
  • /tmp目录

    • 用于存放临时文件,通常是空目录。一些需要生成临时文件的程序要用到/tmp目录,所以/tmp目录必须存在并可以访问

    • 为减少对Flash的操作,当在/tmp目录上挂接内存文件系统时,如下所示:

    
    # mount -t tmpfs none /tmp
    

Linux文件属性

文件类型描述
普通文件(-)这是最常见的文件类型
目录文件(d)目录也是一种文件
字符设备文件(c)用来访问字符设备
块设备文件(b)用来访问块设备
FIFO(p)用于进程间的通信,也称为命名管道
套接口(s)用于进程间的网络通信
连接文件(l)它指向另一个文件,有软连接、硬连接
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值