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 

これで再起動するとうまくいった.ヤレヤレ.

参考ページ

正常にブートするときの各パーティションにつけられた属性

画像の説明


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

関連ページ

  1. win7 システムの修復
    このページが良くまとまっている.
  2. パーティションテーブルが壊れたHDDを復元するには - @IT
  3. Schwarze SQ: 吹き飛んだパーティションをTestdiskで修復した
  4. 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
    
  5. bcdeditでブート・メニューの表示順序やデフォルトを変更する - @IT

トップ 最新 追記 設定
2006|01|06|12|
2007|06|09|
2008|01|03|04|06|07|08|09|10|12|
2009|01|02|05|06|07|08|10|11|12|
2010|03|04|05|06|07|08|09|10|11|
2011|01|02|03|04|05|06|07|08|09|11|12|
2012|01|02|04|06|07|08|10|11|12|
2013|01|02|03|07|08|10|11|12|
2014|01|02|04|05|06|07|08|09|10|11|
2015|01|02|07|11|12|
2016|01|03|05|07|08|09|