Bug#925591: grub-install fails on raid1+efi setup

Joerg Dorchain joerg at dorchain.net
Wed Mar 27 09:33:14 GMT 2019


Package: grub2-common
Version: 2.02+dfsg1-13

# grub-install
Installing for x86_64-efi platform.
efibootmgr: option requires an argument -- 'd'
efibootmgr version 15
usage: efibootmgr [options]
        -a | --active         sets bootnum active
        -A | --inactive       sets bootnum inactive
        -b | --bootnum XXXX   modify BootXXXX (hex)
        -B | --delete-bootnum delete bootnum
        -c | --create         create new variable bootnum and add to bootorder
        -C | --create-only      create new variable bootnum and do not add to bo
otorder
        -D | --remove-dups      remove duplicate values from BootOrder
        -d | --disk disk       (defaults to /dev/sda) containing loader
        -r | --driver         Operate on Driver variables, not Boot Variables.
        -e | --edd [1|3|-1]   force EDD 1.0 or 3.0 creation variables, or guess
        -E | --device num      EDD 1.0 device number (defaults to 0x80)
        -g | --gpt            force disk with invalid PMBR to be treated as GPT
        -i | --iface name     create a netboot entry for the named interface
        -l | --loader name     (defaults to "\EFI\debian\grub.efi")
        -L | --label label     Boot manager display label (defaults to "Linux")
        -m | --mirror-below-4G t|f mirror memory below 4GB
        -M | --mirror-above-4G X percentage memory to mirror above 4GB
        -n | --bootnext XXXX   set BootNext to XXXX (hex)
        -N | --delete-bootnext delete BootNext
        -o | --bootorder XXXX,YYYY,ZZZZ,...     explicitly set BootOrder (hex)
        -O | --delete-bootorder delete BootOrder
        -p | --part part        (defaults to 1) containing loader
        -q | --quiet            be quiet
        -t | --timeout seconds  set boot manager timeout waiting for user input.
        -T | --delete-timeout   delete Timeout.
        -u | --unicode | --UCS-2  handle extra args as UCS-2 (default is ASCII)
        -v | --verbose          print additional information
        -V | --version          return version and exit
        -w | --write-signature  write unique sig to MBR if needed
        -y | --sysprep          Operate on SysPrep variables, not Boot Variables.
        -@ | --append-binary-args file  append extra args from file (use "-" for stdin) 
        -h | --help             show help/usage
grub-install: error: efibootmgr failed to register the boot entry: Operation not permitted.

This results in no efi boot variable set. The current workaround
is to  manually copy /boot/efi/EFI/debian/grubx64.efi to
/boot/efi/EFI/boot/bootx64.efi

# dpkg-query -W|grep grub
grub-common     2.02+dfsg1-13
grub-efi-amd64  2.02+dfsg1-13
grub-efi-amd64-bin      2.02+dfsg1-13
grub2-common    2.02+dfsg1-13

# efibootmgr -v
BootCurrent: 0004
Timeout: 1 seconds
BootOrder: 0004,0006,0007,0005
Boot0004* UEFI OS       HD(1,GPT,37db7f15-2cdd-4553-9185-6761a0208897,0x800,0x7d000)/File(\EFI\BOOT\BOOTX64.EFI)
Boot0005* Hard Drive    BBS(HD,,0x0)..GO..NO........O.S.a.m.s.u.n.g. .S.S.D. .8.4.0. .S.e.r.i.e.s.................>..Gd-.;.A..MQ..L.1.S.C.4.E.N.C.A.6.A.7.1.5.1. .Z. . . . ........BO..NO........O.K.I.N.G.S.T.O.N. .S.V.3.0.0.S.3.7.A.1.2.0.G.................>..Gd-.;.A..MQ..L.0.5.2.0.B.6.8.7.1.5.6.0.0.A.5.3. . . . ........BO..NO........O.W.D.C. .W.D.6.0.E.F.R.X.-.6.8.L.0.B.N.1.................>..Gd-.;.A..MQ..L. . . . .W. .-.D.X.W.1.2.5.D.3.8.Y.N.7.V........BO
Boot0006* UEFI OS       HD(1,GPT,b17fefc1-aee4-4936-99c6-595909b8cd80,0x800,0x7d000)/File(\EFI\BOOT\BOOTX64.EFI)
Boot0007* UEFI OS       HD(1,GPT,695948ea-ba98-4c56-98ee-55e5aa8fb9e4,0x800,0x7d000)/File(\EFI\BOOT\BOOTX64.EFI)

