九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Linux 設(shè)備文件簡介【作者:金步國】

概述

設(shè)備管理是 Linux 中比較基礎(chǔ)的知識,與內(nèi)核的關(guān)系也比較密切。隨著 Udev 的廣泛使用,Linux 發(fā)行版的智能程度越來越高,許多 Linux 新用戶對 /dev 目錄下的東西變得不再熟悉,有時候遇見問題就會抓狂。

Linux 中的設(shè)備按照存取方式的不同,可以分為兩種:

字符設(shè)備
無緩沖且只能順序存取
塊設(shè)備
有緩沖且可以隨機(jī)(亂序)存取

而按照是否對應(yīng)物理實體,也可以分為兩種:

物理設(shè)備
對實際存在的物理硬件的抽象
虛擬設(shè)備
不依賴于特定的物理硬件,僅是內(nèi)核自身提供的某種功能

無論是哪種設(shè)備,在 /dev 目錄下都有一個對應(yīng)的文件(節(jié)點),并且每個設(shè)備文件都必須有主/次設(shè)備號,主設(shè)備號相同的設(shè)備是同類設(shè)備,使用同一個驅(qū)動程序(雖然目前的內(nèi)核允許多個驅(qū)動共享一個主設(shè)備號,但絕大多數(shù)設(shè)備依然遵循一個驅(qū)動對應(yīng)一個主設(shè)備號的原則)??梢酝ㄟ^ cat /proc/devices 命令查看當(dāng)前已經(jīng)加載的設(shè)備驅(qū)動程序的主設(shè)備號。

內(nèi)核能夠識別的所有設(shè)備都記錄在原碼樹下的 Documentation/devices.txt 文件中。另外,在 http://www.lanana.org/docs/device-list/ 也有一份,貌似已經(jīng)失去維護(hù)。

注意:在 /dev 目錄下除了各種設(shè)備節(jié)點之外還通常還會存在:FIFO管道、Socket、軟/硬連接、目錄。這些東西并不是設(shè)備文件,因此也就沒有主/次設(shè)備號。

設(shè)備文件

了解這些設(shè)備的最基本要求就是對每個設(shè)備文件的含義了如指掌,下面列出了 Linux-3.13.2 內(nèi)核中常見的已注冊設(shè)備及其含義(省略了生僻與罕見的設(shè)備)。

