Basically, my problem was the /boot (/dev/sda1), which was a very tiny partition (88 Mo).
With the available VolumeGroup on this machine, I formatted a new LVM volume (600 Mo).
Then I copied the content of /boot/ to the new LVM partition (with cpio
).
I made umount /boot
, and some changes in Fstab to replace the old /boot partition.
Finally, I made update-grub
to generate correctly a new grub.cfg
.
I rebooted, and it was already working. I was thinking that my new LVM partition was right, so with fdisk /dev/sda
, I delete the /dev/sda1
.
And now, I have the Grub Rescue at boot..
Even with 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.
Same error…
Is there a solution to install the Grub bootloader on an existing LVM device ?
Best Answer
Maybe (i am a total new on lvm and grub) you need to install grub as this:
grub-install --modules='lvm' --boot-directory=/dev/rootvg/bootlv dev/sda
To put grub on MBR and use /dev/rootvg/bootlv as the /boot partition where grub files resides.
But if disk is GPT and you boot with BIOS you will need a special partition 1MiB to 8MiB of type BIOS_grub (without any format, it is a raw one for stage2 of grub).
I am having a lot of trouble to boot Grub2 from a [U]EFI with EFI partition and LVM, having the /boot partition inside a 3 stripes Raid0 LVM, but i can boot it normally if BIOS boot mode.
Partitions i have on each of three HDDs (all identical size, position, etc), in GPT stile: GPT1: LVM (Big one, rest of HDD space) GPT2: EFI (512MiB, FAT32) GPT3: bios_grub (8MiB, no format - RAW)
I create the vg on all /dev/sd[a-c]1 and inside LVM one partition for /boot
I mount /boot with: mount /dev/mapper/bla_bla_bla /boot
I create EFI mount point on it (not really needed but helps to type less letters on grub2-install)
I mount /dev/sda2 on /boot/efi
Then i add lvm to modules needed, with command:
echo GRUB_PRELOAD_MODULES=\"lvm\" >> /dev/default/grub
Then i install Grub2 with this command:
grub-install --target=i386-pc /dev/sda
And voila, unmount and reboot in BIOS mode and it boots Grub2.
Important, prior to unmount /boot edit /boot/grub/grub.cfg to fit what you need.
And please remember i am not booting an OS, i am only installing Grub2 inside a LVM partition and be able to boot.
Note: If i install with target x86_64-efi, it shows two messages and after it does not boot on [U]EFI mode correctly, LVM is not accessible.
P.D.: I got to the level of knownledge to create two different usb sticks that can boot in [U]EFI mode and in BIOS mode the SystemRescueCD.iso loop, but when i try to boot to Grub2 residing inside LVM i get problems if in [U]EFI mode... i am not an expert... i have been working on Grub2 and LVM, LUKS, etc... my intention is to create a very complex boot... three usb sticks in Raid0 LVM without /boot outside LVM and capable of boot on [U]EFI only PCs and on old BIOS only PCs, on mixed ones, etc... i am at the point where i can boot on both [U]FI and BIOS if /boot is outside LVM and on BIOS mode also with /boot inside LVM, but not on [U]EFI with /boot inside LVM.
P.P.D.: I am afraid it is a BUG on grub2*.efi that do not mount the LVM, so i recommend you to boot in BIOS mode... among this i had read some articles of ArchLinux telling it can be installed on LVM without /boot partition and having / inside LVM, but did not get step by step, nor i can reproduce that; and it is not my real objective, since i do not want a Linux installed, only Grub2... final real objetive is to have the Linux inside a big file that is inside a LVM partition that is inside a LUKS partitions that is on a LVM partition that uses three physical HDDs id raid0 mode (3 stripes), and boot from an USB having [U]EFI & Bios boot modes with Grub2 that chainload to Grub2 that is inside such Big file, and that Grub2 will load the kernel, initram, etc from inside such big file... etc; a plausible deny you have such Linux... if boot from HDD an encrypted Linux will be shown, where on its rootfs is the big file i mention, but if i boot from external usb stick if kowns how to boot the Linux inside that file... paranoid mode: the commands to do such chainload will be on my mind, not on USB stick, on the USB stick would only be a SystemRescueCD.iso loop boot, but instead of selecting to boot it, type c to go to grub console and type that commands to chainload to Linux inside the big file i mention... i know this is too, too much complex... but without having the trick of TrueCrypt/VeraCrypt that depending on the passphrase it mounts the dummy OS or the hidden OS, i have no other option, so i started some months ago with first steps... have a USB that boots on [U]EFI and on BIOS only PCs (done), having Grub2 inside a LVM (done for BIOS mode, error on [U]EFI mode), so many steps to walk left.
I hope my scheme and commands can help you to discover how to boot your system, or at least give you an option to search for.