LPIC-1 - 101試験 - 102:Linuxのインストールとパッケージ管理 - 102.2 ブートマネージャのインストール

Last Update : September 18 2014 21:34:23

       

a. ブートローダ

1.GRUBの特徴
  • LILOのような物理セクタではなく、ファイルシステムでブートイメージを認識できます。
  • 設定を変更した後も再度GRUBを実行する必要はない
  • どのオペレーションシステムにも依存せず、多数のファイルシステムを認識することができます。
  • シェル機能があり、対話式のコマンドインターフェイスにより、コマンドによる細かい管理が可能です。
  • ブート時に設定やパラメータを変更することができます。
  • 対応していないOSでもチェインローダー機能を使うとブートすることができます。
  • ネットワークからのブートにも対応しています。

Linuxシステム起動時のファイルシステムマウント(mountコマンド)やファイルシステムからのファイル読み出しのためには、まずルートディレクトリ("/")の inode情報が必要となりますが、その情報はスーパーブロックに書かれています。ルートディレクトリ以下のディレクトリはその一つ上のディレクトリにinodeブロックが存在するので、順次それを呼び出してゆけば、最後には目的のファイルのinodeが発見できアクセス可能となります。
GRUBには、大きく分けてバージョン0.9x系のGRUB Legacyと、1.9x系のGRUB 2の2種類があります。



b. GRUB Legacy

1.GRUBのインストール

GRUBを使用するには、起動ディスクのMBRにGRUBをインストールしなければなりません。そのインストールに使うコマンドが grub-install コマンドです。

● grub-install コマンド構文
 grub-install [オプション] [デバイス名]

/dev/hdaにGRUBをインストールするには、

# grub-install /dev/hda

GRUBのバージョンを確認するには、

# grub-install -v
grub-install (GNU GRUB 0.97)

2.GRUBの設定

GRUBの設定ファイルは、/boot/grub/grub.confです。(/boot/grub/menu.lstの場合もあります)

●grub.confのオプション
 パラメータ説明
 timeoutメニューを表示している時間(秒)
 defaultデフォルトで起動するエントリの番号
 titleメニューに表示されるエントリ名
 rootルートデバイスの指定
 kernel起動するファイルの指定
 makeactiveルートパーティションのアクティブ化
 chainloader指示されたセクターの読み込みを実行
 hiddenmenu起動時の選択メニューを表示しない

● grub.conf の記述例
boot=/dev/hda <--- 起動デバイス            default = 0 <--- 始動するデフォルトOSを0から番号で指定 timeout = 5  <--- メニューを表示している時間(秒) splash-image=(hda,0)/grub/splash.xpm.gz <--- 起動画面の背景イメージを指定 title CentOS (2.6.9-22nz) <--- 1番目のOSのタイトル。起動画面に表示される  root (hda,0)        <--- ルートデバイスの指定  kernel /vmlinuz-2.6.9-22n1 ro root=/dev/hda1 <--- 起動するファイルの指定  initrd /initrd-2.6.9-22nz.img title CentOS (2.6.9-11.EL) <--- 2番目のOSのタイトル。起動画面に表示される  root (hda,0)  kernel /vmlinuz-2.6.9-11.EL ro root=/dev/hda1  initrd /initrd-2.6.9-11.EL.img

GRUBではgrubコマンドを実行すると、対話式シェルを利用できます。


●GRUBプロンプトでのオプション
 bootOSを起動
 rootGRUBのルートデバイスを設定する
 initrd初期RAMディスクをロードする
 installGRUBをインストール
 setupGRUBを指定した場所にインストール
 parttypeパーティションタイプを変更する
 makeactiveルートパーティションのアクティブ化
 setkeyキーマップを設定する


c. GRUB2

1.GRUB2 の概要

