mknod 命令的用法

來源:互聯網
上載者:User
mknod - make block or character special files
mknod [OPTION]... NAME TYPE [MAJOR MINOR]
option 有用的就是 -m 了
name 自訂
type 有 b 和 c 還有 p
主裝置號
次裝置號

主裝置號是由/usr/src/linux/include/linux/major.h定義的,如下定義了一個DOC裝置:
#define IGEL_FLASH_MAJOR 62

假如有一個命令mknod doc b 62 0 :
其中的doc為定義的名字,b指塊裝置,0指的是整個DOC。如果把0換為1,則1指的是DOC的第一個分區。2是第2個,依次類推。

至於mknod console c 5 1 的意思也很相似:
console是裝置的名字
c指字元裝置
5是該裝置在major.h中定義的標記
1是第一個子裝置

mknod console c 5 1
console為裝置檔案名稱,自己隨便取
c是指字元型裝置 (可選b,塊裝置)
5是主裝置號 /dev/devices裡面記錄現有的裝置
找個沒有用的就可以了
1是次裝置號,當你要給兩個同樣的裝置上一個驅動的時候就要分了,從0開始,1就是第二個了

裝置檔案

對於每種硬體裝置,系統核心有相應的裝置驅動程式負責對它的處理。而在Unix中,使用裝置檔案的方式來表示硬體裝置,每種裝置驅動程式都被抽象為裝置檔案的形式,這樣就給應用程式一個一致的檔案介面,方便應用程式和作業系統之間的通訊。

習慣上,所有的裝置檔案都放置在/dev目錄下。

$ ls -l /dev/rfd0 /dev/fd0

brw-r----- 9 root operator 2, 0 Nov 12 13:32 /dev/fd0

crw-r----- 9 root operator 9, 0 Nov 12 13:32 /dev/rfd0

在上面的列表中可以看到原來顯示檔案大小的地方,現在改為顯示兩個用逗號分隔的數字。這是系統用來表示裝置的兩個重要的序號,第一個為主裝置號(major number),用來表示裝置使用的硬體驅動程式在系統中的序號;第二個為從裝置號(minor number),硬體驅動程式使用它來區分不同的裝置和判斷如何進行處理。FreeBSD下主裝置號用8位表示,而從裝置號用24位來表示。事實上裝置檔案的名字並不重要,重要的是這兩個裝置號,作業系統使用它確定硬體驅動程式,並與硬體驅動程式進行通訊。

1) 磁碟和塊裝置檔案
在Unix下將裝置分為兩種,塊裝置和字元裝置,其中塊裝置主要用於隨機存取的目的,磁碟為這一類裝置的代表,而字元裝置用於順序存取的目的,例如磁帶或終端裝置就屬於這個類別。

磁碟裝置的命名方式在前一章中提到過,磁碟裝置由磁碟名、磁碟的序號、分區的序號、以及FreeBSD子分區的序號來表示,例如在裝置 wd0s1a中,wd為驅動程式,此後為裝置序號,0表示為這個驅動程式的第一個裝置,Unix習慣上從0開始計數,第三部分的分區序號為s1,注意這裡為第一個分區,因為s1是從1開始向下排列的,與一般Unix的習慣不同,這是因為分區的概念是一個DOS概念,因此這裡也使用與DOS相對應的順序,最後一個a為FreeBSD子分區的順序,每個UFS基本分區可以有8個子分區,這8個分區按照習慣用於不同的目的,例如wd0s1a用於根檔案系統, wd0s1b用做交換分區,使用wd0s1c表示整個硬碟分區wd0s1。因此可以將fd0c用於對整個磁碟片fd0進行存取,wcd0c用於對整個光碟片 wcd0進行存取等。

傳統名字,例如wd0a,可以用於表示第一個UFS分區上的a子分區,如wd0s1a。一般一個硬碟上只有一個UFS分區,因此可以直接使用傳統名字標識磁碟分割。

在使用ls命令列表時,系統使用c(character)標識一個字元裝置檔案,使用b(block)標識塊裝置檔案。

$ ls -l /dev/*wd0s1

crw-r----- 1 root operator 3, 131072 Oct 31 19:59 /dev/rwd0s1

brw-r----- 1 root operator 0, 131072 Oct 31 19:59 /dev/wd0s1

雖然硬碟裝置為塊裝置,用於隨機存取的目的。但它也可以被順序存取,這種方式稱為raw方式。使用raw方式存取硬碟,就需要一個對應的字元類型的裝置檔案,對應wd0s1硬碟裝置的字元類型硬碟裝置為rwd0s1,裝置名稱中第一個字母使用r表示對硬碟的raw方式順序存取。

由於裝置檔案就代表了整個裝置,就可以使用 FreeBSD的標準命令以raw方式直接操作裝置檔案,從而直接存取硬體裝置。利用這種方式,能完成很多有用的工作,但是這種方式也非常危險,例如對硬碟裝置檔案的操作失誤會破壞整個硬碟的資料。幸好大部分直接存取裝置的操作都為讀取相應資料的操作,而不需要寫入磁碟裝置。

當某個裝置不可使用,則其對應的裝置檔案也不能正常訪問,因此直接存取裝置檔案可以判斷對應的裝置是否真正正常。例如,判斷串連到第一個串口, ttyd0上的滑鼠是否正常工作,使用命令 “cat

  • 上一篇:nm 命令的用法
  • 下一篇:sed 命令的用法
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.