
基本上,我的問題是 /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 模式出錯),需要走很多步驟。
我希望我的方案和命令可以幫助您了解如何啟動系統,或至少為您提供一個搜尋選項。