GRUB 2 は、BIOS または UEFI ファームウェアを搭載したシステム上の Unified Extensible Firmware Interface (UEFI) ファームウェアからのブートや任意のサイズの GUID パーティションテーブル (GPT) でパーティション分割されたディスクからのブートなど、幅広いプラットフォームとファームウェアのタイプをサポートする強力なモジュラーブートローダーです。GRUB 2 は UEFI 指定の GPT パーティション分割スキームもサポートしています。 GRUB Legacy と同様に、GRUB 2 は 2 段階のブートプロセスを使用します。GRUB 2 と GRUB Legacy の主な違いは、GRUB 2 では動的にロードされたモジュールに多くの機能を配置し、これにより、コア GRUB 2 (第 2 段階ブートローダー) のイメージを小さくできるため、ロードが速くなり、柔軟性が高まることです。結果として、ブート時に要求に応じて GRUB 機能がロードされます。


● GRUB Legacy との主な違い
  • 設定を複数のファイルに分散して保存するようになりました。また、設定ファイルの書式も変更されています。
  • パーティション番号が 1 から始まるようになりました (従来の GRUB Legacy では 0 から始まっていました) 。
  • さらに多くのファイルシステムに対応しています。
  • LVM や RAID デバイス上のファイルを、直接読めるようになりました。
  • メニュー項目の名称を含め、ユーザインターフェイスを翻訳できるようになりました。
  • ファイルシステムなどの特定の機能に対応するために、モジュールを 読み込む仕組みが追加されています。
  • 「ステージ」 と呼ばれる仕組みは廃止され、 GRUB2 を構成するイメージの構造が変更されています。

●設定ファイルの構造

GRUB 2の設定は主に /etc/default/grub と /etc/grub.d に記述します。update-gurb が実行されるとその結果は /boot/grub/grub.cfg ファイルに書き込まれます。

/boot/grub2/grub.cfg
このファイルには、 GRUB2 のメニュー項目に関する全ての情報が保存されています。これは従来の GRUB Legacy で言うところの menu.lst にあたるものです。 grub.cfg は update-gurb(update-grub2) コマンドで構築するもので、通常は手作業で編集すべきではないものです。
/etc/default/grub
このファイルは GRUB2 のユーザ設定を制御するためのもので、通常は背景画像やテーマなど、追加の環境設定が含まれています。
/etc/grub.d/ 内のスクリプト
このディレクトリ内に存在するスクリプトは、 update-gurb(update-grub2) コマンドの実行中に読み込まれ、メインの設定ファイル /boot/grub/grub.cfg 内に取り込まれます。

GRUB2 は様々な方法でコントロールすることができます。既存の設定ファイルにある起動項目はグラフィカルなメニュー (スプラッシュスクリーン) で選択することができます。設定は grub.cfg ファイルから読み込まれますが、 このファイルはさらに他のファイルの内容から生成されます。 GRUB2 では、すべての設定ファイルがシステムファイルという位置付けとなるため、 これらを編集する際は、 root の権限が必要となります。また、 GRUB2 の 設定ファイルを編集した後は、 update-grub(grub2-mkconfig -o /boot/grub2/grub.cfg と同じ)を忘れずに実行してください。


2.GRUB2 の設定

GRUB 2 の場合の設定ファイルは「/boot/grub/grub.cfg」です。
しかし、このファイルを直接編集するのではなく、「/etc/default/grub」のファイルに設定を書き、 update-grub コマンドを実行して「/boot/grub/grub.cfg」の設定ファイルを生成する、という仕組みになっています。

● /etc/default/grub の記述例
# If you change this file, run 'update-grub' afterwards to update # /boot/grub/grub.cfg. GRUB_DEFAULT=0 <--- 始動するデフォルトOSを0から番号で指定 GRUB_HIDDEN_TIMEOUT=0 <--- 指定した秒数だけ、ユーザからのキー入力を待ちます。この待機時間の間は、 キー入力が行なわれるまでメニューを表示しません。 GRUB_HIDDEN_TIMEOUT_QUIET=true GRUB_TIMEOUT=10" <--- 既定の起動項目を自動的に起動するまでの間、起動メニューを表示して待機する 時間を秒単位で設定します。 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` GRUB_CMDLINE_LINUX_DEFAULT=quiet splash" <--- 通常モードに 対してだけ、この内容が追加されます。 GRUB_CMDLINE_LINUX=" <--- 通常/復元モードなど、それぞれの起動項目のコマンドラインに対して、ここで 指定された内容が追加されます。 ・ ・ 省略

