目錄結構解析 (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目錄對比? |