GRUB 2

Basic summary of GRUB 2:

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-Edit

何らかの必要があって 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 から起動する必要があります。:

  1. パーティションの名前([h,s]d[a..]X,sda1など)を特定し、確認するのには root になる必要があります:
    $ su
    
  2. root になったら次のコマンド:
    fdisk -l
    cat /etc/fstab
    
    を実行して、MBRにGRUB2をインストールするパーティション名を確認します。
  3. 正しいパーティション名がわかったら、まずマウントポイントを作ります:
    mkdir -p /media/[hdxx,sdxx,diskx]
    
  4. マウントします:
    mount /dev/xdxx /media/xdxx
    
  5. ここの 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 を再起動します。

Page last revised 29/06/2013 0850 UTC