<menu id="w8yyk"><menu id="w8yyk"></menu></menu>
  • <dd id="w8yyk"><nav id="w8yyk"></nav></dd>
    <menu id="w8yyk"></menu>
    <menu id="w8yyk"><code id="w8yyk"></code></menu>
    <menu id="w8yyk"></menu>
    <xmp id="w8yyk">
    <xmp id="w8yyk"><nav id="w8yyk"></nav>
  • 網站首頁 > 物聯資訊 > 技術分享

    linux中的設備名稱和設備號

    2016-09-28 00:00:00 廣州睿豐德信息科技有限公司 閱讀
    睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接

    看趙炯博士的《linux 0.11 源代碼注釋》已經兩三周了,從今天起開始將一些個人總結和感悟分小標題寫出來,聊作記憶以供后來查看。
    在linux0.11源碼的 /linux/boot/bootsect.s中,有一個標號定義ROOT_DEV

    ! ROOT_DEV: 0x000 - same type of floppy as boot.
    ! 0x301 - first partition on first drive etc
    ROOT_DEV = 0x306

    這里,ROOT_DEV是系統指定的根文件系統的設備號。大家都知道linux系統中“一切都是文件”,所以設備也是文件,這里的0x306就是根文件系統所在的設備對應的設備號。
    這里要注意:Linux0.11中使用的設備號命名方式是老式命名規則,和今天的Linux系統設備號命名規則不同。下面分別進行說明。

    1、老式Linux設備號命名規則:
    設備號 = 主設備號 * 256 + 次設備號   (dev_no = (major << 8) + minor)。這里的主設備號是事先定義好的(1-內存,2-磁盤,3-硬盤,4-ttyx,5-tty,6-并行口,7-非命名管道),譬如對于硬盤,主設備號為3,因此3*256+0=0x300即為系統中第一個硬盤的設備號,依次有以下命名:
    設備號 設備文件 對應的設備
    0x300 /dev/hd0 系統中第一個硬盤
    0x301 /dev/hd1 系統中第一個硬盤的第一分區
    0x302 /dev/hd2 系統中第一個硬盤的第二分區
    0x303 /dev/hd3 系統中第一個硬盤的第三分區
    0x304 /dev/hd4 系統中第一個硬盤的第四分區

    0x305 /dev/hd5 系統中第二個硬盤
    0x306 /dev/hd6 系統中第二個硬盤的第一分區
    ······

    2、現代Linux設備號命名規則:
    現代Linux要管理的設備種類非常豐富,包括硬盤、U盤、打印機等各種設備。我們仍以硬盤為目標來說明設備命名規則。linux將硬盤分為兩類:第一類是傳統的IDE硬盤,使用hd標示;第二種是SATA、SCSI、USB硬盤、U盤(嚴格的說U盤不算硬盤)等,均用sd標示;(hd和sd即這兩種硬盤的主設備名)。
    因此,對于系統中的IDE硬盤,分別用hda,hdb,hdc,hdd來標示1號~4號硬盤(一般主要最多支持4個硬盤。而我們平時使用1塊硬盤時,常將其裝在主IDE上的主接口上因此單硬盤時硬盤設備名一般是hda)。hda后面的數字用來標示這塊硬盤的各個分區,如下:

    設備文件 對應的設備
    /dev/hda  主IDE的主接口上的硬盤,即系統第一個硬盤
    /dev/hda1  第一個硬盤的第一個主分區
    /dev/hda2  第一個硬盤的第二個主分區
    /dev/hda3  第一個硬盤的第三個主分區
    /dev/hda4  第一個硬盤的第四個分區,即擴展分區
    /dev/hda5  第一個硬盤的第一個邏輯分區
    /dev/hda6  第一個硬盤的第二個邏輯分區
    ······
    /dev/hdb  主IDE的從接口上的硬件,即系統第二個硬盤
    /dev/hdb1  第二個硬盤的第一個主分區
    ······
    對于SATA,SCSI,USB硬盤,U盤等,只要把hd改成sd就可以了。命名規則是相同的。

    對比與總結:
    1、老式命名方法中只有hd,估計是當時只有IDE硬盤的緣故吧。實際上現在IDE硬盤已經很少用了,查了下我的機子就是SATA硬盤的,用sd。
    2、老式命名中沒有考慮邏輯分區,所以每個硬盤需要占用5個數字標示(譬如第一個硬盤末尾從0~4)。而現代命名中硬盤代號改為abcd,后面的分區才用數字標示。并且有一個細節就是分區號是從1開始的,不是0(我猜這樣設計是為了和之前老式命名兼容。因為老式命名中數字0代表整個硬盤,分區號也是從1開始的。因此即使現代命名硬盤名直接hda也沒有hda0,然后第一個分區還是hda1)。
    3、每個硬盤只能有四個主分區和擴展分區(三個主分區+一個擴展分區,或者四個主分區),這個是由硬盤本身決定的,跟操作系統沒關系。
         每個硬盤最多只能有一個擴展分區,這個是由操作系統限制的。我的理解,擴展分區只是標志該分區處被再次分成多個邏輯分區了,因此擴展分區相當于邏輯分區的容器而已,沒有必要多個,因此OS限制了擴展分區最多只能有一個。

    RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成
    最近免费观看高清韩国日本大全