----------------------------------------------------------------------主設(shè)備號     設(shè)備類型          次設(shè)備號=文件名      簡要說明----------------------------------------------------------------------  0         未命名設(shè)備(例如NFS之類非設(shè)備的掛載)          0 = 為空設(shè)備號保留          參見主設(shè)備號為144,145,146的塊設(shè)備,以了解"擴(kuò)展區(qū)域"(expansion area)  1 char    內(nèi)存設(shè)備          1 = /dev/mem         物理內(nèi)存的全鏡像??梢杂脕碇苯哟嫒∥锢韮?nèi)存。          2 = /dev/kmem        內(nèi)核看到的虛擬內(nèi)存的全鏡像??梢杂脕碓L問內(nèi)核中的內(nèi)容(查看內(nèi)核變量或用作rootkit之類)。          3 = /dev/null        空設(shè)備。任何寫入都將被直接丟棄(但返回"成功");任何讀取都將得到EOF(文件結(jié)束標(biāo)志)。          4 = /dev/port        存取I/O端口          5 = /dev/zero        零流源。任何寫入都將被直接丟棄(但返回"成功");任何讀取都將得到無限多的二進(jìn)制零流。          7 = /dev/full        滿設(shè)備。任何寫入都將失敗,并把errno設(shè)為ENOSPC(沒有剩余空間);任何讀取都將得到無限多的二進(jìn)制零流。                               這個設(shè)備通常被用來測試程序在遇到磁盤無剩余空間錯誤時的行為。          8 = /dev/random      真隨機(jī)數(shù)發(fā)生器。以背景噪聲數(shù)據(jù)或硬件隨機(jī)數(shù)發(fā)生器作為熵池,讀取時會返回小于熵池噪聲總數(shù)的隨機(jī)字節(jié)。                               若熵池空了,讀操作將會被阻塞,直到收集到了足夠的環(huán)境噪聲為止。建議用于需要生成高強(qiáng)度密鑰的場合。                               [注意]雖然允許寫入,但企圖通過寫入此文件來"預(yù)存"隨機(jī)數(shù)是徒勞的,因為寫入的數(shù)據(jù)對輸出并無影響。          9 = /dev/urandom     偽隨機(jī)數(shù)發(fā)生器。更快,但是不夠安全。僅用于對安全性要求不高的場合。                               即使熵池空了,讀操作也不會被阻塞,而是把已經(jīng)產(chǎn)生的隨機(jī)數(shù)做為種子來產(chǎn)生新的隨機(jī)數(shù)。                               [注意]雖然允許寫入,但企圖通過寫入此文件來"預(yù)存"隨機(jī)數(shù)是徒勞的,因為寫入的數(shù)據(jù)對輸出并無影響。         10 = /dev/aio         異步I/O通知接口         11 = /dev/kmsg        任何對該文件的寫入都將作為printk的輸出;而讀取則得到printk的輸出緩沖區(qū)內(nèi)容。  1 block   RAM disk   [已過時,請用TMPFS]          0 = /dev/ram0        第1個 RAM disk          1 = /dev/ram1        第2個 RAM disk            ...          [說明]將/dev/ram0用作initrd的做法已過時(因為它僅針對image-initrd格式),當(dāng)下的主流是cpio-initrd格式。  4 char    TTY(終端)設(shè)備          0 = /dev/tty0        當(dāng)前虛擬控制臺          1 = /dev/tty1        第1個虛擬控制臺            ...         63 = /dev/tty63       第63個虛擬控制臺         64 = /dev/ttyS0       第1個UART串口            ...        255 = /dev/ttyS191     第192個UART串口          [說明]"UART串口"是指 8250/16450/16550 UART串行控制芯片  4 block   如果根文件系統(tǒng)以是以只讀方式掛載的,那么就不可能創(chuàng)建真正的設(shè)備節(jié)點,            此時就使用該設(shè)備作為動態(tài)分配的主設(shè)備的別名,并掛載為根文件系統(tǒng)。          0 = /dev/root  5 char    輔助 TTY 設(shè)備          0 = /dev/tty         當(dāng)前 TTY 設(shè)備          1 = /dev/console     系統(tǒng)控制臺(一般是/dev/tty0)          2 = /dev/ptmx        所有 Unix98 PTY master 的復(fù)用器          3 = /dev/ttyprintk   內(nèi)核通過此設(shè)備使用printk發(fā)送內(nèi)嵌的用戶消息(依賴于CONFIG_TTY_PRINTK)         64 = /dev/cua0        對應(yīng)于 ttyS0 的呼出(Callout)設(shè)備            ...        255 = /dev/cua191      對應(yīng)于 ttyS191 的呼出(Callout)設(shè)備  7 char    虛擬控制臺捕捉設(shè)備(這些設(shè)備既允許讀也允許寫)          0 = /dev/vcs         當(dāng)前虛擬控制臺(vc)的文本內(nèi)容          1 = /dev/vcs1        tty1 的文本內(nèi)容            ...         63 = /dev/vcs63       tty63 的文本內(nèi)容        128 = /dev/vcsa        當(dāng)前虛擬控制臺(vc)的文本/屬性內(nèi)容        129 = /dev/vcsa1       tty1 的文本/屬性內(nèi)容            ...        191 = /dev/vcsa63      tty63 的文本/屬性內(nèi)容  7 block   回環(huán)設(shè)備(用一個普通的文件來模擬一個塊設(shè)備)          0 = /dev/loop0       第1個回環(huán)設(shè)備          1 = /dev/loop1       第2個回環(huán)設(shè)備            ...          [提示]對回環(huán)設(shè)備的綁定由 mount(8) 或 losetup(8) 處理  8 block   SCSI 磁盤(0-15)          0 = /dev/sda         第1個 SCSI 磁盤(整個磁盤)         16 = /dev/sdb         第2個 SCSI 磁盤(整個磁盤)         32 = /dev/sdc         第3個 SCSI 磁盤(整個磁盤)            ...        240 = /dev/sdp         第16個 SCSI 磁盤(整個磁盤)        分區(qū)表示方法如下(以第3個 SCSI 磁盤為例)         33 = /dev/sdc1        第1個分區(qū)         34 = /dev/sdc2        第2個分區(qū)            ...         47 = /dev/sdc15       第15個分區(qū)         [提示]對于DOS分區(qū)來說,1-4是主分區(qū),5-15是邏輯分區(qū)。但對于GPT分區(qū)來說,全是主分區(qū),沒有邏輯分區(qū)的概念。         [提示]目前的內(nèi)核將SATA/PATA/IED硬盤統(tǒng)一使用 /dev/sd* 來表示,已經(jīng)不再使用 /dev/hd* 這種過時的設(shè)備文件了。  9 block   Metadisk(RAID)設(shè)備          0 = /dev/md0         第1組 metadisk          1 = /dev/md1         第2組 metadisk            ...          [說明]MD驅(qū)動(CONFIG_BLK_DEV_MD)的作用是將同一個文件系統(tǒng)分割到多個物理磁盤上。 10 char    各種雜項設(shè)備(含非串口鼠標(biāo))          1 = /dev/psaux       PS/2鼠標(biāo)        128 = /dev/beep        能夠讓主板的蜂鳴器發(fā)出不同頻率聲音的設(shè)備(Fancy Beeper Daemon)        130 = /dev/watchdog    看門狗(CONFIG_WATCHDOG)        131 = /dev/temperature 機(jī)器內(nèi)部溫度        135 = /dev/rtc         實時時鐘(Real Time Clock)        143 = /dev/pciconf     PCI配置空間        144 = /dev/nvram       非易失配置RAM        151 = /dev/led         發(fā)光二極管(LED)燈        152 = /dev/kpoll       內(nèi)核輪詢(Poll)驅(qū)動        156 = /dev/lcd         液晶(LCD)顯示屏        161 = /dev/userdma     用戶空間DMA訪問        162 = /dev/smbus       系統(tǒng)管理總線(System Management Bus)        164 = /dev/ipmo        Intel的智能平臺管理(Intelligent Platform Management)接口        165 = /dev/vmmon       VMware虛擬機(jī)監(jiān)視器        170 = /dev/thinkpad/thinkpad    Thinkpad設(shè)備        173 = /dev/ipmikcs     智能平臺管理(Intelligent Platform Management)接口        175 = /dev/agpgart     AGP圖形地址重映射表(Graphics Address Remapping Table)        182 = /dev/perfctr     性能監(jiān)視計數(shù)器        183 = /dev/hwrng       通用硬件隨機(jī)數(shù)發(fā)生器        184 = /dev/cpu/microcode        CPU微代碼更新接口(依賴于CONFIG_MICROCODE)        186 = /dev/atomicps    進(jìn)程狀態(tài)數(shù)據(jù)的原子快照        188 = /dev/smbusbios   SMBus(系統(tǒng)管理總線) BIOS        189 = /dev/ussp_ctl    用戶空間串口控制器        200 = /dev/net/tun     TAP/TUN 網(wǎng)絡(luò)設(shè)備(TAP/TUN以軟件的方式實現(xiàn)了網(wǎng)絡(luò)設(shè)備)                               TAP模擬了以太網(wǎng)幀(第二層),TUN模擬了IP包(第三層)。        202 = /dev/emd/ctl     增強(qiáng)型 Metadisk RAID (EMD) 控制器        203 = /dev/cuse        用戶空間的字符設(shè)備(Character device in user-space)        212 = /dev/watchdogs/0 第一只看門狗        213 = /dev/watchdogs/1 第二只看門狗        214 = /dev/watchdogs/2 第三只看門狗        215 = /dev/watchdogs/3 第四只看門狗        220 = /dev/mptctl      Message passing technology (MPT) control        223 = /dev/input/uinput         用戶層輸入設(shè)備        224 = /dev/tpm         TCPA TPM driver        227 = /dev/mcelog      X86_64 Machine Check Exception driver        228 = /dev/hpet        高精度事件定時器(HPET)        229 = /dev/fuse        Fuse(用戶空間的虛擬文件系統(tǒng))        231 = /dev/snapshot    系統(tǒng)內(nèi)存快照        232 = /dev/kvm         內(nèi)核虛構(gòu)機(jī)(基于AMD SVM和Intel VT硬件虛擬技術(shù))        234 = /dev/btrfs-control        Btrfs文件系統(tǒng)控制設(shè)備        235 = /dev/autofs      Autofs控制設(shè)備        236 = /dev/mapper/control       設(shè)備映射(Device-Mapper)控制器        237 = /dev/loop-control         回環(huán)設(shè)備控制器        238 = /dev/vhost-net   用于 virtio net 的宿主內(nèi)核加速器 11 block   SCSI CD-ROM 設(shè)備          0 = /dev/scd0        第1個 SCSI CD-ROM          1 = /dev/scd1        第2個 SCSI CD-ROM            ... 13 char    核心輸入設(shè)備          0 = /dev/input/js0   第一個游戲桿(joystick)          1 = /dev/input/js1   第二個游戲桿(joystick)            ...         32 = /dev/input/mouse0         第1個鼠標(biāo)         33 = /dev/input/mouse1         第2個鼠標(biāo)            ...         63 = /dev/input/mice  所有鼠標(biāo)的合體         64 = /dev/input/event0         第1個事件隊列         65 = /dev/input/event1         第2個事件隊列            ... 14 char    OSS(Open Sound System)兼容設(shè)備[已過時]          0 = /dev/mixer       OSS混音控制器(CONFIG_SND_MIXER_OSS)          1 = /dev/sequencer   OSS音序器(CONFIG_SND_SEQUENCER_OSS)          3 = /dev/dsp         OSS數(shù)字音頻波形輸出設(shè)備(CONFIG_SND_PCM_OSS)          8 = /dev/sequencer2  第二OSS音序器(CONFIG_SND_SEQUENCER_OSS)         16 = /dev/mixer1      第二OSS混音控制器(CONFIG_SND_MIXER_OSS)         19 = /dev/dsp1        第二OSS數(shù)字音頻波形輸出設(shè)備(CONFIG_SND_PCM_OSS) 21 char    通用 SCSI 設(shè)備(通常是SCSI光驅(qū))          0 = /dev/sg0         第1個通用 SCSI 設(shè)備          1 = /dev/sg1         第2個通用 SCSI 設(shè)備            ...           [說明]許多發(fā)行版還將這些設(shè)備命名為 /dev/sga, /dev/sgb, /dev/sgc ... 29 char    通用幀緩沖(frame buffer)設(shè)備          0 = /dev/fb0         第1個幀緩沖設(shè)備          1 = /dev/fb1         第2個幀緩沖設(shè)備            ...         31 = /dev/fb31        第32個幀緩沖設(shè)備 43 block   網(wǎng)絡(luò)塊設(shè)備(Network block devices)          0 = /dev/nb0         第1個網(wǎng)絡(luò)塊設(shè)備          1 = /dev/nb1         第2個網(wǎng)絡(luò)塊設(shè)備            ... 44 block   閃存轉(zhuǎn)換層(Flash Translation Layer)文件系統(tǒng)          0 = /dev/ftla        第1個MTD(Memory Technology Device)上的FTL         16 = /dev/ftlb        第2個MTD(Memory Technology Device)上的FTL         32 = /dev/ftlc        第3個MTD(Memory Technology Device)上的FTL            ...        240 = /dev/ftlp        第16個MTD(Memory Technology Device)上的FTL          [說明]分區(qū)的表示方法與SCSI磁盤相同(最大15個) 65 block   SCSI 磁盤(16-31)          0 = /dev/sdq         第17個 SCSI 磁盤(整個磁盤)         16 = /dev/sdr         第18個 SCSI 磁盤(整個磁盤)         32 = /dev/sds         第19個 SCSI 磁盤(整個磁盤)            ...        240 = /dev/sdaf        第32個 SCSI 磁盤(整個磁盤) 66 block   SCSI 磁盤(32-47)          0 = /dev/sdag        第33個 SCSI 磁盤(整個磁盤)         16 = /dev/sdah        第34個 SCSI 磁盤(整個磁盤)         32 = /dev/sdai        第35個 SCSI 磁盤(整個磁盤)            ...        240 = /dev/sdav        第48個 SCSI 磁盤(整個磁盤) 67 block   SCSI 磁盤(48-63)          0 = /dev/sdaw        第49個 SCSI 磁盤(整個磁盤)         16 = /dev/sdax        第50個 SCSI 磁盤(整個磁盤)         32 = /dev/sday        第51個 SCSI 磁盤(整個磁盤)            ...        240 = /dev/sdbl        第64個 SCSI 磁盤(整個磁盤) 81 char    video4linux          0 = /dev/video0      第1個視頻采集設(shè)備(攝像頭)            ...         63 = /dev/video63     第64個視頻采集設(shè)備(攝像頭)         64 = /dev/radio0      第1個無線電設(shè)備(收音機(jī)之類)            ...        127 = /dev/radio63     第64個無線電設(shè)備(收音機(jī)之類)        224 = /dev/vbi0        第1個垂直中斷(vertical blank interrupt)            ...        255 = /dev/vbi31       第64個垂直中斷(vertical blank interrupt) 89 char    I2C 總線接口          0 = /dev/i2c-0       第1個 I2C 適配器          1 = /dev/i2c-1       第2個 I2C 適配器            ... 90 char    內(nèi)存技術(shù)設(shè)備(Memory Technology Device) (RAM, ROM, Flash)          0 = /dev/mtd0        第1個 MTD (讀寫)          1 = /dev/mtdr0       第1個 MTD (只讀)            ...         30 = /dev/mtd15       第16個 MTD (讀寫)         31 = /dev/mtdr15      第16個 MTD (只讀) 93 block   NAND閃存轉(zhuǎn)換層(Flash Translation Layer)文件系統(tǒng)          0 = /dev/nftla       第1個NFTL層         16 = /dev/nftlb       第2個NFTL層            ...        240 = /dev/nftlp       第16個NFTL層          [說明]分區(qū)的表示方法與SCSI磁盤相同(最大15個) 98 block   用戶模式下的虛擬塊設(shè)備(分區(qū)處理方式與 SCSI 磁盤相同)          0 = /dev/ubda        第1個用戶模式塊設(shè)備         16 = /dev/udbb        第2個用戶模式塊設(shè)備            ...108 char    獨立于特定設(shè)備的 PPP 接口          0 = /dev/ppp         獨立于特定設(shè)備的 PPP 接口(CONFIG_PPP)117 block   企業(yè)卷管理系統(tǒng)(Enterprise Volume Management System)          0 = /dev/evms/block_device   EVMS塊設(shè)備          1 = /dev/evms/legacyname1    第1個EVMS傳統(tǒng)設(shè)備          2 = /dev/evms/legacyname2    第2個EVMS傳統(tǒng)設(shè)備            ...            兩個范圍都可以相互延伸(向上/向下)一直到它們相遇            ...        254 = /dev/evms/EVMSname2      第2個EVMS本地設(shè)備        255 = /dev/evms/EVMSname1      第1個EVMS本地設(shè)備           [說明]"legacyname"來源于普通的塊設(shè)備名,                 例如 /dev/sda5 將會變成 /dev/evms/sda5119 char    VMware虛擬網(wǎng)路控制器          0 = /dev/vnet0       第1個虛擬網(wǎng)路          1 = /dev/vnet1       第2個虛擬網(wǎng)路            ...128-135 char    Unix98 PTY master            這些設(shè)備不應(yīng)當(dāng)存在設(shè)備節(jié)點,而應(yīng)當(dāng)通過 /dev/ptmx 接口訪問。136-143 char    Unix98 PTY slave          0 = /dev/pts/0    第1個 Unix98 PTY slave          1 = /dev/pts/1    第2個 Unix98 PTY slave            ...            這些設(shè)備節(jié)點是自動生成的(伴有適當(dāng)?shù)臋?quán)限和模式),不能手動創(chuàng)建。            方法是通過使用適當(dāng)?shù)?mount 選項(通常是:mode=0620,gid=<"tty"組的gid>)            將 devpts 文件系統(tǒng)掛載到 /dev/pts 目錄即可。144 block   用于更多非設(shè)備型掛載的擴(kuò)展區(qū)域(Expansion Area)#1          0 = mounted device 256        255 = mounted device 511145 block   用于更多非設(shè)備型掛載的擴(kuò)展區(qū)域(Expansion Area)#2          0 = mounted device 512        255 = mounted device 767146 block   用于更多非設(shè)備型掛載的擴(kuò)展區(qū)域(Expansion Area)#3          0 = mounted device 768        255 = mounted device 1023147 block   DRBD(Distributed Replicated Block Device)          0 = /dev/drbd0       第1個 DRBD 設(shè)備          1 = /dev/drbd1       第2個 DRBD 設(shè)備            ...153 block   EMD(Enhanced Metadisk RAID)存儲單元(分區(qū)處理方式與 SCSI 磁盤相同)          0 = /dev/emd/0       第1個存儲單元          1 = /dev/emd/0p1     第1個存儲單元的第1個分區(qū)          2 = /dev/emd/0p2     第1個存儲單元的第2個分區(qū)            ...         15 = /dev/emd/0p15    第1個存儲單元的第15個分區(qū)         16 = /dev/emd/1       第2個存儲單元         32 = /dev/emd/2       第3個存儲單元            ...        240 = /dev/emd/15      第16個存儲單元179 block   MMC(MultiMeidaCard)塊設(shè)備          0 = /dev/mmcblk0     第1塊 SD/MMC 卡          1 = /dev/mmcblk0p1   第1塊 SD/MMC 卡的第1個分區(qū)          8 = /dev/mmcblk1     第2塊 SD/MMC 卡            ...          [說明]每個MMC塊設(shè)備保留的次設(shè)備號數(shù)量由 CONFIG_MMC_BLOCK_MINORS 決定(默認(rèn)=8)。               或者也可以通過內(nèi)核引導(dǎo)參數(shù) mmcblk.perdev_minors 進(jìn)行修改。180 char    USB字符設(shè)備          0 = /dev/usb/lp0      第1個USB打印機(jī)            ...         15 = /dev/usb/lp15     第16個USB打印機(jī)         48 = /dev/usb/scanner0 第1個USB掃描儀            ...         63 = /dev/usb/scanner15  第16個USB掃描儀         96 = /dev/usb/hiddev0  第1個USB人機(jī)界面設(shè)備(鼠標(biāo)/鍵盤/游戲桿/手寫版等)            ...        111 = /dev/usb/hiddev15 第16個USB人機(jī)界面設(shè)備(鼠標(biāo)/鍵盤/游戲桿/手寫版等)        132 = /dev/usb/idmouse  ID Mouse (指紋掃描儀)180 block   USB塊設(shè)備          0 = /dev/uba         第1個USB塊設(shè)備          8 = /dev/ubb         第2個USB塊設(shè)備         16 = /dev/ubc         第3個USB塊設(shè)備             ...192 char    內(nèi)核 profiling 接口          0 = /dev/profile     Profiling 控制設(shè)備          1 = /dev/profile0    CPU 0 的 Profiling 設(shè)備          2 = /dev/profile1    CPU 1 的 Profiling 設(shè)備            ...193 char    內(nèi)核事件跟蹤接口          0 = /dev/trace       跟蹤控制設(shè)備          1 = /dev/trace0      CPU 0 的跟蹤設(shè)備          2 = /dev/trace1      CPU 1 的跟蹤設(shè)備            ...195 char    Nvidia 圖形設(shè)備(比如顯卡)          0 = /dev/nvidia0     第1個 Nvidia 卡          1 = /dev/nvidia1     第2個 Nvidia 卡            ...        255 = /dev/nvidiactl   Nvidia卡控制設(shè)備202 char    特定于CPU模式的寄存器(model-specific register,MSR)          0 = /dev/cpu/0/msr   CPU 0 的 MSRs          1 = /dev/cpu/1/msr   CPU 1 的 MSRs            ...202 block   Xen 虛擬塊設(shè)備          0 = /dev/xvda        第1個 Xen 虛擬磁盤(整塊磁盤)         16 = /dev/xvdb        第2個 Xen 虛擬磁盤(整塊磁盤)         32 = /dev/xvdc        第3個 Xen 虛擬磁盤(整塊磁盤)            ...        240 = /dev/xvdp        第16個 Xen 虛擬磁盤(整塊磁盤)          [說明]分區(qū)的表示方法與SCSI磁盤相同(最大15個)203 char    CPU CPUID 信息          0 = /dev/cpu/0/cpuid  CPU0的CPUID          1 = /dev/cpu/1/cpuid  CPU1的CPUID            ...226 char    DRI(Direct Rendering Infrastructure)          0 = /dev/dri/card0   第1個顯卡          1 = /dev/dri/card1   第2個顯卡            ...232 char    生物識別設(shè)備          0 = /dev/biometric/sensor0/fingerprint  第1個設(shè)備的第1個指紋傳感器          1 = /dev/biometric/sensor0/iris         第1個設(shè)備的第1個虹膜傳感器          2 = /dev/biometric/sensor0/retina       第1個設(shè)備的第1個視網(wǎng)膜傳感器          3 = /dev/biometric/sensor0/voiceprint   第1個設(shè)備的第1個聲波傳感器          4 = /dev/biometric/sensor0/facial       第1個設(shè)備的第1個面部傳感器          5 = /dev/biometric/sensor0/hand         第1個設(shè)備的第1個手掌傳感器            ...         10 = /dev/biometric/sensor1/fingerprint  第2個設(shè)備的第1個指紋傳感器            ...         20 = /dev/biometric/sensor2/fingerprint  第3個設(shè)備的第1個指紋傳感器            ...

