2011.6.8 ちょこちょこ追記
Win+Linux のマルチブート・ユーザーやったらめちゃ常識的な話ちゃいますやろか(せやろか?、せやで! せやな! せやせや!)
- GRUBをMBRにインストールしてマルチブートしとっってん
- Windows 再インストールしてん
- GRUBが出てけぇへん
- Windows しか起動でけへんねん
Windows はインストール時にMBRのブートストラップを問答無用で書き換えよるんですわな話。起動ディスクを準備しとったらええんですけど初めてやと「どないしたらLinux起動すんのー」あせりまくるという「誰もが一度は通る道」やね。なんつって。。
- INDEX
- 私見ではありますが...
-
GRUB(GRUB2) はMBRではなくLinuxパーティションにインストールして 「Windows の BOOTMGR(NTLDR) → GRUB for DOS(grldr) 」からチェインロードさせるのもエエちゃうかなと思います。MBRを弄る必要がなくなるので。既にMBRにインストール済なら今更かもしれませんが...
まぁどっちゃにしても、GRUB for DOS はHD上のisoイメージブートとかでけて結構便利やから「BOOTMGR(NTLDR) → GRUB for DOS(grldr)」は設定しといて損ないんとちゃいますやろか。
自作機ならほんまにどうでもいいことだったりもしますが。
復旧はどうする?
方法は主に2種類かな?
- LiveCDなどでブートしてGRUBを再インストール
- 起動ディスクなどなんらかの方法でHD上のLinuxをブートして、そのLinux上でGRUB再インストール
ぶっちゃけ【1】の方法はあんまりおすすめできませんなぁ。なんでやいうと、バージョン不整合でややこしかったり、ディストリ提供のGRUBパッケージにしとかんとあとあと不便やし。
ちゅうことで【2】の方法について、むっちゃいろんな方法があるんでワシがわかりやすいかな思てる方法を書いときます。
- GRUB (Legacy)
-
- GRUB for DOS - HD上の
/boot/grub/menu.lst
を読み込み - Super Grub Disk - FD/CD でブートしてメニューから選択
- GRUB for DOS - HD上の
- GRUB2
-
- GRUB for DOS -
/boot/grub/core.img
をチェインロード - Super Grub2 Disk - FD/CD でブートしてメニューから選択
- GRUB for DOS -
もちろん、root, kernel, initrd などを手動で入力してもおkですがパラメータの入力がめちゃメンドくさいかも。
- GRUBの再インストール
-
ディストリによって違いがあると思うんで詳細はディストリのドキュメントを確認するべしです。MBRへのインストールならだいだいはこんなかんじ。
# grub-install /dev/sdx
x のとこは1台目の内蔵HDなら普通は a ですな。(※ P-ATAのHDでは
hda
の場合があります)再設定なんで追加オプションが必要になるかも。Ubuntu(Debian) では
update-grub
コマンドもやっとくべし。【注意】USB HD が sda、内蔵HDDが sdb となってたこともあるのでほんまに用心しとくれやす!
df
コマンドとかで/
(/boot
があれば/boot
優先)のデバイス名を確認したらいいかな。palm84@kubuntu:~$ df -h ファイルシステム サイズ 使用 残り 使用% マウント位置 /dev/sda2 6.9G 3.7G 2.9G 57% / none 245M 272K 245M 1% /dev none 249M 0 249M 0% /dev/shm none 249M 312K 249M 1% /var/run none 249M 0 249M 0% /var/lock none 249M 0 249M 0% /lib/init/rw
この例では
sda
です。2台目のMBRにインストールする場合は、BIOSで設定変更するか起動時にBIOSメニューで選択、もしくは1台目のHDのブートローダでチェインロード設定、などの処置をする必要がありますな。通常1台目のHDからブートしますさかいに。
予備知識・注意点など
- キーボードはUS配列
-
英語版の Linux などでは基本的にキーボードはUS配列となってます。
()は一つ右へずれるとか、=,_とか。コマンドラインを使う場合はご注意。
- 拙作めも :
- USB(メモリ)ブートでは
-
HDの順番が入れ替わります。USBメモリが hd0(1台目HD)内蔵HDが hd1(2台目HD)として認識されます。最近の Ubuntu などでは uuid を使うので問題ないかと思いますが、menu.lst 内の root の指定など変更が必要になるかもしれません。
- 例 :
root (hd0,x)
をroot (hd1,x)
にroot=/dev/sdax
をroot=/dev/sdbx
に
- 例 :
- GRUB のドキュメント
Super Grub Disk
GRUB修復用というウリですが高機能な起動ディスクとして使えるんでそれぞれ1枚持っとくと役に立つかもでごわす。
- Boot Problems Open Source Tools | Super Grub Disk, Super Grub2 Disk and Rescatux
- ダウンロード
BerliOS Developer: Project Filelist- Super Grub Disk
- Super Grub2 Disk Stable
GRUB(Legacy) と GRUB2用は別物なので注意。2011.6.6 現在では...
- Super Grub Disk - GRUB(Legacy) 起動ディスク、GRUB2は検出不可、NTFSファイルのロード不可
- CDイメージ -
super_grub_disk_0.9799.iso
- FDイメージ -
super_grub_disk_english_floppy_0.9799.img
- USBメモリ用イメージ -
super_grub_disk_english_usb_0.9799.tar.gz
- CDイメージ -
- Super Grub2 Disk - GRUB2 起動ディスク、GRUB(Legacy) も検出可、NTFSファイルのロード可
super_grub_disk_hybrid-1.98s1.iso
- isohybrid なのでCD/FD/USBメモリ兼用のイメージ
- Super Grub Disk Wiki
※ Super Grub2 disk で GRUB(Legacy) のブートも可能でしたが、元の menu.lst 表示ではなく設定リストの表示だったので、GRUB(Legacy)用には Super Grub Disk (not Grub2) の方が使いやすいと思います。
Super Grub Disk(GRUB用)
CD (or FD, USBメモリ) でブートしたら下記を選択してくだされ。
!Linux! (1) AUTO
※ タイトルにMBRの付く行はMBRへ書き込みしてしまうので注意
検索結果を選択すればインストールされてるLinuxが起動するはず・・・です。
手動で検索して表示するにはcキー押しでコマンドモードへ。下記は一例。
find /boot/grub/menu.lst (fd0) (hd0,1) root (hd0,1) configfile /boot/grub/menu.lst
/boot/grub/menu.lst
ではなく下記の場合もあるかも。
/grub/menu.lst
/boot/grub/grub.conf
/grub/grub.conf
/menu.lst
Super Grub2 Disk(GRUB2用)
- 2014.11.24 追記
-
かなり変更されてました。
ブートしたら2行目の「Detect any GRUB2 configuration ...
」を選択。1行目でもいいかもしれない。
※ 3行目は core.img
or multiboot.img
を検索してロード。
Kubuntu のGRUB2が検出されました。
選択すると Kubuntu のブートメニュー内容が表示。選択したら通常起動しました。(ブートメニュー非表示設定してる場合はこのメニューが出ないかも)
手動で検索して表示するにはcキー押しでコマンドモードへ。下記は一例。
search -f /boot/grub/grub.cfg hd0,2 hd31 root (hd0,2) configfile /boot/grub/grub.cfg
/boot/grub/grub.cfg
ではなく下記の場合もあるかも。
/grub/grub.cfg
GRUB for DOS
GRUBの多機能版、特にチェインロード機能が秀逸かと。メンテ用にめちゃ便利。
- GRUB4DOS and WINGRUB | Download GRUB4DOS and WINGRUB software for free at SourceForge.net
- ダウンロード (0.4.4) :Browse /GRUB4DOS/grub4dos 0.4.4 at SourceForge.net
- 拙作めも :
個人的には「Windows ブートメニューに追加」がおすすめです。MBRは弄らないし、今後も使えるんで。
- CDブート なら Puppy Linux で
-
CD/USBメモリでのブートなら Linux LiveCD の Puppy Linux がいいかな。ブートローダーが GRUB for DOS になってます。
- Puppy Linux 日本語版
- ダウンロード :
wary-511-01j-k2.6.32.28-small.iso
とか
【追記】wary-511-01j-k2.6.32.28-small.iso ではブートメニューにGRUB検索エントリがあるので で選択するだけです。
FD/ネットワークブートなど詳細は上記拙作めもをご笑覧くだされ。
- 私的 menu.lst
-
- FD/HD用 - fd_hd_menu.lst
- CD/USB/PXE用 - cd_pxe_usb_menu.lst
ファイル名は
menu.lst
にリネームしてくだされ。- アンダースコア _ は Shift-0
- バー | は Shift-半角
- バックスラッシュ \ は 半角
使用時は
menu.lst
にリネームしてください。
- 未確認事項
- 2TiB超HDで使えるかな?
- AFT(4KiBセクタ)とか対応してるかな
GRUB(Legacy)
GRUB for DOS が起動したらcキー押しでコマンドモードへ。下記コマンドを打ちませう。
find --set-root --ignore-floppies --ignore-cd /boot/grub/menu.lst configfile /boot/grub/menu.lst
見つかったら、インストールされてる Linux のブートメニューが表示される・・・はずです。
menu.lstに書いとくならこんなかんじで。
title configfile /boot/grub/menu.lst find --set-root --ignore-floppies --ignore-cd /boot/grub/menu.lst configfile /boot/grub/menu.lst
/boot/grub/menu.lst
ではなく下記の場合もあるかも。
/grub/menu.lst
/boot/grub/grub.conf
/grub/grub.conf
/menu.lst
GRUB2
GRUB2 は設定ファイルの仕様がかなり違うので設定ファイルを表示するのではなく、GRUB2本体をチェインロードします。(※ 本体が破損している場合はだめ。Super Grub2 Disk を使うべし)
GRUB for DOS が起動したらcキー押しでコマンドモードへ。下記コマンドを打ちませう。
find --set-root --ignore-floppies --ignore-cd /boot/grub/core.img kernel /boot/grub/core.img boot
見つかったら、インストールされてる Linux のブートメニューが表示される・・・はずです。
(ブートメニュー非表示設定してる場合はこのメニューが出ないかも)
menu.lstに書いとくならこんなかんじで。
title chainload GRUB2 find --set-root --ignore-floppies --ignore-cd /boot/grub/core.img kernel /boot/grub/core.img
/boot/grub/core.img
ではなく下記の場合もあるかも。
/grub/core.img
/boot/multiboot.img
/multiboot.img
めも
- Super Grub Disk 入り LiveCD
-
FDイメージをブートメニューで選択
- Parted magic
- 5.9 (6.1) - Grub(Legacy) 0.9799 + Grub2 1.98s1
- SystemRescueCd
- 2.0.1 (2.2.0) - Grub2 1.97.2
- Parted magic
- Super Grub Disk を FDイメージでブート(組み込む)
-
USBメモリブートやネットワークブートに組み込むと便利。ファイルをすべてルートに保存してる場合の例です。ファイル名は変更してます。
isoよりFDイメージの方が確実かなと(※ 2 は hybrid)。
- SYSLINUX へ組み込み
-
LABEL SuperGrubDisk LINUX /memdisk INITRD /sgd.img APPEND raw LABEL SuperGrub2Disk LINUX /memdisk INITRD /sgd2.iso APPEND raw
- GRUB for DOS へ組み込み
-
title Super Grub Disk find --set-root /sgd.img map --mem /sgd.img (fd0) map --hook chainloader (fd0)+1 title Super Grub2 Disk find --set-root /sgd2.iso map --mem /sgd2.iso (fd0) map --hook chainloader (fd0)+1
memdisk を使います。isoよりFDイメージの方が確実かなと(※ 2 は hybrid)。
おつかり。