目录结构解析 (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之后介绍
根目录的产生和系统启动
- 启动流程:
- 系统预处理程序? -> GRUB -> Kernel -> initrd(在这里挂载/根目录)
- init启动 -> inittab(桥黑板:文件作用) -> rc.sysinit -> functions -> modules
-> rcX.d ->图形模式/字符模式
- 关机流程:
- 关机: 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 |
内核空间和用户空间的桥梁:虚拟文件系统
- Kernel执行会占据一块内存空间,就是内核空间,所有用户都不能直接和内核空间交互,这样提供保护和保证读写速度
- 用户空间是用户执行任何程序占用的内存空间
-
特权级 用途 允许访问 Ring0 内核空间 Kernel Ring1 虚拟机文件系统 Devices Ring2 用户空间 Modules or Driver Ring3 用户空间 User or Application 特权级 用途 允许访问 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目录对比? |