With multiple Linux OS installs on a single block device additional false menuentry's for the 'foreign' OS built by linux-boot-prober are generated when there are double-quoted kernel command-line options present.
When a kernel command-line option contains an embedded space such as this example from /boot/grub/grub.cfg:
linux /vmlinuz-4.13.0-19-lowlatency root=/dev/mapper/VG_OS-ubuntu_16.04_rootfs ro nopat pci=use_crs,realloc,assign-busses,pcie_scan_all acpi_osi=! "acpi_osi=Windows 2006" splash $vt_handoff
The result from calling linux-boot-prober is multiple entries with the name of the embedded-space parameter:
# linux-boot-prober /dev/sdb3
/dev/sdb3:/dev/sdb3:Ubuntu:/boot/vmlinuz-4.13.0-19-lowlatency:/boot/initrd.img-4.13.0-19-lowlatency:root=UUID=5a7fa7e3-941d-4b88-a948-d736b5fdc93f ro acpi_osi=! "acpi_osi=Windows 2006" pci=assign-busses,pcie_scan_all,realloc
/dev/sdb3:/dev/sdb3:Ubuntu, with Linux 4.13.0-19-lowlatency:/boot/vmlinuz-4.13.0-19-lowlatency:/boot/initrd.img-4.13.0-19-lowlatency:root=UUID=5a7fa7e3-941d-4b88-a948-d736b5fdc93f ro acpi_osi=! "acpi_osi=Windows 2006" pci=assign-busses,pcie_scan_all,realloc
/dev/sdb3:/dev/sdb3:Ubuntu, with Linux 4.13.0-19-lowlatency (recovery mode):/boot/vmlinuz-4.13.0-19-lowlatency:/boot/initrd.img-4.13.0-19-lowlatency:root=UUID=5a7fa7e3-941d-4b88-a948-d736b5fdc93f ro single nomodeset acpi_osi=! "acpi_osi=Windows 2006" pci=assign-busses,pcie_scan_all,realloc
/dev/sdb3:/dev/sdb3:Ubuntu, with Linux 3.16.0-031600-lowlatency:/boot/vmlinuz-3.16.0-031600-lowlatency:/boot/initrd.img-3.16.0-031600-lowlatency:root=UUID=5a7fa7e3-941d-4b88-a948-d736b5fdc93f ro acpi_osi=! "acpi_osi=Windows 2006" pci=assign-busses,pcie_scan_all,realloc
/dev/sdb3:/dev/sdb3:Ubuntu, with Linux 3.16.0-031600-lowlatency (recovery mode):/boot/vmlinuz-3.16.0-031600-lowlatency:/boot/initrd.img-3.16.0-031600-lowlatency:root=UUID=5a7fa7e3-941d-4b88-a948-d736b5fdc93f ro single nomodeset acpi_osi=! "acpi_osi=Windows 2006" pci=assign-busses,pcie_scan_all,realloc
/dev/sdb3:/dev/sdb3:Ubuntu, with Linux 3.15.10-031510-lowlatency:/boot/vmlinuz-3.15.10-031510-lowlatency:/boot/initrd.img-3.15.10-031510-lowlatency:root=UUID=5a7fa7e3-941d-4b88-a948-d736b5fdc93f ro acpi_osi=! "acpi_osi=Windows 2006" pci=assign-busses,pcie_scan_all,realloc
/dev/sdb3:/dev/sdb3:Ubuntu, with Linux 3.15.10-031510-lowlatency (recovery mode):/boot/vmlinuz-3.15.10-031510-lowlatency:/boot/initrd.img-3.15.10-031510-lowlatency:root=UUID=5a7fa7e3-941d-4b88-a948-d736b5fdc93f ro single nomodeset acpi_osi=! "acpi_osi=Windows 2006" pci=assign-busses,pcie_scan_all,realloc
/dev/sdb3:/dev/sdb3:acpi_osi=Windows 2006:/boot/vmlinuz-4.13.0-19-lowlatency:/boot/initrd.img-4.13.0-19-lowlatency:root=UUID=e0d25d21-b586-4611-8acc-637b1dca7fa8 ro single nomodeset acpi_osi=! "acpi_osi=Windows 2006" pci=assign-busses,pcie_scan_all,realloc
/dev/sdb3:/dev/sdb3:acpi_osi=Windows 2006:/boot/vmlinuz-3.16.0-031600-lowlatency:/boot/initrd.img-3.16.0-031600-lowlatency:root=UUID=e0d25d21-b586-4611-8acc-637b1dca7fa8 ro single nomodeset acpi_osi=! "acpi_osi=Windows 2006" pci=assign-busses,pcie_scan_all,realloc
/dev/sdb3:/dev/sdb3:acpi_osi=Windows 2006:/boot/vmlinuz-3.15.10-031510-lowlatency:/boot/initrd.img-3.15.10-031510-lowlatency:root=UUID=e0d25d21-b586-4611-8acc-637b1dca7fa8 ro single nomodeset acpi_osi=! "acpi_osi=Windows 2006" pci=assign-busses,pcie_scan_all,realloc
/dev/sdb3:/dev/sdb3:acpi_osi=Windows 2006:/boot/vmlinuz-4.13.0-19-lowlatency:/boot/initrd.img-4.13.0-19-lowlatency:root=UUID=e0d25d21-b586-4611-8acc-637b1dca7fa8 ro single nomodeset acpi_osi=! "acpi_osi=Windows 2006" pci=assign-busses,pcie_scan_all,realloc
/dev/sdb3:/dev/sdb3:acpi_osi=Windows 2006:/boot/vmlinuz-3.16.0-031600-lowlatency:/boot/initrd.img-3.16.0-031600-lowlatency:root=UUID=e0d25d21-b586-4611-8acc-637b1dca7fa8 ro single nomodeset acpi_osi=! "acpi_osi=Windows 2006" pci=assign-busses,pcie_scan_all,realloc
/dev/sdb3:/dev/sdb3:acpi_osi=Windows 2006:/boot/vmlinuz-3.15.10-031510-lowlatency:/boot/initrd.img-3.15.10-031510-lowlatency:root=UUID=e0d25d21-b586-4611-8acc-637b1dca7fa8 ro single nomodeset acpi_osi=! "acpi_osi=Windows 2006" pci=assign-busses,pcie_scan_all,realloc
/dev/sdb3:/dev/sdb3:acpi_osi=Windows 2006:/boot/vmlinuz-4.13.0-19-lowlatency:/boot/initrd.img-4.13.0-19-lowlatency:root=UUID=e0d25d21-b586-4611-8acc-637b1dca7fa8 ro single nomodeset acpi_osi=! "acpi_osi=Windows 2006" pci=assign-busses,pcie_scan_all,realloc
/dev/sdb3:/dev/sdb3:acpi_osi=Windows 2006:/boot/vmlinuz-3.16.0-031600-lowlatency:/boot/initrd.img-3.16.0-031600-lowlatency:root=UUID=e0d25d21-b586-4611-8acc-637b1dca7fa8 ro single nomodeset acpi_osi=! "acpi_osi=Windows 2006" pci=assign-busses,pcie_scan_all,realloc
/dev/sdb3:/dev/sdb3:acpi_osi=Windows 2006:/boot/vmlinuz-3.15.10-031510-lowlatency:/boot/initrd.img-3.15.10-031510-lowlatency:root=UUID=e0d25d21-b586-4611-8acc-637b1dca7fa8 ro single nomodeset acpi_osi=! "acpi_osi=Windows 2006" pci=assign-busses,pcie_scan_all,realloc
which results in:
menuentry 'Ubuntu, with Linux 4.13.0-19-lowlatency (recovery mode) (on /dev/sdb3)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/boot/vmlinuz-4.13.0-19-lowlatency-root=UUID=5a7fa7e3-941d-4b88-a948-d736b5fdc93f ro single nomodeset acpi_osi=! "acpi_osi=Windows 2006" pci=assign-busses,pcie_scan_all,realloc-5a7fa7e3-941d-4b88-a948-d736b5fdc93f' {
linux /boot/vmlinuz-4.13.0-19-lowlatency root=UUID=5a7fa7e3-941d-4b88-a948-d736b5fdc93f ro single
nomodeset acpi_osi=! "acpi_osi=Windows 2006" pci=assign-busses,pcie_scan_all,realloc
... plus several false menuentry's added with the name set to the embedded-space option of the form:
menuentry 'acpi_osi=Windows 2006 (on /dev/sdb3)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/boot/vmlinuz-4.13.0-19-lowlatency-root=UUID=e0d25d21-b586-4611-8acc-637b1dca7fa8 ro single nomodeset acpi_osi=! "acpi_osi=Windows 2006" pci=assign-busses,pcie_scan_all,realloc-5a7fa7e3-941d-4b88-a948-d736b5fdc93f' {
linux /boot/vmlinuz-4.13.0-19-lowlatency root=UUID=e0d25d21-b586-4611-8acc-637b1dca7fa8 ro single nomodeset acpi_osi=! "acpi_osi=Windows 2006" pci=assign-busses,pcie_scan_all,realloc
$ grep "menuentry 'acpi_osi=" /boot/grub/grub.cfg | wc -l
9
This proposed patch avoids the delimiter confusion and seems to address the other 'gotchyas' relating to multiple delimiters mentioned in the code comments.