ブートローダ設定の失敗
Linuxを追加インストールした際、ブートの設定を失敗すると、もとのWindows も Linux も起動できない、と言うこともありえる。
この可能性として
- Grub が起動し、Linuxは起動するが、Windowsが起動しない
- Grub が起動しない
- 始めはGrubが起動し、Windowsが起動したが、リブート後、Grubが起動せず、直接Windowsが起動してしまい、Linuxが起動できない
などがある(実際にこれまでに経験)。
Linux(Plamo)のインストールの最後に行うGrubの設定で
- MBRへインストール、
- 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から起動する。
- CDでブートできるように設定し、起動させ、何かキーボードを入力するとCDからWIndowsのインストールに必要なファイルがロードされる。最後にAdministratorのパスワードを入力する。
- 起動した画面に、復旧(回復)には 'R' を押せと指示があるのでそれに従うと、回復コンソール画面になる。
- ここで キーボードから
- fixmbr
と入力し、復旧するパーティションを適宜指示する。
- 作業がすんだら、再起動し、無事 Windowsが起動するか確認する。
- これで、だめなら、再度、回復コンソールでfixmbr をするか、新規にWindowsをインストールし直すか決断する必要あり。
- 新規インストールすることになっても、Windowsに保存してあるデータは、Linux側からも読むことはできるのでUSBメモリーやCD、DVDなどに保存することは可能。
Grubのみを再インストール(ここでは、Linuxパーティションにインストールする方法へ変更)
- Linux(Plamo)のインストールCD(DVD)を準備して、起動させる。
- root でログイン
- setup を起動
- fdiskなどは設定済みなので、インストール作業に進む
- ターゲットの設定(Linuxをインストールするパーティションを指定)に進む。ただし、フォーマットはしない。
- 5.の後は、インストールは行わず、スキップし、システムの設定の画面に進む
- ここでもGrubの設定以外は、なにも作業は行わない。
- Grubの設定で、Linuxパーティションへの設定を実行する。
- 作業が終了すると、インストールされているLinux の /boot/ に boot.ini XXX.pbr が作成される。(ls /mnt/boot で確認できるはず)
- CDを利用してGrubを起動し、ハードディスクのLinuxを起動させる。
- インストール用CD(DVD)で起動し(Grubが立ち上がる)、Grub の選択画面において、'c'と入力し、以下をキーボードで入力する。
- root (hd0,1) (ここで hdX,Y のX,Yは下を参照)
- configfile /boot/grub/grub.conf
- これを行うと、8で設定した内容でGrubが起動するので、Linux を選択して起動させる。
- インストール用CD(DVD)で起動し(Grubが立ち上がる)、Grub の選択画面において、'c'と入力し、以下をキーボードで入力する。
- Linux側から Windows領域への書き込みは保障されていないので、ネットワークやUSBメモリーを経由してWindows へ2つのファイルを移動させる。
- USBメモリーの場合は、まず、これをマウントしなければならない(X-windowsがすでにインストールしてあり、KDEなどの環境であれば、自動的にマウントしてくれる)ので例えば次のように入力する。"sdb1" は適宜変更する必要あり(下を参照)。
- mount -t vfat /dev/sdb1 /mnt
- cd /boot
- cp boot.ini xxx.pbr /mnt
- umount /mnt
- 以上により、USBメモリーにコピーされたので、Windowsを起動し、コンソール画面(アクセサリー、コンソールで) 2つのファイルをWindowsのトップのフォルダにコピーする。例えば
- cd F: (USB メモリーの位置が F: の場合)
- copy boot.ini XXX.pbr C:\ (Windowsは通常C:\にある)
- 最後に、動作確認を行う。
一番良い方法は、もし、ミスった時は、良く知っている人に指示を仰ぐこと。チャレンジ精神が貴いが、どつぼにはまることもあるので。
※ 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