Linux

在虛擬機中準備 Linux 映像

  • July 1, 2011

我正在嘗試設置一個系統以在虛擬機上準備 Linux 系統,然後將其部署到 SD 卡上。目標系統有一個 Atom 處理器,因此不存在架構兼容性問題。

是否有任何掛載點必須位於特殊的物理位置才能正常工作,或者 GRUB 是否可以 grok 文件系統?

如何設置 SD 卡以使用 GRUB 引導該系統?

通過 rsync 文件系統或 dd 文件系統映像會更好嗎?我更喜歡前者,因為在不同大小的卡之間切換時我不需要太多改變我的虛擬機。

編輯:

我假設我必須在使用 parted 之類的東西之前準備好卡片,然後我必須在上面安裝 GRUB,這沒什麼大不了的。

主要問題是,**如果核心不在分區上的保證物理位置,GRUB 會找到它嗎?**換句話說,GRUB 是否足夠聰明,可以讀取 ext2、ext3 或 ext4 分區並找到合適的掛載點?

我的磁碟看起來像這樣(2 個分區):

$$ GRUB $$ $$ grub loader stuff $$ $$ GRUB partition $$ $$ OS partition $$

當 Grub 啟動時,它會使用 BIOS 提供的資訊自行載入。只要所有部分都在同一個磁碟上,這應該可以無縫工作。

當 Grub 載入 Linux 時,它可以在與 Grub 相同的磁碟上或通過搜尋可用磁碟來找到核心。同樣,如果您將核心與 Grub 放在同一個磁碟上,這應該可以無縫執行。

當 Linux 核心掛載根文件系統時,它使用自己的磁碟編號。Grub 將命令行參數傳遞給核心,以便它知道在哪裡可以找到根文件系統;論點必鬚根據核心的理解。如果您從一個系統移動到另一個系統,磁碟編號(例如sdasdb、等)是不可預測的。hda確保這將起作用的最簡單方法是將根文件系統(以及任何其他文件系統或交換空間)放在 LVM 上。在引導時(特別是在 initrd/initramfs 執行階段),系統將查看所有可用的 LVM 物理卷,組裝這些組,然後訪問它們包含的所有邏輯卷。由於 LVM 卷有名稱而不是磁碟編號,因此磁碟編號是什麼並不重要。

Grub 必須知道其碎片在磁碟上的確切物理位置。您不能僅通過將文件複製到其上來製作可引導的 SD 卡,您必須進行引導載入程序安裝。為了輕鬆應對不同大小的設備,一個好辦法是在磁碟的開頭為作業系統做一個固定大小的分區,剩下的空間作為額外的數據分區。關於該主題,請參閱將可啟動 USB 記憶棒複製到不同大小的記憶棒

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