目录结构解析 (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 |
对应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目录对比? |
网友评论