LVM 分割區上的 Grub

LVM 分割區上的 Grub

基本上,我的問題是 /boot (/dev/sda1),這是一個非常小的分割區 (88 Mo)。

利用該電腦上的可用磁碟區組,我格式化了一個新的 LVM 磁碟區 (600 Mo)。

然後我將 /boot/ 的內容複製到新的 LVM 分割區(帶有cpio)。

umount /boot在 Fstab 中進行了一些更改以取代舊的 /boot 分割區。

最後,我update-grub正確生成了一個新的grub.cfg.我重新啟動,它已經可以工作了。我認為我的新 LVM 分割區是正確的,因此fdisk /dev/sda,我刪除了/dev/sda1.

現在,我啟動了 Grub Rescue..

即使使用 Ubuntu livecd :

grub-install --modules='lvm' /dev/rootvg/bootlv

/usr/sbin/grub-probe: error: cannot find a device for /boot/grub/
No path or device is specified.


grub-install --modules='lvm' /dev/sda5

/usr/sbin/grub-probe: error: cannot find a device for /boot/grub/
No path or device is specified.

同樣的錯誤...

是否有解決方案可以在現有 LVM 設備上安裝 Grub 引導程式?

答案1

也許(我是 lvm 和 grub 的新手)你需要安裝 grub,如下所示:

grub-install --modules='lvm' --boot-directory=/dev/rootvg/bootlv dev/sda

將 grub 放在 MBR 上並使用 /dev/rootvg/bootlv 作為 grub 檔案所在的 /boot 分割區。

但是,如果磁碟是 GPT 並且使用 BIOS 啟動,則需要一個 BIOS_grub 類型的特殊分割區 1MiB 到 8MiB(沒有任何格式,它是 grub 第 2 階段的原始分割區)。

我在從帶有 EFI 分割區和 LVM 的 [U]EFI 啟動 Grub2 時遇到了很多麻煩,/boot 分割區位於 3 個條帶 Raid0 LVM 內,但如果是 BIOS 啟動模式,我可以正常啟動它。

我在三個硬碟上的每個分割區(大小、位置等都相同),採用GPT 風格: GPT1:LVM(大硬碟,其餘硬碟空間) GPT2:EFI(512MiB,FAT32) GPT3:bios_grub(8MiB,無格式) - 生的)

我在所有 /dev/sd[ac]1 上建立 vg,並在 LVM 內為 /boot 建立一個分割區

我使用以下指令掛載 /boot: mount /dev/mapper/bla_bla_bla /boot

我在其上創建了 EFI 安裝點(不是真正需要的,但有助於在 grub2-install 上鍵入更少的字母)

我將 /dev/sda2 安裝在 /boot/efi 上

然後我將 lvm 添加到所需的模組中,使用命令:

echo GRUB_PRELOAD_MODULES=\"lvm\" >> /dev/default/grub

然後我使用以下命令安裝 Grub2:

grub-install --target=i386-pc /dev/sda

瞧,卸載並在 BIOS 模式下重新啟動,它就會啟動 Grub2。

重要的是,在卸載 /boot 之前編輯 /boot/grub/grub.cfg 以滿足您的需求。

請記住,我沒有啟動作業系統,我只是在 LVM 分割區內安裝 Grub2 並且能夠啟動。

注意:如果我使用目標 x86_64-efi 安裝,它會顯示兩個訊息,並且在無法在 [U]EFI 模式下正確啟動後,無法存取 LVM。

PD:我已經達到了創建兩個不同的USB 記憶棒的水平,它們可以在[U]EFI 模式下啟動,在BIOS 模式下啟動SystemRescueCD.iso 循環,但是當我嘗試啟動到駐留在LVM 內的Grub2 時,如果在[U]EFI 模式...我不是專家...我一直在研究Grub2 和LVM、LUKS 等...我的目的是創建一個非常複雜的啟動...Raid0 LVM 中的三個USB 棒,沒有/boot 在LVM 之外,並且能夠在僅[U]EFI 的PC 和僅BIOS 的舊PC、混合PC 等上啟動...我現在可以在[U]FI 和BIOS 上啟動,如果/boot位於 LVM 外部且在 BIOS 模式下,/boot 位於 LVM 內,但不在 [U]EFI 上,/boot 位於 LVM 內。

PPD:恐怕這是grub2*.efi 上的一個BUG,沒有掛載LVM,所以我建議你以BIOS 模式啟動...其中我讀過ArchLinux 的一些文章,告訴它可以安裝在LVM 上,而無需安裝LVM。這不是我真正的目標,因為我不想安裝Linux,只想要安裝Grub2...最終的真正目標是讓Linux 位於一個大檔案中,該檔案位於LVM 分割區內,該檔案位於LUKS 分割區內,該分割區位於LVM 分割區使用三個實體HDD id raid0 模式(3 個條帶),並從具有[U]EFI 和Bios 引導模式的USB 引導,並使用Grub2 鍊式載入到此類大檔案內的Grub2,並且Grub2將加載內核, initram 等來自這麼大的文件......等等;一個合理的否認你有這樣的Linux...如果從HDD啟動,將顯示一個加密的Linux,其rootfs上的位置是我提到的大文件,但如果我從外部USB記憶棒啟動,如果知道如何在該文件中啟動Linux ...偏執模式:執行此類鏈加載的命令將在我的腦海中,而不是在USB 記憶棒上,在USB 記憶棒上只會是SystemRescueCD.iso 循環啟動,但不是選擇啟動它,而是輸入c 轉到grub 控制台並在我提到的大文件中輸入鍊式加載到Linux 的命令...我知道這太複雜了...但是沒有TrueCrypt/VeraCrypt 的技巧,根據密碼它會安裝虛擬作業系統或隱藏的作業系統,我沒有其他選擇,所以幾個月前我開始了第一步...有一個可以在[U]EFI 和僅BIOS 的PC 上啟動的USB (完成),在LVM 中安裝Grub2(完成了BIOS 模式,[U]EFI 模式出錯),需要走很多步驟。

我希望我的方案和命令可以幫助您了解如何啟動系統,或至少為您提供一個搜尋選項。

相關內容