Hi, I've hit an issue when trying to reinstall grub on my system. My /boot partition is located on /dev/mapper/pdc_djabadcbjep1 device. However, when grub-install executes grub-probe -t fs /boot, and the latter one starts probing the filesystem, it incorrectly tries to open hostdisk//dev/mapper/pdc_djabadcbje device instead of hostdisk//dev/mapper/pdc_djabadcbje,msdos1.
Here's verbose output of grub-probe: # grub2-probe -v -t fs /boot/ grub2-probe: info: cannot open `/boot/grub2/device.map': No such file or directory. grub2-probe: info: Looking for /dev/mapper/pdc_djabadcbjep1. grub2-probe: info: /dev/mapper/pdc_djabadcbje is a parent of /dev/mapper/pdc_djabadcbjep1. grub2-probe: info: Looking for /dev/mapper/pdc_djabadcbjep1. grub2-probe: info: /dev/mapper/pdc_djabadcbje is a parent of /dev/mapper/pdc_djabadcbjep1. grub2-probe: info: Looking for /dev/mapper/pdc_djabadcbjep1. grub2-probe: info: /dev/mapper/pdc_djabadcbje is a parent of /dev/mapper/pdc_djabadcbjep1. grub2-probe: info: opening hostdisk//dev/mapper/pdc_djabadcbje. grub2-probe: info: the size of hostdisk//dev/mapper/pdc_djabadcbje is 1953124992. grub2-probe: error: unknown filesystem. I think that the issue is in util/get_root.c in convert_system_partition_to_system_disk() function - it does not seem to determine if the device is partition or not for device-mapper case. The following change seems to fix the issue, however I'm not really familiar with device mapper and can't be sure if it's correct: /* Counter-intuitively, device-mapper refers to the disk-like device containing a DM-RAID partition device as a "child" of the partition device. */ child = dm_tree_next_child (&handle, node, 0); if (! child) { grub_util_info ("%s has no DM children", path); goto devmapper_out; } child_uuid = dm_tree_node_get_uuid (child); if (! child_uuid) { grub_util_info ("%s child has no DM uuid", path); goto devmapper_out; } else if (strncmp (child_uuid, "DMRAID-", 7) != 0) { grub_util_info ("%s child is not DM-RAID", path); goto devmapper_out; } child_name = dm_tree_node_get_name (child); if (! child_name) { grub_util_info ("%s child has no DM name", path); goto devmapper_out; } mapper_name = child_name; + *is_part = 1; -- -- Regards, Eldar Yusupov.
_______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel