yuu_nkjm blog
2012-07-20(Fri) [長年日記] 編集
[Windows 7 (64bit)][Troubleshooting][diskpart][bcdedit][bootrec][boot][Windowsお引っ越し] Windowsのブート設定を修復する(ボリュームラベルを修復する,アクティブフラグの確認,ブートローダの再インストール)
Windowsのブートローダ(ブートマネージャ)が壊れたり,HDDの引っ越しをしたりすると,Windowsが起動しなくなることがある.Windowsのインストールディスクを使う事で,ブートローダの修復ができる.
Windowsのインストールディスクを入れて,インストーラを起動する.最初の画面で,システムの修復を選ぶ.自動修復が試みられる.それでうまく行かなかった場合は,コマンドプロンプトより修復を選び,以下の作業を行う.
ボリュームラベルを修復する
隠し領域が先頭にあると,その領域がCドライブ,WindowsをインストールしたドライブがDドライブになってしまう.
diskpart select disk 0 detail disk # システムで予約済みドライブ(volume 1)をなしに select volume c remove letter=C # E(volume 2)をCに select volume e assign letter=c # F(volume 3)をEに select volume f assign letter e # G(volume 4)をFに.volumeの指定は番号でもOK select volume 4 assign letter F
activeフラグを立てる
# Diskpartの起動 C:\>diskpart # diskの選択 DISKPART> list disk (snip) DISKPART> select disk 0 ディスク 0 が選択されました。 # partitionの選択 DISKPART> list partition Partition ### Type Size Offset ------------- ------------------ ------- ------- Partition 1 プライマリ 94M 31KB Partition 2 プライマリ 78G 94MB DISKPART> select partition 2 パーティション 2 が選択されました。 # Diskの詳細確認 DISKPART> DETAIL Disk ディスク ID: 種類 … ブートディスク:いいえ ページファイルディスク:いいえ 休止状態ファイルディスク:いいえ クラッシュダンプディスク:いいえ クラスター化ディスク:いいえ Volume Ltr Label Fs Type Size Status Info ----------------------------------------------- Volume 1 D " " NTFS Partition 94MB 正常 * Volume 2 C " " NTFS Partition 78GB 正常 *がついているのは,現在選択しているパーティションの様だ. # partitionの確認 DISKPART> DETAIL partition パーティション2 種類:07 隠し属性:いいえ アクティブ:いいえ オフセット(バイト):98703360 Volume Ltr Label Fs Type Size Status info Volume2 C " " NTFS Partition 78GB 正常 DISKPART> active DiskPart は現在のパーティションをアクティブとしてマークしました。 DISKPART> exit DiskPart を終了しています...
ブートローダの修正と確認
C:\>bootrec /fixboot 操作は正常に終了しました。 C:\>bootrec /fixmbr 操作は正常に終了しました。 # ブートマネージャの確認 C:\bcdedit Windowsブートマネージャー ------------------------ identifier {bootmgr} device partition=C: path \bootmgr description Windows Boot Manager locale ja-JP default {default} displayorder {default} timeout 30 Windowsブートローダー ------------------------ identifier {bootmgr} device partition=C: path \Windows\system32\winload.exe description Windows 7 Enterprise (回復済み) locale ja-JP recoverysequence {b18-----18} recoveryenabled Yes osdevice partition=C: systemroot \Windows C:\>exit
これで再起動するもダメ.正しくブートするWindowsマシンの「コンピュータの管理」から「ディスク構成」を見ると,OSがインストールされているパーティションにactiveフラグを立てるんじゃなくて,Windows7インストール時に作成されるシステム領域にactiveフラグを立てる必要があるようだ.
C:\>diskpart DISKPART> select disk 0 DISKPART> select partition 1 パーティション 1 が選択されました。 DISKPART> active DiskPart は現在のパーティションをアクティブとしてマークしました。 DISKPART> exit C:\>bootrec /fixboot 操作は正常に終了しました。 C:\>bootrec /fixmbr 操作は正常に終了しました。 # ブートマネージャの確認 C:\bcdedit Windowsブートマネージャー ------------------------ identifier {bootmgr} device partition=D: path \bootmgr description Windows Boot Manager locale ja-JP default {default} displayorder {default} timeout 30 Windowsブートローダー ------------------------ identifier {bootmgr} device partition=C: path \Windows\system32\winload.exe description Windows 7 Enterprise (回復済み) locale ja-JP recoverysequence {b18-----18} recoveryenabled Yes osdevice partition=C: systemroot \Windows C:\>exit
これで再起動するとうまくいった.ヤレヤレ.
参考ページ
- 備忘録:Windows7が起動しなくなってスタートアップ修復もできないときの対処法 - Dull as a Butterknife the Next Generation
- Windows7 でのMBR修復方法 | MEMO-LOG
正常にブートするときの各パーティションにつけられた属性
2012-07-18(Wed) [長年日記] 編集
[Windows 7 (64bit)][Troubleshooting][bcdedit][ntldr][boot] Windowsのブート(起動)設定の編集(bcdedit,ブートマネージャ,ブートローダの変更)
回復の見通し
簡単にWindowsのブート設定をいじる
「msconfigコマンドのブートのタブ」「システムの詳細設定→起動と回復」から,簡単なものは操作できる.全てをいじるには,bcdeditコマンド,bootrecコマンドを使う.
NTLDRからLinuxをブートする
Windowsのブートローダ(ntldr)からLinuxを起動するには,NTLDRからgrubをロードして,そこからLinuxを立ち上げるのがよさそう.
MBRを壊した場合→割りと直せる
Linuxのデュアルブート設定を失敗してMBRのブートローダ部分を壊してしまっただけなら,bcdeditでなんとかなる.MBRのパーティションテーブル部分まで壊してしまったら「スタートアップ修復」をする.関連ページ1を見ると,復活させられそうだが,修復確率はどんなもんなのだろうか.
NTFSのPBRを壊した場合→ツラい
NTFSパーティションの先頭セクタ(PBR,ブートセクタ)をぶっ壊したら,Windowsの標準機能だと復旧は難しそう.TestDiskを使うしかないのか.GPartedも使えるのかな.ext3やext4はPBRを基本的に使わないみたいなので,壊す心配はなさそう.NTFSだとファイルシステムのメタ情報の格納に使うらしく,PBR壊れるとつらいな.
ブートローダ,ブートマネージャの設定を変更する
Windowsのインストールディスクから回復コンソールを起動.ブートローダのパーティションを変更.
bcdedit windows ブートマネジャー ----------- identifier {bootmgr} device partition C: windows ブートローダー ----------- identifier {default} device partition D: osdevice partition D:
bcdedit /set {bootmgr} device partition=D: bcdedit /set {default} device partition=C: bcdedit /set {default} osdevice partition=C:
bcdedit windows ブートマネジャー ----------- identifier {bootmgr} device partition D: windows ブートローダー ----------- identifier {default} partition C: osdevice partition C
関連ページ
-
win7 システムの修復
このページが良くまとまっている. - パーティションテーブルが壊れたHDDを復元するには - @IT
- Schwarze SQ: 吹き飛んだパーティションをTestdiskで修復した
- taka8aru: WindowsのブートローダーでLinuxとデュアルブートする方法 - Ubuntu 11.04/12.04, Grub2の場合
WindowsのブートローダからLinuxを起動するためのツールとしてgrub4dosを使用します(以下、設定済みの場合は4、5、6はスキップしてかまいません)。 grldrとgrldr.mbrを c:\ に(Cドライブの直下に)コピーします。 Linuxを起動するためのメニューを作成します。 以下の内容で C:\ に menu.lst という名前のテキストファイルを作成します。 2行目 hd0,6 の2番目の数字は、Ubuntu本体のパーティション番号マイナス1の数字です。 sda7の場合は hd0,6 とします。 title Linux root (hd0,6) kernel /boot/grub/core.img WindowsのブートメニューにUbuntuを追加します。 Windows 7/Vistaの場合、管理者モードのDOS窓を開き、次のコマンドを実行します。 2行目以降の {xxxx} は、1行目の実行結果で表示されるidを指定します。 追加後、引数なしのbcdeditで「リアルモードブートセクター」のところに表示されることを確認します。 bcdedit /create /d "Linux" /application bootsector bcdedit /set {xxxx} device partition=C: bcdedit /set {xxxx} path \grldr.mbr bcdedit /displayorder {xxxx} /addlast
- bcdeditでブート・メニューの表示順序やデフォルトを変更する - @IT