Difference between revisions of "Linux: Boot from LVM"
Lukas Dzunko (talk | contribs) |
Lukas Dzunko (talk | contribs) |
||
Line 18: | Line 18: | ||
/dev/sda1 2048 1250263727 625130840 8e Linux LVM | /dev/sda1 2048 1250263727 625130840 8e Linux LVM | ||
</pre> | </pre> | ||
− | then continue with next steps. If first partition | + | then continue with next steps. If first partition occupy part of first 2048 sectors, then you should shift(move) it first. |
If you compare GRUB2 configuration with configuration of legacy GRUB then you find it looks similar. Here is my configuration of GRUB2: | If you compare GRUB2 configuration with configuration of legacy GRUB then you find it looks similar. Here is my configuration of GRUB2: |
Revision as of 17:03, 13 November 2013
For those who don't know. Yes, it is possible to boot Linux directly from LVM without legacy /boot
partition. If you don't need fancy graphic for GRUB then configuration is really simple but first prerequisites:
- only GRUB version 1.9*, 2.00 and newer support booting from LVM
- there should be enough "space" before first partition on disk
- during installation correct modules should be selected (or simply all)
First partition should start at 2048 sector otherwise there is not enough free space for GRUB2. If your boot device looks like this one:
# fdisk -l /dev/sda Disk /dev/sda: 640.1 GB, 640135028736 bytes, 1250263728 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0xc3b3f0e3 Device Boot Start End Blocks Id System /dev/sda1 2048 1250263727 625130840 8e Linux LVM
then continue with next steps. If first partition occupy part of first 2048 sectors, then you should shift(move) it first.
If you compare GRUB2 configuration with configuration of legacy GRUB then you find it looks similar. Here is my configuration of GRUB2:
# grub.cfg for phoebe set default="0" set timeout="3" insmod part_msdos insmod lvm insmod ext2 set root=lvm/vg_phoebe-lv_boot menuentry "Gentoo GNU/Linux" { linux /vmlinuz root=/dev/vg_phoebe/lv_root rootfstype=ext4 nodetect dolvm quiet net.ifnames=0 initrd /initramfs } menuentry "Memory test (memtest86+)" { linux16 /memtest86plus/memtest.bin } # EOF
Most important part is insmod
. This will instruct GRUB to load proper modules which are essential for access to boot logical volume (ext2 module cover also ext3 and ext4).
Note: "set root
" statement changed between version 1.99 and 2.00. Correct syntax is following:
- 1.99 ->
set root="(vg_phoebe-lv_boot)"
- 2.00 ->
set root=lvm/vg_phoebe-lv_boot
As last step is important to store GRUB2 in boot area of disk. If you don't care that all modules are installed (as me also) then invoke:
# grub-install /dev/sda Installation finished. No error reported.
It should finish with no errors (of course) and installation can take longer than similar task for legacy GRUB. If you want only specific modules installed then use --install-modules
option for grub-install