# lsblk 
NAME                 MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
loop0                  7:0    0   1.2G  1 loop  /nfsexports/tftp/grml
sda                    8:0    0 111.8G  0 disk  
├─sda1                 8:1    0   250M  0 part  
│ └─md1                9:1    0   250M  0 raid1 /boot/efi
└─sda2                 8:2    0 111.6G  0 part  
  └─md0                9:0    0 111.5G  0 raid1 
    ├─redstar-root   253:0    0   704M  0 lvm   /
    ├─redstar-swap   253:1    0     8G  0 lvm   [SWAP]
    ├─redstar-usr    253:5    0    13G  0 lvm   /usr
    ├─redstar-var    253:6    0    25G  0 lvm   /var
    ├─redstar-tmp    253:7    0    30G  0 lvm   /tmp
    └─redstar-mnt    253:8    0     4M  0 lvm   /mnt
sdb                    8:16   0   5.5T  0 disk  
├─sdb1                 8:17   0   250M  0 part  
│ └─md1                9:1    0   250M  0 raid1 /boot/efi
├─sdb2                 8:18   0 111.6G  0 part  
│ └─md0                9:0    0 111.5G  0 raid1 
│   ├─redstar-root   253:0    0   704M  0 lvm   /
│   ├─redstar-swap   253:1    0     8G  0 lvm   [SWAP]
│   ├─redstar-usr    253:5    0    13G  0 lvm   /usr
│   ├─redstar-var    253:6    0    25G  0 lvm   /var
│   ├─redstar-tmp    253:7    0    30G  0 lvm   /tmp
│   └─redstar-mnt    253:8    0     4M  0 lvm   /mnt
└─sdb3                 8:19   0   5.4T  0 part  
  └─cryptpv          253:2    0   5.4T  0 crypt 
    ├─cryptvg-mail   253:3    0   1.6G  0 lvm   /nfsexports/var_mail
    └─cryptvg-export 253:4    0   2.4T  0 lvm   /nfsexports/export
sdc                    8:32   0 111.8G  0 disk  
├─sdc1                 8:33   0   250M  0 part  
│ └─md1                9:1    0   250M  0 raid1 /boot/efi
└─sdc2                 8:34   0 111.6G  0 part  
  └─md0                9:0    0 111.5G  0 raid1 
    ├─redstar-root   253:0    0   704M  0 lvm   /
    ├─redstar-swap   253:1    0     8G  0 lvm   [SWAP]
    ├─redstar-usr    253:5    0    13G  0 lvm   /usr
    ├─redstar-var    253:6    0    25G  0 lvm   /var
    ├─redstar-tmp    253:7    0    30G  0 lvm   /tmp
    └─redstar-mnt    253:8    0     4M  0 lvm   /mnt

# more /proc/mdstat 
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid1 sdb2[3](W) sdc2[2] sda2[0]
      116898112 blocks super 1.2 [3/3] [UUU]
      
md1 : active raid1 sdb1[3](W) sdc1[2] sda1[0]
      255936 blocks super 1.0 [3/3] [UUU]

EFI sees three EFI system partions on three disks. With metadata
at the end, the filesystem is fine for the bios.
In Linux, this is a three-way-mirror /dev/md1.

The grub-install script should be able to unwind the setup to
install three boot entries for the three disks.

The same effect is also reproducible with only a two-way-mirror.

As a side note, the default initramfs is fine with all this.

I am able to do testing. Thanks for having a look.

Bye,

Joerg
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 898 bytes
Desc: not available
URL: <http://alioth-lists.debian.net/pipermail/pkg-grub-devel/attachments/20190327/c2a9bac3/attachment.sig>


More information about the Pkg-grub-devel mailing list