如何處理非決定性硬碟分配?

如何處理非決定性硬碟分配?

我最近在我的 Arch Linux 電腦上安裝了另一個硬碟。我第一次啟動時一切正常。下次我重新啟動電腦時,我收到了一個/dev/sda2 not found錯誤。

看,基本上有時我的啟動硬碟是sda,有時是sdb。它似乎是完全隨機的,我在 BIOS 中沒有看到任何使其非隨機的選項。我該如何解決?

答案1

如果你的兩個硬碟位於不同的介面並由不同的驅動程式控制,Linux將按照驅動程式初始化的順序命名它們。如果初始化是並行的,這確實會導致裝置名稱分配發生變化。

設備名稱由以下方式分配烏德夫。 Arch wiki 中提到了你的問題,但那裡似乎沒有解決方案。

我對Arch不熟悉,所以我會解釋一下在Ubuntu中如何解決這個問題;底層功能由 Linux 核心提供,這是相同的,但可能存在一些配置設置,使這些功能在 Arch 上以不同的方式運作。

您可以使用 UUID 或標籤,而不是用作引導程式中的/dev/sda2根設備(root=)設置,語法如下:

… /boot/vmlinuz root=UUID=01234567-89ab-cdef-0123-456789abcdef ro …
… /boot/vmlinuz root=LABEL=mylabel ro …

UUID 唯一標識一個檔案系統,因此您需要 上的檔案系統的 UUID /dev/sda2。在 Ubuntu 上,/dev/disk/by-uuid/01234567-89ab-cdef-0123-456789abcdef是指向/dev/sda2.如果您的檔案系統有標籤(手動設置,由您強制執行唯一性),則/dev/disk/by-label.標籤和 UUID 連結由下列 udev 規則產生:

ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}"
ENV{ID_FS_USAGE}=="filesystem|other", ENV{ID_FS_LABEL_ENC}=="?*", SYMLINK+="disk/by-label/$env{ID_FS_LABEL_ENC}"

答案2

看一眼持久性區塊設備命名

就我個人而言,我認為標籤是最好的,因為它們為您提供了 UUID 的唯一性,但又是人類可讀的。

你最終會得到一個類似這樣的 fstab:

LABEL=boot /boot ext2 defaults 0 1
LABEL=swap swap swap defaults 0 0
LABEL=root / ext4 defaults 0 1

相關內容