• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[Gelöst] Verhindert Dualboot Update von Vista auf SP2?

Hallo,

ich poste meine Anfrage mal in diesen Bereich. Falls der falsch ist, dann bitte umhängen.

Auf meinem Notebook ist neben SUSE noch Vista Home Premium mit SP1 installiert. Per GRUB kann ich auswählen, welches System starten soll.

Mit dem anstehenden Update von Vista auf SP2 habe ich Probleme. Zuerst bricht er mit dem Fehlercode 800706BE ab. Der nächste Versuch mit abgeschalteter Firewall und deaktiviertem Virenscanner bringt den Fehlercode 8004005. Beim g**geln danach habe ich gelesen, dass das Update bei Dualboot-Maschinen nicht so einfach ist, weil sich irgendwelche Einstellungen wohl gegenseitig stören (jedenfalls beim Update).

Neben Vista habe ich innerhalb von SUSE Win XP in einer VirtualBox installiert.

Hat jemand Erfahrungen damit bzw. Lösungsorschläge?

Vielen Dank im Voraus!
 
Gerüchten zufolge (ich habe selbst kein Vista) scheitert bei Vista die Service-Pack-Installation, wenn im MBR nicht der Windows-eigene Bootcode steht und die Windows-Partition nicht das Bootflag hat. Also wäre folgende Vorgehensweise am einfachsten:
  • Falls Linux in einer primären Partition installiert ist, stellst Du sicher, dass Grub im Bootsektor der Root-Partition installiert ist, und gibst dieser das Bootflag (bei openSUSE häufig sowieso der Fall).
  • Falls Linux in einer logischen Partition installiert ist, stellst Du sicher, dass Grub im Bootsektor der erweiterten (!) Partition installiert ist, und gibst dieser das Bootflag (bei openSUSE häufig sowieso der Fall).
  • Nun kannst Du den MBR ohne Gefahr für Linux mit dem Windows-eigenen Bootcode überschreiben (falls dieser dort nicht ohnehin steht; openSUSE überschreibt den Windows-Bootcode in der Regel nicht).
  • Für die Service-Pack-Installation stellst Du das Bootflag vorübergehend auf die Windows-Partition um. Anschließend stellst Du es mithilfe irgendeiner Live-CD (kann auch die von openSUSE sein) wieder zurück auf die primäre bzw. erweiterte Partition, in der Grub installiert ist.
Könntest Du die Ausgabe von "sudo dd if=/dev/sda bs=512 count=1 | hexdump -C" posten?
 
OP
D

ddagobertt

Member
Hier die Ausgabe:

