Keith C. Perry on 29 Aug 2016 09:25:53 -0700


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: [PLUG] Making sure GRUB2 detects your root volume


Did you install in grub in dos or gpt mode?  In trying to get my Arch USB system to work on UEFI system and legacy boot system I recently went through this.  I seem to have gotta a build that does work for both cases but still not my Chromebook (which appears to only want to boot my Syslinux multiboot USB flashdrive- different issue)

My partition map...

gdisk -l /dev/sdb
GPT fdisk (gdisk) version 1.0.1

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.
Disk /dev/sdb: 494403584 sectors, 235.8 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 1D5A0BBE-1D6B-44EA-A7E2-3FF3A9E30DB2
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 494403550
Partitions will be aligned on 2-sector boundaries
Total free space is 0 sectors (0 bytes)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         1026047   500.0 MiB   EF00  EFI System
   2         1026048       494403550   235.3 GiB   8300  Linux filesystem
   4              34            2047   1007.0 KiB  EF02  BIOS boot partition

I originally has this as partition 1 - 3 but think I read something about the BIOS boot partition needing to be last.  I do think it will work that way actually.

The bigger problem I had on Arch was that I needed to create another preset for build the initrd with pointer to /boot/efi for the EFI partion.  Once I got that right, the it was just a matter of running grub for both cases.

First run update-grub (which is just a script that runs grub-mkconfig -o /boot/grub/grub.cfg) then,

So for dos...
grub-install --target=i386-pc /dev/sda
mkinitcpio -p linux

...and for EFI... (making sure /dev/sda4 is mounted to /boot/efi)
grub-install --target=x86_64-efi /dev/sda
mkinitcpio -p linux-efi

I say all that for reference to see if it helps generally but specially for LV's I think key is to keep it  simple.  I have a system I recently rebuild and it does NOT use a BIOS partition.  It is a mirrored system with one drive being a dos and the other being gpt (they have size mis-match).  GPT is just used so that the entire partition can be seen for booting purposes but I NOT do grub-install with an EFI target.  Linux is apparently ok with such and animal (i.e. gpt drive with mbr install).

While that might be "wierd" it is clean because the system (which only has a 50Gb system volume) uses LVM so there are no partition size restrictions.

~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 
Keith C. Perry, MS E.E. 
Owner, DAO Technologies LLC 
(O) +1.215.525.4165 x2033 
(M) +1.215.432.5167 
www.daotechnologies.com

----- Original Message -----
From: "cjf" <cjf@LinuxForce.net>
To: "Philadelphia Linux User's Group Discussion List" <plug@lists.phillylinux.org>
Sent: Sunday, August 28, 2016 7:16:29 PM
Subject: Re: [PLUG] Making sure GRUB2 detects your root volume

I added the following to my /etc/default/grub:
GRUB_CMDLINE_LINUX=""
GRUB_CMDLINE_LINUX="rd.lvm.lv=tetrahelix/root
rd.luks.uuid=bc49d20d-c4b8-4cfb-bd36-16e2c04062e9
rd.lvm.lv=tetrahelix/root rhgb quiet"

But I get the same error as before:

$ sudo update-grub 
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.16.0-4-amd64
Found initrd image: /boot/initrd.img-3.16.0-4-amd64
/usr/sbin/grub-probe: error: disk `lvmid/dcqgzj-awwK-OfNY-pVPk-dJNm-pEbM-OfP6VO/xAJ9fS-1bIS-oxAI-VF82-7no4-mrLe-XmNTzC' not found.
/usr/sbin/grub-probe: error: disk `lvmid/dcqgzj-awwK-OfNY-pVPk-dJNm-pEbM-OfP6VO/xAJ9fS-1bIS-oxAI-VF82-7no4-mrLe-XmNTzC' not found.
/usr/sbin/grub-probe: error: disk `lvmid/dcqgzj-awwK-OfNY-pVPk-dJNm-pEbM-OfP6VO/xAJ9fS-1bIS-oxAI-VF82-7no4-mrLe-XmNTzC' not found.
done

$ sudo grub-mkconfig -o /boot/grub/grub.cfg 
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.16.0-4-amd64
Found initrd image: /boot/initrd.img-3.16.0-4-amd64
/usr/sbin/grub-probe: error: disk `lvmid/dcqgzj-awwK-OfNY-pVPk-dJNm-pEbM-OfP6VO/xAJ9fS-1bIS-oxAI-VF82-7no4-mrLe-XmNTzC' not found.
/usr/sbin/grub-probe: error: disk `lvmid/dcqgzj-awwK-OfNY-pVPk-dJNm-pEbM-OfP6VO/xAJ9fS-1bIS-oxAI-VF82-7no4-mrLe-XmNTzC' not found.
/usr/sbin/grub-probe: error: disk `lvmid/dcqgzj-awwK-OfNY-pVPk-dJNm-pEbM-OfP6VO/xAJ9fS-1bIS-oxAI-VF82-7no4-mrLe-XmNTzC' not found.
done

