デベロッパー:Linux How-To 2005年10月07日 01:02 更新
icon GRUBによる起動

 ここでのList 1のGRUBメニュー項目からは,起動時にFig.1のような表示となる。

Fig.1■GRUBによる起動
Fig.1

 この際にメニュー項目を選択し「Enter」キーを押せば,そのメニュー項目のkernel項目部分に設定したブートイメージが読み込まれ,希望するOSが起動する。

 また,「Enter」キーを押さなくても,前述したようにmenu.lstファイルのtimeoutr項目に設定した秒数だけ操作が無い場合,自動的にdefault項目で設定されたメニューが実行される。

メニュー編集モード

 メニュー項目を選択し「Enter」キーを押す代りに「E」キーを押すと,Fig.2のようにメニュー編集モードとなる。

Fig.2■メニュー編集モード
Fig.2

 メニュー編集モードでは,フルスクリーン編集ではなく1行ごとの編集となる。

One Point!GRUBでは,起動直後のキー配列がアスキー配列(英語キーボード)となる。そのため日本語キーボードを使っている場合には,キーの刻印と入力される文字とが一致しない。これはsetkeyコマンドを使うと変更できるがその詳細は割愛する。

 メニュー内容を編集したい場合には,カーソルキーで反転行を編集したい行に移動させ,「E」キーを押す。するとFig.3のように編集可能な画面になる。ちなみに行を削除したい場合には「D」キーを押せばよい。

Fig.3■メニュー項目の1行編集
Fig.3

 Fig.3にて編集した場合「Enter」キーを押すと変更が反映される。「ESC」キーを押すと編集取り消しが可能だ。その後,「B」キーを押せば選択されているメニュー項目でカーネルがブートされる。

 このようにGRUBではメニューの編集が容易なのも特徴だ。万が一の設定ミスでも,対処がしやすいのである。

One Point!GRUB上の編集機能では,その編集結果がmenu.lstに反映されない。必要であれば,OSを起動した後でmenu.lstを編集する必要がある。GRUBの編集機能は,あくまでも緊急的な編集機能だと思っておいたほうがよいだろう。

GRUBコマンドプロンプト

 メニュー項目部分で「Enter」キーの代りに「C」キーを押すと,Fig.4のようにコマンドプロンプトが表示される。ここでは直接にコマンド入力ができるのだ。

Fig.4■GRUBのコマンドプロンプト
Fig.4

 GRUB上のコマンドプロンプトでは,任意のコマンドを使うことができる。例えば,helpと入力すると利用できるコマンドの簡単なヘルプが表示される。より詳細な使い方は,GRUBのオンラインマニュアルを参照するとよいだろう。

 例えば,ここで現在のメニュー設定がハードディスクの1台目からの起動するようになっているが,今回の起動に限ってハードディスクの2台目(hd1)から起動したいとする。そのような場合には,次のように入力すればよい(下記は例であり,指定すべきカーネルのイメージファイル名の場所などは環境によって異なる)。

grub> root (hd1,0)
Filesystem type is extfs, parttition type 0x83

grub> kernel /vmlinuz-2.4.7-10 ro root=/dev/sdb2
[Linux-bzImage, setup=0x1400, size=0xc2714]

grun> initrd /initrd-2.4.7-10.img
[Linux-initrd @ 0x7f85000, 0x6aefe bytes]

 上記の後,最後に次のようにbootと入力すると,その設定で起動するのだ。

grub> boot

 このようにしてコマンドプロンプトを利用すれば,任意のハードディスクにある任意のブートイメージファイルから起動することができる。このため,新しいカーネルをテスト目的で入れている場合でもとても便利だ。

パスワードを設定する

 コマンドプロンプトを実行できるということは,ほかの何者かがブートした際,カーネルイメージを入れ替えることができてしまうことも意味する。

 今回は詳細を説明しないが,GRUBではファイルの内容を表示するcatコマンドが用意されている。このコマンドを使うと,任意のファイルを見ることができるのだ。そのため,例えば/etc/passwd(/etc/shadow)ファイルなどをcatコマンドで見られてしまうと,セキュリティ上危険だ。

 そこでGRUBにおける操作を制限できるようにするため,GRUBにはパスワードを設定しておくのがよいだろう。

 GRUBでパスワードを設定するには,インストール時に行うか,menu.lstファイルの先頭に次のようなpassword項目を記述すればよい。

password 設定したいパスワード

 すると,GRUBの起動時に「E」キーによる設定変更や「C」キーによるGRUBコマンドラインの起動ができなくなる。「E」キーや「C」キーを押して編集やGRUBコマンドの起動をしたいのであれば,「P」キーを押してパスワードを入力しなければならない(Fig.5)。そのため,不正なユーザーが起動時のオプションを書き換えたり,ファイルの中身を参照するといった操作ができなくなる。

Fig.5■「P」キーを押してパスワードを入力する
Fig.5

 password項目を先頭に書くだけであると,「P」キーでパスワードを入力するまで「E」や「C」キーが利かなくなるだけであって通常の起動は可能だ。もし通常起動すらも許可したくないのであれば,起動を許したくない項目内にlock項目を記述しておけばよい。

 また,GRUBではpassword項目に-md5オプションを伴うことでパスワードをそのまま記述するのではなく,MD5で暗号化して記述することもできる。より強固なセキュリティ設定については,GRUBのオンラインマニュアルを参照してほしい。

icon GRUB起動フロッピーを作る

 さて,ここからGRUBのカスタマイズ方法などを説明しよう。ただし,GRUBはブートローダーという性質上,万一設定を間違えると最悪の場合にはLinuxすら起動しなくなってしまう恐れがある。Windowsとのマルチブート環境であれば,なおさら注意が必要だ。

 そこで,カスタマイズの方法を説明する前にGRUBによる起動フロッピーを作っておこう。起動フロッピーを作成しておけば,万が一ハードディスク上のGRUBで編集が失敗しても,起動フロッピーから起動して修復することができる。

 GRUBの起動フロッピーを作成するには幾つかの方法がある。中でも,grub-installコマンドを使うのがもっとも簡単だ。

 まずは次のようにしてフロッピーディスクをマウントし,ext3ファイルシステムでフォーマットしよう。ここでは,フロッピーディスクを/mnt/floppyにマウントしている。

# /sbin/mke2fs /dev/fd0
# mount -t ext2 /dev/fd0 /mnt/floppy

 次に,grub-installコマンドでGRUBをインストールする。

# /sbin/grub-install --root-directory=/mnt/floppy '(fd0)'

 フロッピーディスクの中にはbootディレクトリ,さらにその下にはgrubディレクトリが作成されてGRUBに関係するファイル一式がコピーされる。最後にアンマウントすれば,起動フロッピーディスクの作成が完了だ。

# umount /mnt/floppy

 ちなみに,この状態の起動フロッピーディスクはメニュー項目のファイルmenu.lstファイルがコピーされていない。このため,起動時の画面にもメニュー項目は表示されず,Fig.6のように直接GRUBのコマンドラインが実行される。ここでは必要なコマンドを入力し,手動で修復するなりOSを起動するといった操作になるのだ。メニュー項目を追加する方法は後述しよう。

Fig.6■起動用フロッピーディスクで起動したところ
Fig.6

3/5 NEXT