Code:
1+0 Datensätze ein
1+0 Datensätze aus
512 Bytes (512 B) kopiert00000000  31 c0 8e d0 bc 00 7c 8e  c0 8e d8 bf 1e 06 be 1e  |1.....|.........|
00000010  7c 50 57 b9 e2 01 f3 a4  b9 00 02 f3 ab cb 80 fa  ||PW.............|
00000020  8f 7e 02 b2 80 52 52 bb  94 07 8d af 2a 00 8a 46  |.~...RR.....*..F|
, 4,2743e-05 s, 12,0 MB/s
00000030  04 66 8b 7e 08 66 03 3e  b3 06 84 c0 74 0b 80 7e  |.f.~.f.>....t..~|
00000040  00 80 75 05 66 89 3e 84  0b 83 c5 10 83 c3 09 80  |..u.f.>.........|
00000050  fb b8 75 da b8 e1 00 c1  e0 02 89 c6 66 8b ac 00  |..u.........f...|
00000060  08 66 85 ed 75 19 b8 c5  06 be bb 06 e8 a5 00 89  |.f..u...........|
00000070  c6 e8 9a 00 5a 31 c0 cd  13 cd 18 fb f4 eb fc 66  |....Z1.........f|
00000080  89 2e b3 06 be ab 06 b4  42 5a 52 cd 13 b8 d9 06  |........BZR.....|
00000090  72 d7 a0 00 7c 84 c0 74  03 a1 fe 7d 3d 55 aa b8  |r...|..t...}=U..|
000000a0  e9 06 75 c5 66 89 ee 5a  e9 55 75 10 00 01 00 00  |..u.f..Z.Uu.....|
000000b0  7c 00 00 00 00 00 00 00  00 00 00 45 72 72 6f 72  ||..........Error|
000000c0  20 00 0d 0a 00 4e 6f 20  61 63 74 69 76 65 20 70  | ....No active p|
000000d0  61 72 74 69 74 69 6f 6e  00 44 69 73 6b 20 72 65  |artition.Disk re|
000000e0  61 64 20 65 72 72 6f 72  00 4e 6f 20 6f 70 65 72  |ad error.No oper|
000000f0  61 74 69 6e 67 20 73 79  73 74 65 6d 00 49 6e 76  |ating system.Inv|
00000100  61 6c 69 64 20 43 48 53  20 72 65 61 64 00 e8 03  |alid CHS read...|
00000110  00 be c2 06 60 ac b4 0e  bb 01 00 cd 10 ac 84 c0  |....`...........|
00000120  75 f4 61 c3 00 00 00 00  00 00 00 00 00 00 00 00  |u.a.............|
00000130  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000190  1c 80 b6 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  29 6c 64 97 00 00 00 01  |........)ld.....|
000001c0  01 00 0c fe ff ff 3f 00  00 00 fc 8a 38 01 00 fe  |......?.....8...|
000001d0  ff ff 07 fe ff ff 3b 8b  38 01 f1 eb 18 0a 80 fe  |......;.8.......|
000001e0  ff ff 0f fe ff ff 2c 77  51 0b 95 5f f1 19 00 00  |......,wQ.._....|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|
00000200
 
Du hast den generischen Bootcode von openSUSE bzw. vielmehr NetBSD im MBR (Offsets 0x0 bis 0x1b7), und das Bootflag liegt auf der erweiterten Partition /dev/sda3, in der vermutlich Linux installiert ist (0x80 an Offset 0x1de).
  • Halte eine Live-CD mit fdisk, cfdisk, parted, gparted o. ä. bereit (sollte auf jeder Linux-Live-CD drauf sein).
  • Setze das Bootflag auf die Partition, auf der der Windows-Bootmanager (versteckte Datei namens "bootmgr" im Stammverzeichnis) installiert ist (/dev/sda1 oder /dev/sda2). Linux bootet jetzt natürlich erst mal nicht mehr ...
  • Boote von der Vista-Installations-DVD, geh in die Eingabeaufforderung und führe "bootrec /FixMbr" aus (Anleitung).
  • Die Service-Pack-Installation sollte nun funktionieren.
  • Boote von der bereitgehaltenen Live-CD und setze das Bootflag wieder auf /dev/sda3, um Linux wieder bootfähig zu machen. (Es ist nicht notwendig, den MBR wieder mit dem openSUSE- bzw. NetBSD-Code zu überschreiben, weil der von Vista es auch tut.)
 
OP
D

ddagobertt

Member
Danke für den Hinweis.

Ich gehe davon aus, dass ich mit
Code:
dd if=/dev/hda of=/PATH/DATEI bs=512 count=1
den MBR vorher auf einen Stick sichern und danach mit
Code:
dd if=/PATH/DATEI of=/dev/hda bs=512 count=1
wieder zurückspielen kann, denn ich möchte den originalen MBR wieder haben.

Liest hier jemand mit, der das Ganze schon mal durchgeführt hat und seiner Erfahrungen mitteilen will?
 
Klar kannst Du den jetzigen MBR so zurückspielen. Notwendig ist es aber eigentlich nicht, weil der openSUSE- bzw. NetBSD- und der Vista-MBR letztlich genau dasselbe tun, nämlich von der aktiven Partition booten (welche auch immer das ist; der Vista-MBR kann auch Grub von einer Linux-Partition booten, wenn diese aktiv ist). Schaden tut es aber auch nicht ...

Mit Vista habe ich das noch nicht gemacht, wohl aber mit XP (mehrfach), und es hat immer reibungslos funktioniert. Auf meinem aktuellen openSUSE-System bootet der XP-MBR übrigens auch ganz brav Grub aus der aktiven Linux-Partition.
 
OP
D

ddagobertt

Member
Ich will mich über die Feiertage mal daran wagen.

Eine Frage habe ich noch: Ich bin nur im Besitz einer sogenannten Vista-Recovery-CD. Kann ich auch von der booten und den Befehl "bootrec /FixMBR" von dort ausführen?
 
Unter dem Namen "Recovery-CD" wird alles mögliche gehandelt. Wenn es sich um diese CD handelt, dann ja.

Manche OEMs bezeichnen auch ihre CDs, die den Originalzustand des Systems wiederherstellen (d.h. alles plattmachen und das OEM-Image aufspielen), als "Recovery-CDs". Sowas wird aber kaum auf eine einzelne CD passen; das sind selbst bei meinem alten Laptop mit Windows XP schon 5 Stück und dürfte heute wohl eher auf einer DVD daherkommen. Boote doch einfach mal von der CD, die Du hast, und probiere aus, ob Du bis zu einer Eingabeaufforderung kommst, in der es den Befehl "bootrec" gibt (mit "bootrec /?" ausprobieren).

=> Wenn es den Befehl gibt, ist die CD geeignet, wenn nicht, lade die oben genannte herunter.

Notfalls kann man den Vista-Bootcode übrigens auch unter Linux mit "dd" aus einer Windows-DLL oder -EXE extrahieren und in den MBR schreiben.
 
OP
D

ddagobertt

Member
Heute habe endlich genug Zeit gefunden, um das Thema in Ruhe anzugehen.

Bis auf eine Kleinigkeit hat es so, wie in diesem Beitrag beschrieben funktioniert. Allerdings musste ich den vorher gesicherten MBR wieder zurückspielen, damit das System hochfährt. Mit dem Vista MBR scheint das Starten von GRUB nicht zu funktionieren.
 
OP
D

ddagobertt

Member
Wie kann ich das denn erkennen?

Ich habe mit gparted gebootet und dann das Bootflag von sda3 (Linux) auf sda2 (VistaOS) gesetzt. Danach bootete Vista.

Nachher habe ich auf dem gleichen Weg das Bootflag wieder auf sda3 gesetzt.
 
Oben