I have no logical volume
lvmid/dcqgzj-awwK-OfNY-pVPk-dJNm-pEbM-OfP6VO/xAJ9fS-1bIS-oxAI-VF82-7no4-mrLe-XmNTzC

The correct logical volume is
lvmid/dcqgzj-awwK-OfNY-pVPk-dJNm-pEbM-OfP6VO/bc49d20d-c4b8-4cfb-bd36-16e2c04062e9

I suspect update-grub and grub-mkconfig are reading the result stored in
my gpt BIOS boot partition from before I converted the LVM to be RAID-1.

I still don't have a clue as to how to override grub's intransigence in
guessing the incorrect LV to boot.

I am almost desperate enough to try zeroing /dev/sda1 and /dev/sda2
(my two gpt BIOS boot partitions) in the hopes that once grub can no
longer access the incorrect information that it wrote there, it might do
the right thing. But zeroing a partition is something that is the very,
very last resort. Always :)

Is there no reasonable solution?

On Wed, Aug 03, 2016 at 07:52:43PM -0400, Mike DePaulo wrote:
> This is the answer to a question at PLUG central:
> 
> Edit "/etc/default/grub"
> 
> My Fedora 24 laptop has the contents:
> 
> GRUB_TIMEOUT=5
> GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
> GRUB_DEFAULT=saved
> GRUB_DISABLE_SUBMENU=true
> GRUB_TERMINAL_OUTPUT="console"
> GRUB_CMDLINE_LINUX="rd.lvm.lv=fedora/root
> rd.luks.uuid=luks-62c83a70-f5bf-4b20-aab7-78a2b48f3164
> rd.lvm.lv=fedora/swap rhgb quiet"
> GRUB_DISABLE_RECOVERY="true"
> 
> The option you care about is "rd.lvm.lv". "fedora/root" is the volume
> group name / logical volume name.
> 
> Afterwards, run your command to generate your grub.cfg. This varies
> based on whether you are in BIOS or UEFI mode.
> 
> BIOS mode:
> grub2-mkconfig -o /boot/grub2/grub.cfg
> 
> UEFI mode:
> A command like this ("fedora" string will differ for your distro):
> grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
> ___________________________________________________________________________
> Philadelphia Linux Users Group         --        http://www.phillylinux.org
> Announcements - http://lists.phillylinux.org/mailman/listinfo/plug-announce
> General Discussion  --   http://lists.phillylinux.org/mailman/listinfo/plug

-- 
CJ Fearnley                 |   LinuxForce Inc.
cjf@LinuxForce.net          |   IT Projects & Systems Maintenance
http://www.LinuxForce.net   |   http://blog.remoteresponder.net
___________________________________________________________________________
Philadelphia Linux Users Group         --        http://www.phillylinux.org
Announcements - http://lists.phillylinux.org/mailman/listinfo/plug-announce
General Discussion  --   http://lists.phillylinux.org/mailman/listinfo/plug
___________________________________________________________________________
Philadelphia Linux Users Group         --        http://www.phillylinux.org
Announcements - http://lists.phillylinux.org/mailman/listinfo/plug-announce
General Discussion  --   http://lists.phillylinux.org/mailman/listinfo/plug