
我正在嘗試使用 GRUB2 連結加載驅動器上的不同分割區來建立多重啟動 USB 隨身碟。它不起作用。我不要想要有關如何建立多重啟動快閃磁碟機的建議;我知道有很多方法可以做到這一點。我是僅有的有興趣弄清楚為什麼這種特殊方法不起作用。
一些背景知識:我有兩個 USB 驅動器,我們稱它們為 USB1 和 USB2。我目前正在嘗試以多重啟動友好的方式在其中一個上安裝 Debian Wheezy。現在,如果我只是將 iso 加到 USB1 (/dev/sdb) 上:
dd conv=notrunc bs=4M if=/path/to/iso of=/dev/sdb
這會創建一個漂亮的可啟動驅動器,我可以從中安裝 Debian。此外,如果我在 USB2 上安裝 GRUB2,我可以使用以下命令成功地從它連結載入 USB1:
search --label --set=root "Debian 7.0.0 i386 1"
chainloader +1
boot
現在解決我的問題:如果我在 USB2 上建立第二個分割區並將 iso 新增到該分割區:
dd conv=notrunc bs=4M if=/path/to/iso of=/dev/sdc2
鍊式載入不起作用。它不會拋出任何錯誤訊息,只是給我一個黑屏,帶有閃爍的破折號(無回應)。 (我在兩個驅動器上都嘗試過此操作,所以我不認為有故障的硬體是罪魁禍首)。
為什麼這不起作用?當鍊式載入不同的磁碟機和在同一磁碟機上鍊式載入不同分割區(當它們包含完全相同的資料時)有什麼區別?
答案1
首先,磁碟映像與分割映像不同。您試圖將您的一個(看似磁碟映像)用作兩者,這是錯誤的。不要認為dd
沒有錯誤就一切正常:它會很樂意做你告訴它要做的任何事情,除非存在某種真正的 IO 錯誤。
當您連結載入磁碟機時,GRUB 將查找主開機記錄 - 這是啟動磁碟內容並包含引導程式碼的東西。然而,分區結構是不同的——它甚至不是從程式碼開始的;而是從程式碼開始的。它有一個引導記錄,但位於更遠的位置。 GRUB 也可以鍊式載入;但程序不同。當您將磁碟映像放入分割區時,您沒有創建任何易於使用的內容,並且 GRUB 肯定不會期望那裡有 MBR。相反,它會運行一些隨機機器代碼,這對您的 PC 來說絕對不健康。
若要實現此功能,您必須將 Debian 分割區的內容複製到此分割區並在其上安裝 GRUB。除非過程中出現一些錯誤,否則它應該可以完美地工作。不要忘記重新創建您的/dev/sdc2
!