Linux 以裝置檔抽象硬體,核心透過 major(主裝置號,識別驅動程式)與 minor(次裝置號,識別具體裝置)定位裝置。mknod 可手動建立裝置節點,適用於嵌入式系統、容器裝置映射、救援模式重建 /dev 等場景。

# SCSI/SATA 磁碟
brw-rw---- 1 root disk 8, 0 /dev/sda # major=8 (sd driver), minor=0 (整顆磁碟)
brw-rw---- 1 root disk 8, 1 /dev/sda1 # minor=1 (第1分區)
brw-rw---- 1 root disk 8, 16 /dev/sdb # minor=16 (第二顆磁碟基礎)
brw-rw---- 1 root disk 8, 17 /dev/sdb1
規律:minor = (磁碟索引 * 16) + 分區號,單顆磁碟最多 15 個分區(1~15)。
mknod 語法mknod [選項] 名稱 類型 major minor
類型:
b 區塊裝置
c 字元裝置
p 管道 (FIFO)
# mknod pipeFile p
# echo "this is a test line" > pipeFile
# cat pipeFile
this is a test line
# mknod blockFile b 8 100
# ls -l blockFile
brw-r--r-- 1 root root 8, 100 ... blockFile
此節點對應 major=8 (sd 驅動)、minor=100 (第 7 顆磁碟第 4 分區),實際無此硬體時讀寫會報 No such device,但可用於測試程式對裝置節點的操作邏輯。
# mknod charFile c 4 100
# ls -l charFile
crw-r--r-- 1 root root 4, 100 ... charFile
major=4 通常為 tty 相關驅動。
| 類型 | 權限前綴 | 典型用途 | 資料流向 |
|---|---|---|---|
| 區塊 | b | 磁碟、分區、Loop 裝置 | 緩衝、隨機存取、支援檔案系統 |
| 字元 | c | 終端、序列埠、聲音、GPU | 串流、無緩衝、順序存取 |
| 管道 | p | 進程間通訊 (FIFO) | 單向、先進先出、無隨機存取 |
udev 監聽核心 uevent,依規則 /usr/lib/udev/rules.d/*.rules 自動建立/移除 /dev/ 節點、設定權限、符號連結。docker run --device=/dev/sdb:/dev/xvdb 將宿主節點映射進容器。mknod 現主要用於:# 建立後立即設定正確權限與擁有者
mknod /dev/mydev b 8 200
chown root:disk /dev/mydev
chmod 660 /dev/mydev
避免預設 root:root 644 導致非特權用戶可讀寫裝置。
Linux 查看 MariaDB 伺服器版本三種方法:登入後顯示、status 指令、套件管理器查詢套件版本
Linux 環境變數 LANG 與 NLS_LANG 區別深度解析:系統語系 vs Oracle 客戶端語系
Linux cgroups blkio 子系統管理磁碟 I/O 完整實戰指南
traceroute 追蹤網路路徑:Linux/Windows 差異、TTL 原理、三次探測、參數全表、防火牆導致星號、DNS 解析延遲、跳數限制、IDC 故障回報
CentOS 系統時間設定三大方法:本地時間、UTC 與 NTP 同步完整指南