Linux

Linux 命令行中的多個 root 選項

  • November 2, 2012

我的核心命令行如下所示:

root=31:0 ro noinitrd console=ttyS0,115200 root=/dev/mtdblock2 rootfstype=squashfs

我認為第一個root條目通過其主要和次要設備號標識磁碟,第二個條目通過其名稱標識它。我可以確認rootfs確實打開了,/dev/mtdblock2但我不知道如何解釋31:0

當您多次提供相同的選項時,不同的模組的行為會有所不同。我知道你可以說console=多次,你會得到多個控制台(我們將它用於在幀緩衝區和串列埠上都有主控制台的機器)。

但是,您只能有一個根分區,因此root=幾乎可以肯定會覆蓋以前看到的值,幾乎可以肯定是以從左到右的方式。核心原始碼證實了這一點,在 中init/do_mounts.c,函式root_dev_setup()負責對root=選項進行操作,它所做的只是將參數鍵儲存在變數中。bootparamroot=31:0被 覆蓋root=/dev/mtdblock2,或者至少在我剛剛檢查的 2.6.25 原始碼樹中是這種情況。

順便說一句,如果你精通C,name_to_dev_t()同一個文件中的函式負責解析 的值root=,非常有啟發性!

表示法是主要的x:y標準 Unix 主義:次要,這是 Unices 辨識設備的方式。傳統上,major是標識硬體驅動程序的 8 位數字,minor是標識設備本身的 8 位數字。數字有兩個命名空間major:字元設備和塊設備。您可以通過鍵入來查看兩者cat /proc/devices,並且可以通過說來查看目前處於活動狀態的內容ls -la /dev。這是一個例子:

ls -la /dev/zero /dev/sda
brw-rw---- 1 root disk 8, 0 Jan 12 22:01 /dev/sda
crw-rw-rw- 1 root root 1, 5 Jan 12 22:01 /dev/zero

第一列標識驅動程序類型(b對於塊,c對於字元)。左側的兩列是格式Jan中的主要和次要數字。major, minor

您可以root=使用major:minor 符號為任何塊設備提供獨立於其名稱的名稱。

設備編號的完整列表位於核心原始碼樹的Documentation/devices.txt. 31:0 似乎是指 /dev/rom0,系統上的第一個 ROM 卡。

引用自:https://unix.stackexchange.com/questions/29017