ブートローダ設定の失敗

Linuxを追加インストールした際、ブートの設定を失敗すると、もとのWindows も Linux も起動できない、と言うこともありえる。

この可能性として

  1. Grub が起動し、Linuxは起動するが、Windowsが起動しない
  2. Grub が起動しない
  3. 始めはGrubが起動し、Windowsが起動したが、リブート後、Grubが起動せず、直接Windowsが起動してしまい、Linuxが起動できない

などがある(実際にこれまでに経験)。

Linux(Plamo)のインストールの最後に行うGrubの設定で

  1. MBRへインストール、
  2. Linuxパーティションにインストール(例えば/dev/sda2 などへ)

があるが、1 と 2は、a の場合になる可能性があり、3は、bの設定の後、ディスクの起動フラグをLinuxのパーティションにしただけの場合にある。PCはハードディスクの起動フラグが立っている部分から起動するが、はじめは、フラグの立っているLinuxのパーティションのGrubが起動するが、1度Windows を起動させると、Windowsが勝手にこの起動フラグを自分のパーテションに変更してしまうためにおこる。

3:の対処方法

Linuxインストール時のGrub設定で作成された boot.ini XXX.pbrをUSBメモリーなどにコピーし、Windowsの大元のフォルダにコピーする(管理者権限がいる)。この2つのファイルは Linuxの /boot/にある。このコピー作業は、下の10.~で説明する。

コピー後、再起動すると、まず、Windowsの管理される画面で、Windows とLinux を選択する画面が表れ、Linux を選択すると、Grub が起動(ここで、また、Windowsの選択する画面が表れる)。

 

1の対処方法

 この原因の可能性としては、(i)Grubの設定ファイルのWindowsの起動部分の記載ミス と、(ii)Windowsのブート部分が変に書き換えられてしまったことが考えられる。

(i) の場合は、起動したGrubの画面において、カーソルでWindwsの行に移動し、'e'を入力し、設定内容を確認する。

  • rootnoverify (hd0,0)
  • makeactive
  • chainloader +1

となっているか( hd0,0 は、PCによって異ることもある。)確認し、OKであれば 'b' を押し、動作できるが確かめる。

 

これで、Windowsが起動しない場合は、Windowsのブートに関係したファイルが壊れている可能性があるので、次に示す Windows の「回復コンソール」で復旧させる。


ここまできて、まだ、起動できない時は、まず、Windows を回復コンソールで起動できるようにし、次に、Grub をMBR にインストールするのはあきらめ、Linuxパーティションにインストールする方法を取る(再度 MBRにインストールを試みても良いが、自己責任で)

「回復コンソール」で復旧

Windows-CD を準備することとAdministrator のパスワード確認し、CDから起動する。

  1. CDでブートできるように設定し、起動させ、何かキーボードを入力するとCDからWIndowsのインストールに必要なファイルがロードされる。最後にAdministratorのパスワードを入力する。
  2. 起動した画面に、復旧(回復)には 'R' を押せと指示があるのでそれに従うと、回復コンソール画面になる。
  3. ここで キーボードから
    • fixmbr

     と入力し、復旧するパーティションを適宜指示する。

  1. 作業がすんだら、再起動し、無事 Windowsが起動するか確認する。
  2. これで、だめなら、再度、回復コンソールでfixmbr をするか、新規にWindowsをインストールし直すか決断する必要あり。
  3. 新規インストールすることになっても、Windowsに保存してあるデータは、Linux側からも読むことはできるのでUSBメモリーやCD、DVDなどに保存することは可能。

Grubのみを再インストール(ここでは、Linuxパーティションにインストールする方法へ変更)

  1. Linux(Plamo)のインストールCD(DVD)を準備して、起動させる。
  2. root でログイン
  3. setup を起動
  4. fdiskなどは設定済みなので、インストール作業に進む
  5. ターゲットの設定(Linuxをインストールするパーティションを指定)に進む。ただし、フォーマットはしない
  6. 5.の後は、インストールは行わず、スキップし、システムの設定の画面に進む
  7. ここでもGrubの設定以外は、なにも作業は行わない。
  8. Grubの設定で、Linuxパーティションへの設定を実行する。
  9. 作業が終了すると、インストールされているLinux の /boot/ に boot.ini XXX.pbr が作成される。(ls /mnt/boot で確認できるはず)
  10. CDを利用してGrubを起動し、ハードディスクのLinuxを起動させる。
    1. インストール用CD(DVD)で起動し(Grubが立ち上がる)、Grub の選択画面において、'c'と入力し、以下をキーボードで入力する。
    • これを行うと、8で設定した内容でGrubが起動するので、Linux を選択して起動させる。
  11. Linux側から Windows領域への書き込みは保障されていないので、ネットワークやUSBメモリーを経由してWindows へ2つのファイルを移動させる。
  12. USBメモリーの場合は、まず、これをマウントしなければならない(X-windowsがすでにインストールしてあり、KDEなどの環境であれば、自動的にマウントしてくれる)ので例えば次のように入力する。"sdb1" は適宜変更する必要あり(下を参照)。
    • mount -t vfat /dev/sdb1 /mnt
    • cd /boot
    • cp boot.ini xxx.pbr /mnt
    • umount /mnt
  13. 以上により、USBメモリーにコピーされたので、Windowsを起動し、コンソール画面(アクセサリー、コンソールで) 2つのファイルをWindowsのトップのフォルダにコピーする。例えば
    1. cd F:   (USB メモリーの位置が F: の場合)
    2. copy boot.ini XXX.pbr C:\ (Windowsは通常C:\にある)
  14. 最後に、動作確認を行う。

一番良い方法は、もし、ミスった時は、良く知っている人に指示を仰ぐこと。チャレンジ精神が貴いが、どつぼにはまることもあるので。

 

※ Windowsの回復コンソールのためにCDから起動したとき、黒い画面になり、動作しない場合があった。?? ノートPCで。USBに指したマウスを外したら、何事もなく起動した。

 


root (hdX,Y) のX,Y

 X: はPCにあるハードディスクの順序番号(1個しかなければ 0)

 Y: Xで指定したハードディスクのパーティションの順序番号(0,1,2,...)

どちらも、X,Yを指定するところまでキーボードで入力後 TABキーを押すと、入力可能なものが表示されるのでそれを参考にできる。

USBのでデバイス名?(/dev/sdc1 など)の確認方法

システムによりUSBメモリが認識されると dmesg の出力の最後尾にその旨表示される。例えば

bash-3.2# dmesg |tail

sd 6:0:0:0: [sdh] 1974271 512-byte hardware sectors: (1.01 GB/963 MiB)
sd 6:0:0:0: [sdh] Write Protect is off
sd 6:0:0:0: [sdh] Mode Sense: 00 00 00 00
sd 6:0:0:0: [sdh] Assuming drive cache: write through
sd 6:0:0:0: [sdh] Assuming drive cache: write through
 sdh: sdh1  <---------------------この文字列
sd 6:0:0:0: [sdh] Attached SCSI removable disk

普通は、Windowsで読み書きできるvfatという形式のファイルシステムなので

mount -t vfat /dev/sdh1 /mnt

により/mnt にマウントできる。/mnt 以外にマウントしたいときは、例えば

mkdir /mnt2 (すでにこのディレクトリがあればこれは不要)

mount -t vfat /dev/sdh1 /mnt2