yuu_nkjm blog
2011-05-27(Fri) 編集
[Windows 7 (64bit)][Linux] DVD(CD)からブートし,アクティブなパーティションを変更する
誤ったアクティブパーティションフラグの付与
特別な設定をせずWindows 7をインストールしたところ,システムで予約済みが"システム,アクティブ,プライマリパーティション",Cドライブが"ブート,ページファイル,クラッシュダンプ,プライマリパーティション"という状態になっていた.
Windowsにおいて「コンピュータの管理」から,ドライブレター(ドライブ文字)やアクティブなパーティションの変更ができる.この画面において,操作を誤ってアクティブなパーティションを変更してしまった.それを修正しようとしたとき,Windows XPまでの習性で,Cドライブにアクティブフラグを立ててしまった.その後,PCを再起動したところ,"NTLDR is missing"というエラーが出て,ブートできなくなってしまった.
OpenSUSEインストールディスクのRescue Modedによる修正
パーティションのアクティブフラグを修正すれば,ブートできる可能性が高いので,その方法を考えた.Windows 7のインストールディスクを使って回復ツールから修正する方法があるようだが,手元にWindows 7のインストールディスクがなかった.openSUSE11.4のインストールディスクが手元にあったので,これを使う事にした.
openSUSE11.4のインストールディスクを入れ,PCの電源を入れると,インストールメニューが開く.そこで,"Rescue System"を選ぶと,レスキューモードでログインできる
あとは,messageなどを見てHDDのデバイスファイルを確認し,fdiskを行った.fdiskで,アクティブフラグを"システムで予約済み"に立てて終了した.Cドライブのアクティブフラグを下げた方が良かったのだろうがやり忘れた….
fdiskの操作例
対象が今回のWindowsマシンとは異なるが,参考となる操作例を示す.
下記の例をそのまま実行すると,システムがブートしなくなることに注意!
fdisk /dev/sda このディスクのシリンダ数は 243201 に設定されています。 間違いではないのですが、1024 を超えているため、以下の場合 に問題を生じうる事を確認しましょう: 1) ブート時に実行するソフトウェア (例. バージョンが古い LILO) 2) 別の OS のブートやパーティション作成ソフト (例. DOS FDISK, OS/2 FDISK) コマンド (m でヘルプ): m コマンドの動作 a ブート可能フラグをつける b bsd ディスクラベルを編集する c dos 互換フラグをつける d 領域を削除する l 既知の領域タイプをリスト表示する m このメニューを表示する n 新たに領域を作成する o 新たに空の DOS 領域テーブルを作成する p 領域テーブルを表示する q 変更を保存せずに終了する s 空の Sun ディスクラベルを作成する t 領域のシステム ID を変更する u 表示/項目ユニットを変更する v 領域テーブルを照合する w テーブルをディスクに書き込み、終了する x 特別な機能 (エキスパート専用) コマンド (m でヘルプ): p ディスク /dev/sda: 2000.4 GB, 2000398934016 バイト ヘッド 255, セクタ 63, シリンダ 243201 Units = シリンダ数 of 16065 * 512 = 8225280 バイト Disk identifier: 0x000df3e8 デバイス ブート 始点 終点 ブロック Id システム /dev/sda1 1 262 2104483+ 82 Linux スワップ / Solaris /dev/sda2 * 263 2873 20972857+ 83 Linux /dev/sda3 2874 243201 1930434660 83 Linux コマンド (m でヘルプ): a 領域番号 (1-4): 1 コマンド (m でヘルプ): p ディスク /dev/sda: 2000.4 GB, 2000398934016 バイト ヘッド 255, セクタ 63, シリンダ 243201 Units = シリンダ数 of 16065 * 512 = 8225280 バイト Disk identifier: 0x000df3e8 デバイス ブート 始点 終点 ブロック Id システム /dev/sda1 * 1 262 2104483+ 82 Linux スワップ / Solaris /dev/sda2 * 263 2873 20972857+ 83 Linux /dev/sda3 2874 243201 1930434660 83 Linux コマンド (m でヘルプ): a 領域番号 (1-4): 2 コマンド (m でヘルプ): p ディスク /dev/sda: 2000.4 GB, 2000398934016 バイト ヘッド 255, セクタ 63, シリンダ 243201 Units = シリンダ数 of 16065 * 512 = 8225280 バイト Disk identifier: 0x000df3e8 デバイス ブート 始点 終点 ブロック Id システム /dev/sda1 * 1 262 2104483+ 82 Linux スワップ / Solaris /dev/sda2 263 2873 20972857+ 83 Linux /dev/sda3 2874 243201 1930434660 83 Linux コマンド (m でヘルプ): q
上記の例をそのまま実行すると,システムがブートしなくなることに注意!