將 Grub 安裝到帶有已安裝 Linux 發行版的 USB 驅動器
我正在嘗試製作一個安裝了兩個 Linux 發行版的 USB 驅動器。我的想法是隨身攜帶 USB 驅動器並在我當時所在的地方可用的電腦中啟動發行版。我知道這可能是一個不好的做法,但只是想試一試。
我嘗試根據此影片將 Kali Linux 發行版安裝到我的 USB 驅動器,其中使用 VirtualBox VM 將作業系統安裝到 USB 驅動器中。
當我第一次嘗試時,我沒有在 EFI 模式下啟動我的虛擬機,因此作業系統安裝在傳統模式下(啟動指令寫在 MBR 中)。只要我在支持舊版啟動的電腦上啟動,一切都很好,但是當我嘗試從我的 Microsoft Surface(不支持舊版啟動)啟動時,我顯然無法從外部驅動器啟動。
因此,我嘗試在 VM 上啟動 EFI 模式的情況下重新安裝 Kali,但這次我也不走運,也沒有設法在我的 Surface 上啟動發行版。情況與我嘗試從安裝了傳統模式的發行版的 Surface 啟動時相同:Surface 根本無法辨識可啟動的 USB 驅動器。
Google搜尋我找到了一堆將 GRUB 安裝/重新安裝到 USB/外部驅動器的解決方案,但是當我嘗試它們時,它們似乎只有在我在用於在 USB 驅動器上安裝 GRUB 的同一設備上啟動時才能工作. 例如,當我使用 VirtualBox VM 將 GRUB 安裝到我的 USB 設備中時,我只能從該 VirtualBox VM 將我的 Kali 發行版引導到 USB 設備中。
我想我在這裡遺漏了一些東西……有人可以幫我澄清一下,也許可以解決嗎?
我附上描述我的 USB 驅動器的分區以及在 Kali Linux 的 EFI 模式下安裝後 USB 驅動器上的 ESP 分區的內容的螢幕截圖,以防他們可以提供幫助:
- 更新 - -
我設法在能夠 EFI 啟動的兩台 PC 上啟動我的系統。我剛剛將位於我的 ESP 中的 Kali 引導載入程序從 /EFI/Kali 移動到備用路徑 /EFI/BOOT,並將引導載入程序從“grubx64.efi”重命名為備用名稱“bootx64.efi”。我不知道為什麼啟動過程無法啟動 /EFI/Kali/grubx64.efi 有人有任何線索嗎?
現在我只需要讓所有東西都可以在傳統模式下啟動(也就是使用 BIOS),這可能嗎?似乎可以在 UEFI 和傳統模式下啟動 USB 驅動器,但是有沒有一種方法可以設置所有內容,而不會弄亂我實際的 EFI 可啟動配置中的任何工作?
經過大量測試和從@oldfred 有用的見解開始的更深入調查後,我想我解決了這個問題。在這個答案中,我只想簡要描述我是如何做到這一點的以及我的調查結果。
我設法在我的每台 PC 上啟動了我的雙啟動(Kali + AVLinux)系統,要麼只有BIOS啟動功能,要麼只有EFI啟動啟動,或者兩者兼而有之。
這樣做的主要要求是在 BIOS 模式和 EFI 模式下安裝 grub。這可以通過使用GPT分區表然後在設備開始處創建BIOS_BOOT分區以及 EFI 系統分區的方式來準備設備/磁碟。它們很容易創建,因為在 Web 上創建這兩種類型的分區有很多材料。(例如BIOS_boot 分區、EFI 分區)。
我附上我的設備分區的螢幕截圖,希望能更清楚:
我現在將主題拆分為EFI 引導部分和BIOS 引導部分
EFI 引導
正如我在問題中所說,我還安裝了(對於 EFI 啟動模式:即啟動啟用 EFI* 的 VirtualBox VM)我的雙啟動系統的第一個發行版(Kali Linux),只需使用 VirtualBox VM 的安裝程序,其
.iso
文件載入為VM 光碟機的內容。安裝一切順利,除了我無法在任何機器上啟動我的系統(可能與我用於安裝的同一 VM 不同,但我不完全確定)。
原因是
grub-install
Kali 安裝程序將 grub 放在我的 EFI 分區中的/EFI/Kali/grubx64.efi
路徑中,而正如@oldfred 建議的那樣:外部設備僅 UEFI 從 /EFI/Boot/bootx64.efi 引導。
這就是為什麼我設法引導系統移動+重命名位於 EFI 分區中的引導載入程序從
/EFI/Kali/grubx64.efi
路徑到/EFI/BOOT/bootx64.efi
路徑。此外,進一步的調查表明,我們可以擺脫重新安裝 grub 的問題(按照這個問題中顯示的方法)並在命令
--removable
呼叫中添加參數。grub-install
因此,指南上的命令將變為:
grub-install --removable /dev/sdX
這會將引導載入程序放入
/EFI/BOOT/BOOTX64.EFI
路徑中,從而解決問題。
- 這與在支持 EFI 引導的 PC 上執行安裝程序幾乎相同
BIOS(傳統)引導
創建 BIOS_boot 分區後,我們必須通過
grub-pc
package*. 該過程與在 EFI 引導模式下安裝 grub 的過程幾乎相同,除非我們不掛載 EFI 目錄:
sudo mount /dev/sdXX /mnt/boot/efi
i386-pc
我們在 grub-install 命令中指定目標平台:grub-install --target=i386-pc /dev/sdX
- 實際上,除非我讀到該
grub-pc
軟體包是用於在 MBR 中安裝 grub(因此適用於 BIOS 引導模式)並且grub-efi
該軟體包是用於在 EFI 分區中安裝 grub(因此適用於 EFI 引導模式),否則我對此不是 100% 確定的,因為我設法在 EFI 分區中安裝 grub 並安裝了 grub-pc 包