Comment 19 for bug 476625

Revision history for this message
bdoe (bdoe-att) wrote :

I have a fix for the problem. This affects those with Windows Vista partitions being mis-identified as "Windows Recovery Environment". The problem is that os-prober is using /usr/lib/os-probes/mounted/20microsoft to read specific attributes of the identified Windows drive. One of these attributes is checking for "W.i.n.d.o.w.s. .R.e.c.o.v.e.r.y. .E.n.v.i.r.o.n.m.e.n.t" within C:\boot\BCD. In Vista and Windows 7, the BCD file will have that entry. Windows 7 users avoid this problem because os-prober checks for "W.i.n.d.o.w.s. .7" first, then checks for Windows Recovery Environment. It doesn't even look for a Vista entry, it just assumes the drive is a Vista drive if all other checks fail. The solution, therefore, is to specifically check for "W.i.n.d.o.w.s. .V.i.s.t.a" *before* checking for Windows Recovery Environment, and after checking for Windows 7. Ideally, the presence of "Windows Recovery Environment" should be the last thing checked.

I don't know if this is the ultimate solution, and I don't have an actual Windows Recovery partition to check this against, but the attached file works for me. Simply replace /usr/lib/os-probes/mounted/20microsoft with the attached file and re-run update-grub.?field.comment=I have a fix for the problem. This affects those with Windows Vista partitions being mis-identified as "Windows Recovery Environment". The problem is that os-prober is using /usr/lib/os-probes/mounted/20microsoft to read specific attributes of the identified Windows drive. One of these attributes is checking for "W.i.n.d.o.w.s. .R.e.c.o.v.e.r.y. .E.n.v.i.r.o.n.m.e.n.t" within C:\boot\BCD. In Vista and Windows 7, the BCD file will have that entry. Windows 7 users avoid this problem because os-prober checks for "W.i.n.d.o.w.s. .7" first, then checks for Windows Recovery Environment. It doesn't even look for a Vista entry, it just assumes the drive is a Vista drive if all other checks fail. The solution, therefore, is to specifically check for "W.i.n.d.o.w.s. .V.i.s.t.a" *before* checking for Windows Recovery Environment, and after checking for Windows 7. Ideally, the presence of "Windows Recovery Environment" should be the last thing checked.

I don't know if this is the ultimate solution, and I don't have an actual Windows Recovery partition to check this against, but the attached file works for me. Simply replace /usr/lib/os-probes/mounted/20microsoft with the attached file and re-run update-grub.