目錄解析(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目錄對比?
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容