Linux中的裝置檔案與裝置號

2021-09-08 01:15:43 字數 4881 閱讀 9954

在linux下,一切皆檔案,裝置也不例外,為了管理這些裝置,系統為它們各自都編了號,而每個裝置號又分為主裝置號和次裝置號。主裝置號用來區分不同型別的裝置,而次裝置號用來區分同一型別內的多個裝置(及其裝置分割槽)。

乙個linux系統,當前所有註冊裝置的主裝置號可以通過/proc介面檢視:

[root@localhost lenky]# cat /proc/devices

character devices:

1 mem

4 /dev/vc/0

4 tty

4 ttys

5 /dev/tty

5 /dev/console

5 /dev/ptmx

7 vcs

10 misc

13 input

14 sound

21 sg

29 fb

99 ppdev

116 alsa

128 ptm

136 pts

162 raw

180 usb

189 usb_device

202 cpu/msr

203 cpu/cpuid

251 hidraw

252 usbmon

253 bsg

254 rtc

block devices:

1 ramdisk

2 fd

259 blkext

7 loop

8 sd

9 md

11 sr

65 sd

66 sd

67 sd

68 sd

69 sd

70 sd

71 sd

128 sd

129 sd

130 sd

131 sd

132 sd

133 sd

134 sd

135 sd

254 mdp

[root@localhost lenky]#

[root@localhost lenky]# ls -rl /dev/* | grep " 8,"

brw-rw----. 1 root disk 8, 0 jan 12 06:24 /dev/sda

brw-rw----. 1 root disk 8, 1 jan 12 06:24 /dev/sda1

brw-rw----. 1 root disk 8, 2 jan 12 06:24 /dev/sda2

brw-rw----. 1 root disk 8, 16 jan 12 06:25 /dev/sdb

brw-rw----. 1 root disk 8, 17 jan 12 06:25 /dev/sdb1

brw-rw----. 1 root disk 8, 32 jan 12 06:29 /dev/sdc

brw-rw----. 1 root disk 8, 33 jan 12 06:29 /dev/sdc1

brw-rw----. 1 root disk 8, 34 jan 12 06:29 /dev/sdc2

brw-rw----. 1 root disk 8, 35 jan 12 06:29 /dev/sdc3

[root@localhost lenky]#

上面的0,1,2,16,17等都是次裝置號,用於區分標記各個sd硬碟或分割槽。檢視系統所有的塊裝置:

[root@localhost lenky]# grep ^ /sys/class/block/*/dev

/sys/class/block/dm-0/dev:253:0

/sys/class/block/dm-1/dev:253:1

/sys/class/block/dm-2/dev:253:2

/sys/class/block/fd0/dev:2:0

/sys/class/block/loop0/dev:7:0

/sys/class/block/loop1/dev:7:1

/sys/class/block/loop2/dev:7:2

/sys/class/block/loop3/dev:7:3

/sys/class/block/loop4/dev:7:4

/sys/class/block/loop5/dev:7:5

/sys/class/block/loop6/dev:7:6

/sys/class/block/loop7/dev:7:7

/sys/class/block/ram0/dev:1:0

/sys/class/block/ram10/dev:1:10

/sys/class/block/ram11/dev:1:11

/sys/class/block/ram12/dev:1:12

/sys/class/block/ram13/dev:1:13

/sys/class/block/ram14/dev:1:14

/sys/class/block/ram15/dev:1:15

/sys/class/block/ram1/dev:1:1

/sys/class/block/ram2/dev:1:2

/sys/class/block/ram3/dev:1:3

/sys/class/block/ram4/dev:1:4

/sys/class/block/ram5/dev:1:5

/sys/class/block/ram6/dev:1:6

/sys/class/block/ram7/dev:1:7

/sys/class/block/ram8/dev:1:8

/sys/class/block/ram9/dev:1:9

/sys/class/block/sda1/dev:8:1

/sys/class/block/sda2/dev:8:2

/sys/class/block/sda/dev:8:0

/sys/class/block/sdb1/dev:8:17

/sys/class/block/sdb/dev:8:16

