Bug#589676: [os-prober] Confuses the Vista partitions
I've quickly created a patch for my Acer Aspire 7220 with Windows Vista préinstalled against version 1.39 of os-prober (Debian Sid/unstable).
Explanation :
/dev/sda1 is my rescue Vista partition
fdisk reports it as ID 12 Compaq diagnostics (Ah, Acer has something to do with Compaq ?)
/mnt/sda1/boot/bcd reports it as "Windows Setup"
/dev/sda2 is my Vista partition
fdisk reports it as ID 6 FAT16 (I don't know why Acer didn't format it as NTFS)
/mnt/sda2/boot/bcd reports it as "Microsoft Windows Vista"
Before my patch
WRONG
#os-prober
/dev/sda1:Windows Vista (loader):Windows:chain
/dev/sda2:Windows Recovery Environment (loader):Windows1:chain
After my patch
GOOD
#os-prober
/dev/sda1:Windows Recovery Environment (loader):Windows:chain
/dev/sda2:Windows Vista (loader):Windows1:chain
Of course, this patch would not solve all issues. For that we'll need to know all the various rescue bcd labels used by manufacturers for their rescue partitions but at least it gives a hint on how to fix this issue.
Hope it helps,
Jérôme
--- 20microsoft.orig 2010-03-23 14:29:02.000000000 +0100
+++ 20microsoft 2010-07-23 18:44:30.000000000 +0200
@@ -19,8 +19,18 @@
# Vista (previously Longhorn)
if item_in_dir -q bootmgr "$2" && boot="$(item_in_dir boot "$2")" &&
bcd="$(item_in_dir bcd "$2/$boot")"; then
- if grep -qs "W.i.n.d.o.w.s. .7" "$2/$boot/$bcd"; then
+ # jdegreef at gmail dot com
+ # Debian bug#589676: [os-prober] Confuses the Vista partitions
+ # see also https://bugs.launchpad.net/ubuntu/+source/os-prober/+bug/476625 for more info
+ # if grep -qs "W.i.n.d.o.w.s. .7" "$2/$boot/$bcd"; then
+ # long="Windows 7 (loader)"
+ if grep -qs "W.i.n.d.o.w.s. .V.i.s.t.a" "$2/$boot/$bcd"; then
+ long="Windows Vista (loader)"
+ elif grep -qs "W.i.n.d.o.w.s. .7" "$2/$boot/$bcd"; then
long="Windows 7 (loader)"
+ elif grep -qs "W.i.n.d.o.w.s. .S.e.t.u.p" "$2/$boot/$bcd"; then
+ long="Windows Recovery Environment (loader)"
+ # jdegreef end
elif grep -qs "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" "$2/$boot/$bcd"; then
long="Windows Recovery Environment (loader)"
elif grep -qs "W.i.n.d.o.w.s. .S.e.r.v.e.r. .2.0.0.8. .R.2." "$2/$boot/$bcd"; then
@@ -28,7 +38,8 @@
elif grep -qs "W.i.n.d.o.w.s. .S.e.r.v.e.r. .2.0.0.8." "$2/$boot/$bcd"; then
long="Windows Server 2008 (loader)"
else
- long="Windows Vista (loader)"
+ # jdegr long="Windows Vista (loader)"
+ long="Unknown Windows Partition (loader)"
fi
short=Windows
# 2000/XP/NT4.0
Reply to: