GRUB 2
Basic summary of GRUB 2:
- A file called grub.cfg controls the Grub Screen.
- grub.cfg is automatically generated by the scripts in /etc/grub.d.
- Partitions are numbered from 1 instead of 0 and drives are numbered from 0:
Linux grub2 /dev/sda1 (hd0,1) /dev/sda2 (hd0,2) /dev/sda3 (hd0,3) /dev/sdb1 (hd1,1) /dev/sdb2 (hd1,2) /dev/sdb3 (hd1,3)
- As the grub.cfg file is the 'result' file the grub.cfg file should never be altered manually.
Grub 2 のデフォルト設定ファイル
メニューのタイムアウト、デフォルトで選ばれるエントリー、エントリーに共通するカーネルパラメータ、グラフィック設定など、GRUBの設定パラメータは/etc/default/grub のファイルに記述します。
Grub 2 のスクリプトファイル
/etc/grub.d にあるスクリプトが実行されると /boot/grub/ に出力ファイルとして grub.cfg を作成します。
grub.cfg は直接編集してはいけません。設定の変更は /etc/grub.d のディレクトリにある次のファイルを変更します。必要な変更のうち90%以上のケースは os-prober というプログラムが自動的におこないます:
00_header:
05_debian_theme: 背景、テキスト色、テーマなど
10_hurd: Hurd カーネルの位置
10_linux: Lsb_release コマンドの結果に基づいた Linux カーネルの位置
20_memtest86+: /boot/memtest86+.bin ファイルがある場合、memtestをブートメニューに挿入する
30_os-prober: Linux その他のOSをすべてのパーティションから探し、ブートメニューに挿入する
40_custom: その他のOSのブートメニューエントリーを特別に加えるテンプレート
60_fll-fromiso: USBフラッシュメモリやSSDカードからの fromiso 起動のブートメニューエントリーを加えるときのテンプレート
60_fll-fromiso は直接編集しないで代わりに /etc/default/grub2-fll-fromiso ファイルを変更してください。
Read Booting 'fromiso' with Grub 2
設定が変更されたとき、新しい grub.cfg を自動作成しなくては効果がありません。aptosid カーネルがアップデートされるときは、自動的に作成コマンドが実行されますが、システム管理者が上記の設定ファイルに変更を加えた場合は次のコマンドを実行します。
update-grub
Debian の Grub2 パッケージはほとんど手動編集をする必要がないようにデザインされています。
編集画面で Grub2 の起動オプションを変更する
何らかの必要があって GRUB2 で選択されているカーネルの起動オプションを一時的に変更したい時は e の字のボタンを押し、矢印キーで変更を加えたい行に移動し起動オプションを編集し、編集画面上から Ctrl+x を押すとこの起動オプションで起動します。
たとえば、直接ランレベル3に起動したい時は linux /boot/vmlinuz の行の最後に3 を加えます。
この編集画面上での変更は保存されません。変更を後々まで保存したい場合は、そのためのファイルを変更する必要があります。Grub 2 のファイルを見てください。
Grub2 を使って複数のOSを起動する
Grub2 はモジュール設定可能なため、シンプルなコマンドで新しくインストールされたシステムを検知して、自動的に menu.cfg に加えることができます。シンプルなコマンドとは:
update-grub
自動的に追加される以外の追加を行いたい場合、または 30_os-prober コマンドが OSの検知または grub.cfg への書き込みができない場合は、お気に入りのテキストエディターで /etc/grub.d/40_custom を修正します。
40_custom ファイルをかすとマイズする一例:
menuentry "second mbr"{ set root=(hd1) chainloader +1 }
menuentry "second partition"{ set root=(hd0,2) chainloader +1 }
変更が終わってから次のコマンドを実行します。:
update-grub
ディスクの Grubデバイス がわからないというエラーメッセージ("Unknown GRUB device of a disk")、デバイスマップが新たに作られたということです。
他のオペレーションシステムをインストールするときは起動マネージャのインストール先に MBR を選ばないように注意してください:
grub-mkdevicemap --no-floppy update-grub
警告がいくつか表示されても気にする必要はありません。
何かの間違いで MBR が上書きされてしまったときはMBR の Grub2 修正または上書きするを参照してください。
ハードドライブから GRUB2 をMBRに書き直すだけならば:
/usr/sbin/grub-install --recheck --no-floppy /dev/sda
このコマンドは本当にこれを実行したいのだと理解されるまで、繰り返し何度か実行しなくてはならないかもしれません。
Windows に MBR のブートセクターを上書きされてしまったり、設定が破壊されてしまった Grub2 を回復するには
ノート: Grub2 のブートローダーを回復するのには 2010-02 以降の aptosid.iso が必要です。 べつの方法として どの live.iso からでも chroot を使って回復する方法があります。
MBR に GRUB2 を上書きしたり、GRUB2を回復するには一般的に aptosid.iso から起動する必要があります。:
- パーティションの名前([h,s]d[a..]X,sda1など)を特定し、確認するのには root になる必要があります:
$ su
- root になったら次のコマンド:
fdisk -l cat /etc/fstab
を実行して、MBRにGRUB2をインストールするパーティション名を確認します。 - 正しいパーティション名がわかったら、まずマウントポイントを作ります:
mkdir -p /media/[hdxx,sdxx,diskx]
- マウントします:
mount /dev/xdxx /media/xdxx
- ここの MBR に GRUB2 を書き込みます。:
/usr/sbin/grub-install --recheck --no-floppy --root-directory=/media/xdxx /dev/sda
chroot を使って上書きされてしまったり破壊されてしまった GRUB を MBR に回復する
MBR に上書きされてしまったり破壊されてしまった GRUB を回復するため chroot の環境を作ります。 旧式の GRUB でも新しい GRUB2 でも、ハードディスクにインストールされている GRUB をこの方法で回復するには、どの live.iso を使っても構いません。
ハードウェアに合った aptosid.iso (32ビットまたは 64ビット、CD、DVD、USBスティックまたはSSDカードなど) をライブで起動し、コンソールを開きます。su とタイプし Enter キーを押し、root になります。
fdisk -l または blkid のコマンドでブートパーティションを確認して正確なパーティション名を調べます。GUI アプリケーションが使いたい人は Gpartedを使っても構いません:
blkid
それからfstabの内容と blkid の出力と参照してブートパーティションを特定します。
cat /etc/fstab
ここでは例として root ファイルシステム (/) が /dev/sda2にあると仮定します。
mkdir /mnt/aptosid-chroot mount /dev/sda2 /mnt/aptosid-chroot
そして次のように /proc, /run, dev と /sys をマウントします:
mount --bind /proc /mnt/aptosid-chroot/proc mount --bind /run /mnt/aptosid-chroot/run mount --bind /sys /mnt/aptosid-chroot/sys mount --bind /dev /mnt/aptosid-chroot/dev mount --bind /dev/pts /mnt/aptosid-chroot/dev/pts
If you boot using an EFI system partition you will also need to mount it. Assuming this is /dev/sda1:
mount /dev/sda1 /mnt/aptosid-chroot/boot/efi
これで chroot 環境が設定されました。次のコマンドで chroot します。
chroot /mnt/aptosid-chroot /bin/bash
これでまるでインストールされているシステムに起動したときのように APT のローカルキャッシュを使ったり、修理が必要なファイルを直したりすることができます。ここでは GRUB を MBR に回復するのが目的です。
Grub2 を回復するには
apt-get install --reinstall grub-pc
To ensure that grub was installed to the correct disk or partition, run:
dpkg-reconfigure grub-pc
To restore Grub 2 EFI
apt-get install --reinstall grub-efi-amd64
旧式の Grub1 を回復するには
apt-get install --reinstall grub-legacy
そしてインストーラの指示にしたがいます。
chroot を終わらせるには:
Ctrl+d
PC を再起動します。