I've written a POSIX shell script that can reliably identify the name of the current default* BCD boot menu option in any bootable Windows partition that uses a Boot Configuration Data store. It is based on the fact that a BCD store is a standard Windows registry hive, and there is now a LGPL v2.1 library available to reliably read registry hives. If affected users can test it and report back using the instructions below, it might be a candidate for reliable detection in future Ubuntu releases. Here's an example of (verbose) output on the system I described earlier: $ DEBUG=1 ./probe_bcd /dev/sda1 /tmp/sda1/boot/bcd Debug: Partition: sda1 Debug: BCD store: /tmp/sda1/boot/bcd Debug: Using temporary XML file: /tmp/sda1.bcd.xml Debug: sda1 default boot entry is GUID {7619dcc9-fafe-11d9-b411-000476eba25f} Debug: "VAIO Recovery Environment" is the default boot entry (GUID: {7619dcc9-fafe-11d9-b411-000476eba25f}) VAIO Recovery Environment $ DEBUG=1 ./probe_bcd /dev/sda2 /tmp/sda2/Boot/BCD Debug: Partition: sda2 Debug: BCD store: /tmp/sda2/Boot/BCD Debug: Using temporary XML file: /tmp/sda2.bcd.xml Debug: sda2 default boot entry is GUID {21443b0f-f13b-11dd-9361-9de0f6f6dffb} Debug: "Windows Vista (TM) Home Premium (recovered) " is the default boot entry (GUID: {21443b0f-f13b-11dd-9361-9de0f6f6dffb}) Windows Vista (TM) Home Premium (recovered) The "Debug" lines are purely for testing and are written to STDERR. Without DEBUG the only output is the default boot entry name: $ ./probe_bcd /dev/sda1 /tmp/sda1/boot/bcd VAIO Recovery Environment $ ./probe_bcd /dev/sda2 /tmp/sda2/Boot/BCD Windows Vista (TM) Home Premium (recovered) The script is designed to be called to assign a value to a variable, e.g: long=probe_bcd $partition $bcd The script depends upon sed and gawk. It achieves its results by converting the BCD store, which is a Windows registry hive, to XML using the (currently unpackaged) library "hivex", part of the "libguest" group of libraries and tools. http://libguestfs.org/hivexml.1.html http://libguestfs.org/ Debian currently has a Request For Packaging bug filed for hivex to which I've responded with an Intent To Package (ITP) and have made an initial upload to Debian Mentors: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=573070 hivexml (the BCD to XML converter) depends on libc6 and libxml2 at a minimum, with other dependencies if OCCAM and Perl support are required for other tools in the library. I built hivex locally to check it would work with my "bcd_probe" script but now I've proved it works I have created a Debian/Ubuntu package which is available from my PPA. If you'd like to test this against a system where the probing is guessing incorrectly, download the attached script files probe_bcd and get_node_name.gawk, install hivex from my PPA, and do something like this: #----- BEGIN ----- # determine which architecture the system uses ARCH=$(apt-get -v | head -n1 | cut -d" " -f 4) # install the hivex package wget https://launchpad.net/~intuitivenipple/+archive/ppa/+files/libhivex_1.2.1-1_${ARCH}.deb wget https://edge.launchpad.net/~intuitivenipple/+archive/ppa/+files/hivex_1.2.1-1_${ARCH}.deb dpkg -i libhivex_1.2.1-1_${ARCH}.deb hivex_1.2.1-1_${ARCH}.deb # fetch the scripts wget http://launchpadlibrarian.net/42838499/get_node_name.gawk wget http://launchpadlibrarian.net/42837456/probe_bcd # make the shell script executable chmod a+x probe_bcd # mount the disk partitions containing the bootable Windows systems # tailor these to the disk partitions on your system sudo mkdir /tmp/sda1 /tmp/sda2 # mount the partitions sudo mount /dev/sda1 /tmp/sda1 sudo mount /dev/sda2 /tmp/sda2 # analyse the partitions bcd=$(find /tmp/sda1 -maxdepth 2 -ipath '*/boot/bcd' 2>/dev/null) echo "BCD store: $bcd" ./probe_bcd /dev/sda1 $bcd bcd=$(find /tmp/sda2 -maxdepth 2 -ipath '*/boot/bcd' 2>/dev/null) echo "BCD store: $bcd" ./probe_bcd /dev/sda2 $bcd sudo umount /tmp/sda2 sudo umount /tmp/sda1 sudo rmdir /tmp/sda2 /tmp/sda1 #----- END -----