/sys/class/block/sdc1/dev:8:33

/sys/class/block/sdc2/dev:8:34

/sys/class/block/sdc3/dev:8:35

/sys/class/block/sdc/dev:8:32

/sys/class/block/sr0/dev:11:0

[root@localhost lenky]#

關於每個主裝置號:次裝置號對應裝置的功能在linux幫助文件裡可以找到:

我系統使用的dm磁碟如下:

[root@localhost lenky]# ls -l /dev/dm-*

brw-rw----. 1 root disk 253, 0 jan 12 06:24 /dev/dm-0

brw-rw----. 1 root disk 253, 1 jan 12 06:24 /dev/dm-1

brw-rw----. 1 root disk 253, 2 jan 12 06:24 /dev/dm-2

[root@localhost lenky]#

附加筆記:

[root@localhost lenky]# ls -rl /dev/* | grep " 8,"

brw-rw----. 1 root disk 8, 0 jan 12 06:24 /dev/sda

brw-rw----. 1 root disk 8, 1 jan 12 06:24 /dev/sda1

brw-rw----. 1 root disk 8, 2 jan 12 06:24 /dev/sda2

一般說的各個分割槽相加等於硬碟,有個隱含說明就是硬碟內各個分割槽的硬碟儲存空間容量相加等於硬碟的硬碟儲存空間容量。

乙個硬碟有乙個描述硬碟的資訊,而乙個分割槽有一描述分割槽的資訊,將硬碟內各個分割槽的描述分割槽的資訊拼接在一起也得不到關於硬碟的資訊,所以給硬碟配上乙個次裝置號是有必要不多餘的。

[root@localhost lenky]# ls -rl /dev/* | grep " 8,"

brw-rw----. 1 root disk 8, 0 jan 12 06:24 /dev/sda

brw-rw----. 1 root disk 8, 1 jan 12 06:24 /dev/sda1

brw-rw----. 1 root disk 8, 2 jan 12 06:24 /dev/sda2

brw-rw----. 1 root disk 8, 16 jan 12 06:25 /dev/sdb

brw-rw----. 1 root disk 8, 17 jan 12 06:25 /dev/sdb1

brw-rw----. 1 root disk 8, 32 jan 12 06:29 /dev/sdc

brw-rw----. 1 root disk 8, 33 jan 12 06:29 /dev/sdc1

brw-rw----. 1 root disk 8, 34 jan 12 06:29 /dev/sdc2

brw-rw----. 1 root disk 8, 35 jan 12 06:29 /dev/sdc3

我們看到/dev/sd*裝置名的裝置型別(即指的是ide硬碟),這裡有三個不同的ide硬碟,其主裝置號以及其分割槽的主裝置號都是8。

裝置與驅動的關係以及裝置號 裝置檔案

linux裝置分類 linux下的裝置通常分為三類,字元裝置,塊裝置和網路裝置。字元裝置 乙個字元裝置是一種位元組流裝置,對裝置的訪問只能按順序按位元組的訪問而不能隨機訪問,字元裝置沒有請求緩衝區,所有的訪問請求都是按順序執行的。linux下的大多裝置都是字元裝置。應用程式是通過字元裝置節點來訪問字...

linux中的裝置名稱和裝置號

看趙炯博士的 linux 0.11 源 注釋 已經兩三周了,從今天起開始將一些個人總結和感悟分小標題寫出來,聊作記憶以供後來檢視。在linux0.11原始碼的 linux boot bootsect.s中,有乙個標號定義root dev root dev 0x000 same type of flo...

字元裝置驅動 裝置號 裝置檔案

主裝置號用來標識與裝置檔案相連的驅動程式.用來反映裝置型別.次裝置號被驅動程式用來辨別操作的是哪乙個裝置.用來區分同型別的裝置.通過的是主裝置號.字元裝置檔案 本身沒有太多的內容,通過 字元裝置檔案 能找到 字元裝置驅動程式 字元裝置檔案 能將 應用程式 的需求傳遞給 字元裝置驅動程式.核心中如何描...