Windows 7とUbuntuをデュアルブートするラップトップを持っていますが、Windowsを起動しなくなりました。 Windowsパーティションのブートセクター(MBRではなくパーティションの先頭!)が壊れていると確信しています。 Linuxから復元するにはどうすればよいですか?
(ラップトップにはDVDドライブがありません。前回、何度か試行したので、WindowsインストールUSBを作成したくありません。また、Windowsインストーラーは、ブートセクターだけでなく、MBRも上書きし、強制終了します。 GRUBなので、後でUbuntuを修正する必要があります。)
詳細:
パーティションのレイアウトは次のとおりです。
Device Boot Start End Blocks Id System
/dev/sda1 54 151129367 75564657 5 Extended
/dev/sda2 151129368 302247179 75558906 7 HPFS/NTFS/exFAT
/dev/sda3 * 302247180 312497351 5125086 c W95 FAT32 (LBA)
/dev/sda4 312497352 312578243 40446 ef EFI (FAT-12/16/32)
/dev/sda5 108 4194827 2097360 82 Linux swap / Solaris
/dev/sda6 4194882 151129367 73467243 83 Linux
sda1は、Linux(sda4、sda5、およびsda6)を含む拡張パーティションです。 sda3はリカバリパーティションです(変更されたWindows XPのようです)。 sda2はWindows7パーティション(NTFS)です。 Linuxからマウントできますが、すべてがそこにあるようです。
GrubはWindows7を起動できません。起動メニューには“Windows”
(おかしな引用符に注意)というエントリが含まれており、もちろん失敗して(hd0,1)
= sda1を起動しようとします。 手動で sda3を起動できますが、それは意味がありません。
Sda2(Windows 7)を起動しようとすると、「NTLDRが見つかりません」というメッセージが表示されます。 Windows 7はNTLDRを使用せず、BOOTMGRを使用するため、これは奇妙です。これがどのように中断されたかは覚えていませんが(しばらく前に発生しました)、そのパーティションに間違ったブートセクタをインストールしようとした回復ツールがあると思います。これは、パーティションの始まりがどのように見えるかです。
$ Sudo dd if=/dev/sda2 bs=512 count=1 | hd
00000000 eb 52 90 4e 54 46 53 20 20 20 20 00 02 08 00 00 |.R.NTFS .....|
00000010 00 00 00 00 00 f8 00 00 36 00 d6 00 18 0d 02 09 |........6.......|
00000020 00 00 00 00 80 00 80 00 f3 df 01 09 00 00 00 00 |................|
[...]
00000170 b4 01 8b f0 ac 3c 00 74 09 b4 0e bb 07 00 cd 10 |.....<.t........|
00000180 eb f2 c3 0d 0a 41 20 64 69 73 6b 20 72 65 61 64 |.....A disk read|
00000190 20 65 72 72 6f 72 20 6f 63 63 75 72 72 65 64 00 | error occurred.|
000001a0 0d 0a 4e 54 4c 44 52 20 69 73 20 6d 69 73 73 69 |..NTLDR is missi|
000001b0 6e 67 00 0d 0a 4e 54 4c 44 52 20 69 73 20 63 6f |ng...NTLDR is co|
[...]
Update-grubとboot-repairを試しても無駄だったと言わざるを得ません。 Grubがインストールされ、正しく機能しています。問題は、GrubによってチェーンロードされるWindowsローダーです。必要なのは、Linuxの場合はbootsect /nt60 C:
のようなもの、またはブートローダーのクリーンコピーをパーティションに取得する方法です。何か案は?
私がこれを長い間試してきたのはおかしいです、そしてここに投稿した直後に解決策を見つけました。私はWindows7 RecoveryUSBスティックに出くわしました。
スティックから起動します。 USBポートのスティックでコールドブートを実行する必要がありました。そうしないと、PCがそれを認識しませんでした。次に、grubに(hd1)
から起動するように指示する必要がありました。
リカバリディスクはものを修復するために提供するかもしれませんが、それは私にとってはうまくいきませんでした。
コマンドプロンプトを開始し、次の手順を実行します。
ブートローダーをコピーします。 X:はリカバリドライブ、C:はラップトップのパーティションです。
copy x:\windows\boot\pcat\bootmgr c:\bootmgr
attrib +s +h c:\bootmgr
それが機能しない場合は、最初にbootmgrを削除する必要があります。
c:
attrib -s -h bootmgr
del bootmgr
ブートローダーを正しくインストールします。 X:\windows\system32
からの呼び出し:
bootsect /nt60 c:
bootrec /fixboot
2行目は適切な測定のためのものであり、必要かどうかはわかりません。 bootrect /fixmbr
を実行しないでください。これにより、GRUBが上書きされます。
今は機能する可能性がありますが、機能しない場合は、ブートメニューデータ(BCD)を再作成する必要があります。回復プロンプトから:
attrib -s -h C:\boot
ren C:\boot C:\bootbak
bootrec /rebuildbcd
ここで再起動します。 grubに(hd0,2)
またはWindowsパーティションが何であれから起動するように指示すると、動作するはずです。 grub-update
の後、Windows7が再びメニューに正しく表示されます。
リソース: