LinuxServer ブートローダと共有ライブラリについて
GRUBとは
マシンの電源を入れ、BIOSがマシンの初期チェックを済ますと、
記憶装置内(HDD)のMBR(MasterBootRecord)からOSを起動させる為に
ブートローダというプログラムが起動します。
Linuxでは標準的にGRUB(GRand Unified Bootloader)というブートローダを使用しています。
GRUBは多数のファイルシステムを認識し、対話的に操作を行うことができる
GRUBシェルと呼ばれるシェル機能を搭載しているのでコマンドによる高度な管理が可能です。
GRUBはバージョンが0.9x系のものを「GRUBLegacy」、1.9以降のものを「GRUB2」と呼びます。
GRUBをブートローダとして使用するには、’grub-install’コマンド(GRUB2はgrub2-install)を
使用し、デバイスのMBRにインストールします。
GRUB Legacyの設定
GRUB Legacyの設定ファイルは/boot/grub/menu.lstですが、
ディストリビューションによっては/boot/grub/grub.confでもあります。
menu.lstではOSが格納されているディスクや起動するカーネルについて設定します。
[コマンド]/boot/grub/menu.lstを見る
# cat /boot/grub/menu.lst
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
serial –unit=0 –speed=115200 –word=8 –parity=no –stop=1
terminal –timeout=10 serial console
hiddenmenu
title CentOS (2.6.32-279.9.1.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-279.9.1.el6.x86_64 ro root=UUID=306ed4fa-b782-456a-9016-ba95b1d7a14f rd_NO_LUKS rd_NO_MD SYSFONT=latarcyrheb-sun16
KEYBOARDTYPE=pc KEYTABLE=jp106 LANG=C rd_NO_LVM rd_NO_DM quiet nomodeset
clocksource=kvm-clock console=tty0 console=ttyS0,115200n8r crashkernel=auto
initrd /initramfs-2.6.32-279.9.1.el6.x86_64.img
title CentOS (2.6.32-279.1.1.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-279.1.1.el6.x86_64 ro root=UUID=306ed4fa-b782-456a-9016-ba95b1d7a14f rd_NO_LUKS rd_NO_MD SYSFONT=latarcyrheb-sun16
KEYBOARDTYPE=pc KEYTABLE=jp106 LANG=C rd_NO_LVM rd_NO_DM quiet nomodeset
clocksource=kvm-clock console=tty0 console=ttyS0,115200n8r
initrd /initramfs-2.6.32-279.1.1.el6.x86_64.img
menu.lstは大きく分けると、システム共通の設定を記述し、
次に’title’からブートするOS(カーネル)についての設定を記述します。
なお、menu.lst内で #はコメントとして扱われるのでGRUB はこの行を無視します。
‘boot’はGRUBのインストール先になります。
‘default’は、デフォルトで起動するOSを指定しています。0番から始まるため、
「CentOS (2.6.32-279.9.1.el6.x86_64)」を起動します。
‘timeout’は、秒単位でキー入力がない場合、defaultで指定したOSを起動するまでの時間を指定します。
‘splashimage’は、ブート・メニューで表示される背景画像を指定します。
この場合、1 番目のハード・ディスクを (hd0) の 1 番目のパーティションを (hd0,0) にある
/grub/splash.xpm.gzファイルを使用します。
‘hiddenmenu’は、キーが押されるまでの間、OS選択メニューを表示しないようにするためのエントリです。
マルチブート環境ではコメントにします。
‘title’は、GRUBのメニュー画面で表示するOS名を指定します。
‘root’は、ブートするカーネルや initrd のあるディスクを指定します。
‘kernel’は、起動するカーネルイメージと、コマンドラインオプションを指定します。
‘initrd’はカーネルに必要となるモジュールが含まれる初期 RAM ディスクを指定します。
GRUB2の設定
GRUB2はGRUB Legacとは異なり、設定ファイルである/boot/grub/grub.cfgを直接編集することはありません。
/etc/default/grubと/etc/grub.d/以下にあるファイルを編集し、update-grub2コマンドを実行することで
/boot/grub/grub.cfgが生成されます。
/etc/default/grubで使用する主なパラメータは次のとおりです。
GRUB_DEFAULT:
デフォルトで起動するOSを指定しています。
先頭を0番としての指定や、メニューの名称をそのまま指定することもできます。
また、「saved」と指定した場合、前回起動したOSがデフォルトになります。
GRUB_TIMEOUT:
デフォルトのOSを起動するまでの時間を秒で指定するパラメータです。
GRUB_HIDDEN_TIMEOUT:
起動メニューを表示させず、指定した秒数だけ、ユーザからのキー入力を待ちます。
GRUB_HIDDEN_TIMEOUT_QUIET:
true か false の値を指定し、trueではメニュー画面を表示させず、
falseでGRUB_HIDDEN_TIMEOUTで指定した残り時間を表示します。
GRUB_CMDLINE_LINUX:
カーネルにブートオプションを追加したい場合に指定します。
GRUB_CMDLINE_LINUX_DEFAULT:
こちらは、通常に起動する際のブートオプションを指定します。
ブートオプション(カーネルオプション)の設定
ブートローダによるカーネルをロード時にブートローダでは指定していない
起動オプションをプロンプトで指定することが出来ます。
GRUBの場合、起動画面で[A]キーを押すことで起動プロンプト(GRUBシェル)になるので
起動したいカーネルイメージの後ろにオプションを指定し起動します。
[GRUBシェル]
grub> linux カーネルイメージ [オプション]
GRUBの主な起動オプションは以下のとおりです。
・single:シングルモードで起動します。
・1~5:数字を指定することで対応するランレベルで起動します。
・root=デバイス名:ルートパーティション指定して起動します。(例 /dev/hda1)
・init=XX:起動時に実行させるプログラムを指定します。