睿豐德科技 專注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中間件 條碼系統中間層 物聯網軟件集成