目录解析(1)

目录结构解析 (1) /boot /dev/ /proc

参考书籍《Linux 系统架构和目录解析》

操作系统:Debian 8.6发行版 jessie

FHS (Filesystem Hierarchy Standard)规定的目录结构:

根目录下的各个目录
目录 含义
/bin 所有用户都可以使用的“必要”命令
/boot 开机启动加载程序的核心文件
/dev 设备文件目录:字符设备,块设备等。
/etc 主机或者系统的配置文件目录
/home 用户目录
/lib 需要共享的函数库与kernel模块
/media 移动存储设备的挂载点
/mnt 临时挂载的挂载点
/opt 额外所安装的应用程序目录
/root root管理员的家目录
/sbin 存放系统的必要指令
/srv 系统服务的文件存放区
/tmp 临时文件存放区
/usr/ /var/ /proc之后介绍
根目录的产生和系统启动
  1. 启动流程:
    • 系统预处理程序? -> GRUB -> Kernel -> initrd(在这里挂载/根目录)
    • init启动 -> inittab(桥黑板:文件作用) -> rc.sysinit -> functions -> modules
      -> rcX.d ->图形模式/字符模式
  2. 关机流程:
    • 关机: shutdown/reboot -> Close Service -> Kill all Processes -> halt/reboot
    • 休眠: sleep -> suspend/Hibernate -> Functions -> close devices

Debian8.6 目录结构

开机启动加载/boot

├── boot
│   ├── config-3.16.0-4-amd64
│   ├── grub
│   ├── initrd.img-3.16.0-4-amd64
│   ├── memtest86+.bin
│   ├── memtest86+_multiboot.bin
│   ├── System.map-3.16.0-4-amd64
│   └── vmlinuz-3.16.0-4-amd64
文件名或目录名 作用
config-3.16.0-4-amd64 系统kernel的配置文件,内核的功能配置
/grub 启动管理程序GRUB,包括GRUB启动时的画面
initrd 系统启动时的模块供应主要来源
memtest86+.bin 启动时的内存检测工具?
System.map-3.16.0-4-amd64 系统Kernel的变量对应表
vmlinuz-3.16.0-4-amd64 最重要的文件,实际就是系统使用的Kernel

内核空间和用户空间的桥梁:虚拟文件系统

  1. Kernel执行会占据一块内存空间,就是内核空间,所有用户都不能直接和内核空间交互,这样提供保护和保证读写速度
  2. 用户空间是用户执行任何程序占用的内存空间
  3. 特权级 用途 允许访问
    Ring0 内核空间 Kernel
    Ring1 虚拟机文件系统 Devices
    Ring2 用户空间 Modules or Driver
    Ring3 用户空间 User or Application
    对应CPU的特权级:
    特权级 用途 允许访问
    Ring0 内核空间 Kernel
    Ring1 虚拟机文件系统 Devices
    Ring2 用户空间 Modules or Driver
    Ring3 用户空间 User or Application

设备文件目录 /dev

├── dev
│   ├── autofs
│   ├── block
│   ├── bsg
│   ├── btrfs-control
│   ├── bus
│   ├── char
│   ├── console
│   ├── core -> /proc/kcore
│   ├── cpu
|   | ....

/dev(ring2) <-> devfs(ring1) <-> Kernel(ring0)
'll'alias 'ls -al' 查看文件:

  • 文件属性字段:1位类型字段('-':普通文件,‘d’:目录,‘l’:符号链接,‘b’:块设备,‘c’:字符设备)9权限字段
  • 如果是文件,表示该文件的硬链接数;如果是目录,表示目录内的子目录数
  • 文件拥有者
  • 文件拥有者所在的组
  • 文件大小
  • 创建日期或者最后修改日期
  • 文件名
设备文件名 类别 所属组 主要用途
/dev/mem char kmem 读写物理内存时用
/dev/null char root 空的设备文件,黑洞,接地线
/dev/zero char root 空的位文件,可以用来缠上固定大小的文件
/dev/random char root 产生随机数
/dev/urandom char root 快速但低安全性的随机数产生器
/dev/sda* block disk SATA硬盘或者光驱的设备文件
/dev/hda* block disk IDE硬盘或者光驱的设备文件
/dev/tty* char tty 用户登录时使用的控制台接口,依次编号,最多有64个:0-63
/dev/ttyS0 char dialout 串口COM口使用的控制台接口,最多192个?
/dev/console char root 系统的终端借口, 显示开机启动信息
/dev/ptmx char tty /dev/pts下文件的来源
/dev/pts char tty 远程或者Xwindows用户打开的Terminal 界面
/dev/bus dir root 总线设备,常用的都是USB
/dev/disk dir root 硬盘信息
/dev/input dir root 输入设备: event , mice, mouse
/dev/mapper dir root 块设备的映射
/dev/net/tun char root VPN 通道
/dev/shm file shen普通用户 tmpfs挂载,虚拟文件系统,用于共享内存的一种API
/dev/VolGroup00 link root LVM组

程序信息和系统设置目录 /proc

├── proc
│   ├── 1
|   ├── ....
│   ├── acpi
│   ├── asound
│   ├── buddyinfo
│   ├── bus
|   ├── ....

/proc目录是procfs产生的,procfs用以存储开机后硬件,进程相关信息的方式。/proc不是一个实体的目录,root也不能再该目录下增删文件。
/proc对系统的功能:

  • 整理系统内部的信息;
  • 存放主机硬件信息;
  • 调整系统执行时的参数;
  • 检查和修改网络和主机的参数;
  • 检查和调整系统的内存和性能;
文件名 主要用途
/proc/cpuinfo CPU硬件信息
/proc/devices 设备号和设备类型
/proc/interrupts 中断编号;cpu使用该中断的次数;中断的管理模式,一般位APIC, PIC;对应的硬件设备
/proc/kcore 系统的内存,(或者最大内存?我这里显示128T, 0_0)
/proc/keys keys-users Linux的密钥保留服务
/proc/meminfo 系统内存的信息
/proc/mudoules 系统模块信息,lsmod信息来自该文件
/proc/mttr 系统内存配置机制
/proc/iomem 和/proc/mttr 配合,储存配置后内存的明细信息
/proc/ioports 可见设备对应内存位置的分配表
/proc/[numbers] 系统运行的程序 ps ax 看到的信息应该来自这里
/proc/acpi 省电设置相关的文件
/proc/bus 主机上总线的所有信息,包括输入设备,PCI接口..
/proc/driver 很少用
/proc/net 网络相关的虚拟文件
/proc/sys 系统核心会使用到的一些变量, 可以通过/etc/sysctl.conf修改这里的值,和/sys目录对比?

你可能感兴趣的:(目录解析(1))