Debian
如何將引導載入程序從硬碟驅動器移動到 USB 記憶棒
我決定將我的 Debian 引導程序和
/boot
從硬碟驅動器移動到 USB 記憶棒。我正在使用 LUKS 來加密/解密我的硬碟驅動器,而引導載入程序是唯一未加密的分區。我怎樣才能輕鬆做到這一點?我想從硬碟驅動器中刪除它,調整任何分區(
/
,/var
,/tmp
)的大小以在刪除後獲得可用空間/boot
並將新的引導載入程序放在 U 盤上。正在使用的引導載入程序是 GRUB,它處於打開狀態/dev/sda1
。
螺絲
grub
。它可能引入了一些複雜性,使您相信這是一個難以解決的問題。如果您的電腦不到 5 年左右,那麼您可能是從 UEFI 韌體啟動的,在這種情況下,您的 Debian 建構的 linux 核心已經是一個引導載入程序。
- 對磁碟進行分區:
printf %c\\n o y n 1 '' '' ef00 w y | gdisk /dev/usb-stick/or-whatever-path
- 這是您希望以互動方式提供程序的選項的腳本快捷方式。它將創建一個 GUID 分區表和一個跨越整個磁碟的EFI 系統類型的分區。
- 該
gdisk
程序雖然易於使用 - 因此您最好以互動方式使用它。目標磁碟在執行時不應被掛載,您可能需要 root 權限來w
執行更改。作為一般規則,您幾乎可以在該程序中做任何您想做的事情,而不會產生任何影響,直到您w
舉行儀式 - 所以請確保您何時這樣做。
- 格式化棒 fat32:
mkfs.vfat -nLABEL /dev/usb-stick/or-whatever-path
- LABEL是您想要的任何東西。在我看來,您應該標記 所有磁碟。
- 如果需要,安裝引導菜單管理器。我喜歡rEFInd:
dpkg -i refind_0.8.7-1_amd64.deb
- 那可能不會自動安裝到USB,所以之後你可能想做……
/path/to/refinds/install/dir/install.sh --usedefault /dev/usbstick
如果你使用 rEFInd,你會想要在之後做這樣的事情:
unt /dev/usbstick /mnt dir -p /mnt/EFI/debian /esp -ar /boot/* /mnt/EFI/debian t <<\TWONEWLINES >>/etc/fstab BEL=LABEL /esp vfat defaults 0 2 sp/EFI/debian /boot none bind,defaults 0 0 ONEWLINES t <<\ONESIMPLECONFIG >/mnt/EFI/debian/refind_linux.conf ebian Menu Entry" root=LABEL=rootlabel other_kernel_params ESIMPLECONFIG
但是您可以跳過 rEFInd 並只使用韌體的啟動菜單:
ibootmgr -c -d /dev/rootdevice \ 1 -L "Debian" \ '\EFI\debian\kernelfile' \ root=/dev/sda3 kparams \ itrd=EFI/debian/initramfs_image_file
差不多就是這樣。幾乎永遠-不再大驚小怪。韌體從您在 USB 記憶棒上格式化的 EFI 系統分區載入核心。核心將其初始根載入到 initramfs 文件中。如果您已經成功啟動 LUKS,那麼您必須已經安排它以某種方式訪問其密鑰 - 您的密鑰可能已經在 initramfs 映像中。如果沒有,那麼,你會想把它放在那裡——或者放在 USB 上。 引導分區是 UEFI 系統上的*掛載*- 完全不需要圍繞嵌入引導載入程序和 MBR 以及其他內容的所有舊時骯髒。您只需從韌體掛載引導,載入核心執行檔,然後繼續您的快樂之路。 這些`fstab`東西只是`--bind`在你的 U 盤上掛載了一個目錄`/boot`——所以所有核心更新都會像往常一樣發生。不過,如果您喜歡自己,您將`grub`完全解除安裝。它神秘的更新過程——一堆在邪惡的鏈中讀取和/或生成其他腳本的腳本——不僅有點荒謬,而且是你可以輕鬆擺脫的噩夢。 不過,如果您接受我的建議,您將使用 rEFInd。它有漂亮的菜單,你永遠不必擔心它 -`install.sh`上面腳本的效果可以很容易地通過一個命令來重現*(並且在很大程度上是上面的) 。*`cp`它只是一個`/EFI/BOOT`在 EFI 系統分區上呼叫的靜態目錄,其中包含一個小的 EFI 執行檔,該文件告訴韌體在哪裡可以找到核心。*核心*是實際的引導載入程序——它應該是。 通過上面的設置,您可以啟動任意數量的 EFI 執行檔 - 只需將它們`/boot` *(或任何它們的啟動分區)*的內容放在 USB 記憶棒的`/EFI`某個地方,rEFInd 可能會自動找到它們並將它們作為選項呈現從韌體菜單給您 - 包括 Microsoft 系統。永遠。