/dev 目錄中的其他內(nèi)容

這部分詳細(xì)說明一些應(yīng)該或可能存在于 /dev 目錄中的其他文件。鏈接最好使用與這里完全相同的格式(絕對路徑或相對路徑)。究竟是使用硬鏈接(hard)還是軟連接(symbolic)取決于不同的設(shè)備,但最好與這里給出示范保持一致。

必須的鏈接

必須在所有的系統(tǒng)上都存在這些連接:

鏈接             目標(biāo)             鏈接類型          簡要說明------------------------------------------------------------------------/dev/fd         /proc/self/fd   symbolic        文件描述符/dev/stdin      fd/0            symbolic        stdin(標(biāo)準(zhǔn)輸入)文件描述府/dev/stdout     fd/1            symbolic        stdout(標(biāo)準(zhǔn)輸出)文件描述府/dev/stderr     fd/2            symbolic        stderr(標(biāo)準(zhǔn)錯誤)文件描述府/dev/nfsd       socksys         symbolic        僅為 iBCS-2 所必須/dev/X0R        null            symbolic        僅為 iBCS-2 所必須

推薦的鏈接

推薦在所有的系統(tǒng)上都存在這些連接:

鏈接             目標(biāo)             鏈接類型          簡要說明------------------------------------------------------------------------/dev/core       /proc/kcore     symbolic        為了向后兼容/dev/ramdisk    ram0            symbolic        為了向后兼容/dev/ftape      qft0            symbolic        為了向后兼容/dev/bttv0      video0          symbolic        為了向后兼容/dev/radio      radio0          symbolic        為了向后兼容/dev/i2o*       /dev/i2o/*      symbolic        為了向后兼容/dev/scd?       sr?             hard            代替 SCSI CD-ROM 的名字

本地定義的鏈接

下面的鏈接很可能需要根據(jù)機(jī)器的實際硬件配置創(chuàng)建其中的一部分甚至全部。這些鏈接僅僅是為了迎合習(xí)慣用法,它們既非必須也非推薦。

鏈接             目標(biāo)             鏈接類型          簡要說明------------------------------------------------------------------------/dev/mouse      鼠標(biāo)設(shè)備        symbolic        當(dāng)前鼠標(biāo)設(shè)備/dev/tape       磁帶設(shè)備        symbolic        當(dāng)前磁帶設(shè)備/dev/cdrom      光盤設(shè)備        symbolic        當(dāng)前光盤設(shè)備/dev/cdwriter   刻錄機(jī)設(shè)備      symbolic        當(dāng)前刻錄機(jī)設(shè)備/dev/scanner    掃描儀設(shè)備      symbolic        當(dāng)前掃描儀設(shè)備/dev/modem      調(diào)制解調(diào)器(貓)   symbolic        當(dāng)前撥號設(shè)備/dev/root       根文件系統(tǒng)設(shè)備   symbolic        當(dāng)前根文件系統(tǒng)設(shè)備/dev/swap       swap設(shè)備       symbolic        當(dāng)前swap設(shè)備

/dev/modem 不應(yīng)當(dāng)用于能夠同時支持接入(dialin)和呼出(dialout)的貓,因為往往會導(dǎo)致鎖文件問題。如果存在 /dev/modem ,那么它應(yīng)當(dāng)指向一個恰當(dāng)?shù)闹?TTY 設(shè)備。

對于SCSI設(shè)備,/dev/tape 應(yīng)該指向 /dev/st* ,而 /dev/cdrom 應(yīng)該指向 /dev/sr* ;而 /dev/cdwriter 和 /dev/scanner 應(yīng)當(dāng)分別指向?qū)?yīng)的 /dev/sg* 。

/dev/mouse 可以指向一個主串行 TTY 設(shè)備、一個硬件鼠標(biāo)、或者一個對應(yīng)鼠標(biāo)驅(qū)動程序的套接字(例如 /dev/gpmdata )。

套接字和管道

持久套接字和命名管道可以存在于 /dev 中。常見的有:

/dev/printer    socket          lpd 本地套接字/dev/log        socket          syslog 本地套接字/dev/gpmdata    socket          gpm 鼠標(biāo)多路復(fù)用器(multiplexer)/dev/initctl    fifo pipe       init 監(jiān)聽它并從中獲取信息(用戶與 init 進(jìn)程交互的通道)

掛載點

以下目錄被保留用于掛載特殊的文件系統(tǒng)。這些特殊的文件系統(tǒng)只提供內(nèi)核接口而不提供標(biāo)準(zhǔn)的設(shè)備節(jié)點。

/dev/pts        devpts          PTY slave 文件系統(tǒng)/dev/shm        tmpfs           提供對 POSIX 共享內(nèi)存的直接訪問

終端設(shè)備

終端(或TTY)設(shè)備是一種特殊的字符設(shè)備。終端設(shè)備是可以在會話中用作控制終端的任何設(shè)備,包括:虛擬控制臺、串行接口、偽終端(PTY)。

所有終端設(shè)備共享一個通用的功能集合(線路規(guī)則),這包含常規(guī)的終端線路規(guī)程以及SLIP和PPP模式。所有的終端設(shè)備的命名都很相似。這部分內(nèi)容將解釋命名規(guī)則和各種類型的TTY(終端)的使用。需要注意的是這些命名習(xí)慣包含了幾個歷史遺留包袱。其中的一些是Linux所特有的,另一些則是繼承自其他系統(tǒng),還有一些反映了Linux在成長過程中拋棄了原來借用自其它系統(tǒng)的一些習(xí)慣。井號(#)在設(shè)備名里表示一個無前導(dǎo)零的十進(jìn)制數(shù)。

虛擬控制臺和控制臺設(shè)備

虛擬控制臺是在系統(tǒng)視頻監(jiān)視器上顯示的全屏終端。虛擬控制臺被命名為 /dev/tty# (編號從 /dev/tty1 開始)。/dev/tty0 是當(dāng)前虛擬控制臺。/dev/tty0 用于在不能使用幀緩沖設(shè)備(/dev/fb*)的機(jī)器上存取系統(tǒng)顯卡,但 /dev/console 并不用于此目的??刂婆_設(shè)備(/dev/console)由內(nèi)核直接管理,用于接收和顯示系統(tǒng)消息,以及單用戶模式登陸。

串行接口

這里所說的"串行接口"是指 RS-232 串口和任何模擬這種接口的設(shè)備,無論是硬件(如調(diào)制解調(diào)器)還是軟件(如ISDN驅(qū)動)。Linux中的每一個串口都有兩個設(shè)備名:主設(shè)備或呼入(callin)設(shè)備、輔設(shè)備或呼出(callout)設(shè)備。兩者之間使用字母的大小寫進(jìn)行區(qū)分。比如,對于任意字母"X",設(shè)備名分別為 /dev/ttyX# 與 /dev/cux# 。由于歷史原因,/dev/ttyS# 和 /dev/ttyC# 分別等價于 /dev/cua# 和 /dev/cub# 。名稱 /dev/ttyQ# 和 /dev/cuq# 被保留為僅供本地使用。

串口的仲裁是通過鎖文件(/var/lock/LCK..ttyX#)來提供的。鎖文件的內(nèi)容應(yīng)該是以ASCII碼表示的鎖定進(jìn)程的PID。常見的做法是安裝一個諸如 /dev/modem 這樣的鏈接來指向串口。為了確保能夠正確的預(yù)先鎖定這些鏈接,軟件應(yīng)該追蹤符號鏈接并鎖定所有可能的名字。此外,還建議為相應(yīng)的輔設(shè)備安裝對應(yīng)的鎖文件。為了避免死鎖,建議按以下順序獲取鎖,并按相反的順序釋放鎖:

  1. 符號鏈接名,如果有(/var/lock/LCK..modem)
  2. "tty"名(/var/lock/LCK..ttyS2)
  3. 輔設(shè)備名(/var/lock/LCK..cua2)

在符號鏈接出現(xiàn)嵌套的情況下,鎖文件應(yīng)按照符號鏈接的解析順序來安裝。

在任何情況下,應(yīng)用程序都應(yīng)該等待另一個程序釋放鎖之后,再持有這個鎖。此外,試圖為輔設(shè)備創(chuàng)建鎖文件的應(yīng)用程序應(yīng)考慮被用于非串口的TTY端口的可能性(此時不存在輔設(shè)備)。

偽終端(PTY)

偽終端既可以用于創(chuàng)建登陸會話,也可以為其他需要通過TTY線路規(guī)則(包括SLIP或者PPP功能)來生成數(shù)據(jù)的進(jìn)程提供幫助。每一個 PTY 都有一個master端和一個slave端。按照 System V/Unix98 的 PTY 命名方案,所有master端共享同一個 /dev/ptmx 設(shè)備節(jié)點(打開它內(nèi)核將自動給出一個未分配的PTY),所有slave端都位于 /dev/pts/ 目錄下,名為 /dev/pts/# (內(nèi)核會根據(jù)需要自動生成和刪除它們)。

一旦master端被打開,相應(yīng)的slave設(shè)備就可以按照與 TTY 設(shè)備完全相同的方式使用。master設(shè)備與slave設(shè)備之間通過內(nèi)核進(jìn)行連接,等價于擁有 TTY 功能的雙向管道(pipe)。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
終端 偽終端 控制終端
從串口驅(qū)動到Linux驅(qū)動模型
系統(tǒng)控制臺
對于Linux內(nèi)核tty設(shè)備的一點理解
終端tty、虛擬控制臺、FrameBuffer的切換過程詳解 - 柳梢月的專欄 - CSD...
tty0代表的是什么設(shè)備?
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服