●grub2のオプション
 パラメータ説明
 GRUB_DEFAULTデフォルトのメニューエントリーを設定する。値は数値ないしsaved
  • GRUB_DEFAULT=0
    メニューの位置によってデフォルトエントリーを決定する。以前のGrub同様grub.cfgにおける最初のmenuentryは0
  • GRUB_DEFAULT=saved
    デフォルトのメニューエントリーは前回選択したものになる。メニューが表示されている場合にはそのエントリーがハイライトされる。キー入力がなく時間が経過するとこのエントリーが起動される。
  • GRUB_DEFAULT=xxx"
    メニューエントリーを直接師弟することもできる。この場合エントリーの位置は関係ない。例えばGRUB_DEFAULT=CentOS, Linux 2.6.31-9-generic"などとなる。
 GRUB_TIMEOUTデフォルトエントリーが起動されるまでの時間を秒数で指定する。
-1にするとユーザーが選択するまでメニューが表示される。
 GRUB_HIDDEN_TIMEOUTデフォルトでは、他のOSが存在するかどうかによって挙動が変わる。他のOSが検出された場合にはメニューが表示される(#が先頭についている)。他のOSが検出されない場合にはメニューは非表示になる。
正の整数が設定された場合、メニューは表示されないが起動はその秒数の間だけ停止する。
0が設定された場合、メニューは表示されず、遅延もない。ユーザーは起動中にシフトキーを押しつづけることでメニューを表示させることができる。起動中、システムはシフトキーの状態をチェックする。状態が確認出来ない場合少しの間起動は止まり、ユーザーはエスケープキーを押すことでメニューを表示できるようになる。
 GRUB_HIDDEN_TIMEOUT_QUIETtrue : カウントダウンは表示されない。画面には何も表示されない。
false : 真っ黒な画面上にGRUB_HIDDEN_TIMEOUTで設定された秒数、カウントダウンが表示される。
 GRUB_DISTRIBUTORメニューエントリーの記述を決定する
 GRUB_CMDLINE_LINUXカーネルに渡すオプション
 GRUB_CMDLINE_LINUX_DEFAULT通常起動のlinuxラインの最後にオプションを付け足す。menu.lstにおけるdefoptionsに相当する。起動過程をテキスト表示したい場合には"quiet splash"を消せばよい。スプラッシュイメージを表示しつつ簡易テキストも表示するなら"splash"を指定する。
 hiddenmenu起動時の選択メニューを表示しない



d. ブートオプション

Linux カーネルは起動するときに「コマンドラインオプション」あるいは 「起動時パラメータ」を受け付けます。これは一般に、カーネルには決定できないハードウェアのパラメータをカーネルに渡したい場合や、カーネルが検出するであろう値を意図的に無効にしたり変更したりする場合に使います。
カーネルが BIOS から直接起動されるときは、パラメータを指定するチャンスはありません。よって、起動時パラメータ機能を利用するためには、GRUBなどのブートローダがパラメータを指定できるようになっていなければなりません。GRUB の場合は、起動時に Aキーまたは、 Eキーを押すことでパラメータを指定できるようになります。

grub append> root=0303 nousb

● 起動時に指定できるブートオプション

 root=デバイス最初に起動されるプログラムの指定(initの代わり)
 init=プログラムGRUBのルートデバイスを設定する
 quietメッセージの出力を抑制する
 debugメッセージの出力を冗長にする(デバッグ用)
 singleシングルユーザモードで起動する
 textテキストモードで起動する
 1~5指定したランレベルで起動する

このパラメータは、/proc/cmdlineなどで確認できます。


z. 出題範囲概要

●説明 ブートマネージャを選択し、インストールと設定を行う。
●主要な知識範囲
代替領域からの起動を選択可能にする、ブートオプションをバックアップする
GRUBなどのブートローダのインストールと設定
GRUB 2で基本的な構成変更を実施する
ブートローダを操作する
●重要なファイル、用語、ユーティリティ
/boot/grub/menu.lst、grub.cfgおよびその他, grub-install, MBR, スーパーブロック


  [ 例題 ] 
  1. 101:102.2 問01  GRUB
  2. 101:102.2 問02  カーネルオプションの追加
  3. 101:102.2 問03  grubの設定


       

www.it-shikaku.jp