grub 2.14 rc1: grub-install: error: ../grub-core/kern/disk.c:grub_disk_open:240:disk `md0' not found.

Arkadiusz Miśkiewicz <[email protected]> Thu, 13 Nov 2025 11:14:17 +0100
Newsgroups gmane.comp.boot-loaders.grub.bugs
Message-ID <[email protected]>
Hello.

grub 2.12 and also 2.14rc1 - same problem. Below are logs from 2.14rc1.

I have a Linux system (6.15.3) where I need to fix/install grub, so I 
boot from rescuecd and then:

# mdadm --assemble /dev/md0 /dev/sd[abcd]3
mdadm: /dev/md0 has been started with 4 drives.
# mdadm --assemble /dev/md1 /dev/sd[abcd]4
mdadm: /dev/md1 has been started with 4 drives.
# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sdc4[0] sda4[3] sdb4[2] sdd4[1]
       3747415296 blocks super 1.2 [4/4] [UUUU]
       bitmap: 0/28 pages [0KB], 65536KB chunk

md0 : active raid1 sdc3[0] sda3[3] sdb3[2] sdd3[1]
       2094592 blocks super 1.2 [4/4] [UUUU]
# vgscan
   Found volume group "vg_storage" using metadata type lvm2
# vgchange -a y
   3 logical volume(s) in volume group "vg_storage" now active
# lvs
   LV      VG         Attr       LSize   Pool Origin Data%  Meta%  Move 
Log Cpy%Sync Convert
   lv_home vg_storage -wi-a-----   3.00t
   lv_log  vg_storage -wi-a----- 200.00g
   lv_root vg_storage -wi-a-----  30.00g
# mount /dev/vg_storage/lv_root /D/
# mount /dev/md0 /D/boot
# mount /sys /D/sys -o bind
# mount /proc /D/proc -o bind
# mount /dev /D/dev -o bind
# chroot /D
# cd /
# grub-install /dev/sda
Installing for i386-pc platform.
grub-install: error: ../grub-core/kern/disk.c:grub_disk_open:240:disk 
`md0' not found.

The problem seems to be because grub finds md array but adds it as 
"md/0" while later it expects "md0"

# grub-install -vvv /dev/sda 2>&1 | grep -E "(md0|md/0)"
grub-install: info: /dev/md0 is not present.
grub-core/disk/diskfilter.c:grub_diskfilter_vg_register:977:diskfilter: 
Found array md/0
grub-install: info: Found array md/0.
grub-core/disk/diskfilter.c:insert_array:1247:diskfilter: Inserting 
hostdisk//dev/sdc (+2162160,4193280) into md/0 (mdraid1x)
grub-install: info: Inserting hostdisk//dev/sdc (+2162160,4193280) into 
md/0 (mdraid1x)
grub-core/disk/diskfilter.c:insert_array:1247:diskfilter: Inserting 
hostdisk//dev/sdd (+2162160,4193280) into md/0 (mdraid1x)
grub-install: info: Inserting hostdisk//dev/sdd (+2162160,4193280) into 
md/0 (mdraid1x)
grub-core/disk/diskfilter.c:insert_array:1247:diskfilter: Inserting 
hostdisk//dev/sdb (+2162160,4193280) into md/0 (mdraid1x)
grub-install: info: Inserting hostdisk//dev/sdb (+2162160,4193280) into 
md/0 (mdraid1x)
grub-core/disk/diskfilter.c:insert_array:1247:diskfilter: Inserting 
hostdisk//dev/sda (+2162160,4193280) into md/0 (mdraid1x)
grub-install: info: Inserting hostdisk//dev/sda (+2162160,4193280) into 
md/0 (mdraid1x)
grub-install: info: /dev/md0 is not present.
grub-install: info: /dev/md0 is not present.
grub-core/kern/disk.c:grub_disk_open:200:disk: Opening `md0'...
grub-core/kern/disk.c:grub_disk_open:200:disk: Opening `md/0'...
grub-core/disk/diskfilter.c:scan_disk_partition_iter:138:diskfilter: 
Scanning for DISKFILTER devices on disk md/0
grub-install: info: Scanning for DISKFILTER devices on disk md/0.
grub-install: info: Scanning for mdraid1x devices on disk md/0.
grub-install: info: Scanning for mdraid09_be devices on disk md/0.
grub-install: info: Scanning for mdraid09 devices on disk md/0.
grub-install: info: Scanning for dmraid_nv devices on disk md/0.
grub-install: info: Scanning for ldm devices on disk md/0.
grub-install: info: scanning md/0 for LDM.
grub-install: info: Scanning for lvm devices on disk md/0.
grub-core/kern/disk.c:grub_disk_close:303:disk: Closing `md/0'.
grub-core/kern/disk.c:grub_disk_open:285:disk: Opening `md0' failed.
grub-core/kern/disk.c:grub_disk_close:303:disk: Closing `md0'.
grub-install: error: ../grub-core/kern/disk.c:grub_disk_open:240:disk 
`md0' not found.



If I change quickly to

$ diff -up grub-2.14~rc1/grub-core/disk/diskfilter.c{~,}
--- grub-2.14~rc1/grub-core/disk/diskfilter.c~	2025-05-06 
15:14:03.000000000 +0000
+++ grub-2.14~rc1/grub-core/disk/diskfilter.c	2025-11-13 
09:20:29.756608568 +0000
@@ -1131,7 +1131,7 @@ grub_diskfilter_make_raid (grub_size_t u
      {
        /* Strip off the homehost if present.  */
        char *colon = grub_strchr (name, ':');
-      char *new_name = grub_xasprintf ("md/%s",
+      char *new_name = grub_xasprintf ("md%s",
  				       colon ? colon + 1 : name);

        if (! new_name)

then success

# /grub-install /dev/sda
Installing for i386-pc platform.
Installation finished. No error reported.

and system boots.


If grub relies on /dev/md/XX schema then shouldn't it convert all names 
in encounter from mdXX to md/XX, too? Or add both forms to its internal 
structures.


Log from grub-install -vvv /dev/sda:
https://ixion.pld-linux.org/~arekm/grub/grub-install.txt

and from patched grub-install:
https://ixion.pld-linux.org/~arekm/grub/grub-install-patched.txt




ps. NEWS file for 2.14rc1 tarball wasn't updated (not sure if it should 
be at this stage though)
-- 
Arkadiusz Miśkiewicz, arekm / ( maven.pl | pld-linux.org )