【Linux】ブートローダとは?とブートローダのインストール方法

  • このエントリーをはてなブックマークに追加
  • Pocket
bootloader

ブートローダとは、OSが起動するためのトリガーだ。例えば、複数のOSがインストールされているとき、ブートローダで選択をして起動をする。

ブートローダのインストール方法についてまとめている。

ブートローダとは?

コンピュータシステムを起動するとBIOSやUEFIがシステムを初期化(使用出来る状態への準備)をし「ブートローダ」が起動する。そのブートローダからOSが起動される。いわば、「起動のためのトリガー」である。

複数のOSがHDDやSSD(これら補助記憶媒体)にインストールされている場合、ブートローダから指定してOSを起動する。

従来のMBR(MasterBootRecord)を使用した環境の場合MBRからブートセクタをロード、さらにサブシステムをロードして最終的にOS(Linuxの場合カーネル)をロードする形になる。

UEFIの場合はUEFI自体が一つのシステムとして形になっており、FAT系のパーティションを自力で検出、のちにGPTをロードしOSを読み出してゆくというながれになる。

昨今のGRUBであればUEFI環境でも問題なく稼動する。しかし、もし何か事情があって古いブートローダ、例えば古典的なLILOを使用しなければならないときはUEFIをレガシーなモードで動作させると、従来のBIOSとMBRの組み合わせと同じ挙動を再現するようになっている。

ブートローダをインストールするにあたって

ブートローダは一度インストールしたら他のブートローダをインストールすることはほぼない。また設定を間違えるとOSが起動しなくなるなど、入門者にとっては致命的な事故につながる。そもそもインストーラが初期段階でブートローダを適切に設定してしまうことがほとんどだろう。

ブートローダを入れ替える場合、理解をふかめる為に「事故を覚悟できる」もしくは実機で「実験機をかまえることが出来る」のであればいいのだが、そうでない場合はとりあえず仮想マシンを使用して実験をしてほしい。

実際のところ「GRUB2」について知っていれば、これからさき困ることは少ないので「GRUB Legacy」「LILO」は知識上知っている程度でも問題ない。

GRUB2

現代のLinuxでのブートローダは「GRUB2」がデファクトスタンダードとなっている。

現代のGRUB2とその前にあった旧GRUBは「GRUB Legacy」として一般的に区別される。GRUB Legacyと共通していえることが、自力でシェルをもっているので、設定を間違えて登録してしまった場合でもGRUBのシェルからOSをブートすることが可能という点だ。

しかし現代のGRUB2は「GRUB Legacy」と比較すると構造が複雑になっている。設定ファイルもコマンドを使用して自動生成するようになっている。CentOS7の場合はデフォルトでGRUB2がインストールされる。

起動している状態でブートローダを再インストールしたい場合など

MBRとの組み合わせでGRUB2を使用している場合

# grub2-install /dev/sda

とすると「/dev/sda」のMBRにGRUB2がインストールされる

もしくはUEFIなマシンでは

# yum reinstall grub2-efi shim

とすると一応安全に再インストールが可能となっている。

設定ファイルは「/boot/grub/grub.cfg」となっているがこれは「grub-mkconfig」コマンドにより自動生成されるものなので、手動編集は避けよう。では設定などはどこを編集するのかというと「/etc/default/grub」ファイルを編集する。

# vi /etc/default/grub

grub2

主な項目としては

  • GRUB_DEFAULT=0
  • GRUB_TIMEOUT=5
  • GRUB_CMDLINE_LINUX=”各オプション”
  • GRUB_DEFAULT=saved

などだろう。

GRUB_DEFAULTは何番目のエントリをデフォルトで起動するか?

GRUB_TIMEOUTはGRBUの画面を何秒間表示するか?

GRUB_CMDLINE_LINUXは起動時、 コマンドラインオプションへ追加したいオプションを指定する。

GRUB_DEFAULT=saved デフォルトのメニューエントリーを前回選択したものにする。

GRUB_DISABLE_RECOVERY=”true” リカバリーモードの表示をどうするか?

GRUB_TERMINAL_OUTPUT=”console” どのような表示出力をするか?

GRUB_DISABLE_SUBMENU=true サブメニュー化を許容するかどうか?

GRUB_DISTRIBUTOR=”ディストリビューション情報” ディストリビューションのバージョン情報を名前として登録

などがある。

変更を加えたら

# grub2-mkconfig -o /boot/grub2/grub.cfg

を実行し設定ファイルを再生成する。

また起動時メニュー画面で「c」キーを押すとシェルに突入し入力を受付るようになる。

デフォルトのパーティション設定をしていた場合

grub> set root=(hd0,1)

grub> linux /vmlinuz-3.10.0-327.el7.x86_64 root=/dev/mapper/centos-root rd.lvm.lv=centos/root

grub> initrd /initramfs-3.10.0-327.el7.x86_64.img

grub> boot

と入力してゆくと一応に手動でカーネルを指定して起動できる。

GRUB Legacy

GRUB Legacyなど、ここから先は、ほぼ知識上しっていれば問題ない。

設定ファイルは

Debianなどの場合「/boot/grub/menu.lst」

RedHatなどの場合「/boot/grub/grub.conf」

となっていた。

設定の一例をあげると以下のようになっている。

イニシャルラムディスクが必要な場合指定する。

独自でシェルをもっており起動時にカーネルやラムディスクなどの指定が可能である。

LILO

LILOはLILOコマンドが実行された時点で、MBRに書き込みをおこなう、また起動時に高度なシェルはもちあわせていないので設定をあやまると「起動できない」といった状態が発生する。

設定ファイルの位置は「/etc/lilo.conf」である。例として以下のようになる。

boot=/dev/sda は実際にインストールするHDDなどを指定

image=/boot/vmlinuz で今HDD上のどこにカーネルが存在するのかの情報を設定

label=linux はメニューで表示される名前

initrd=/boot/initrd.img はイニシャルラムディスクがある場合指定する。

root=/dev/sda1 はルートパーティション

設定項目的にはこれだけ知っていれば、ほぼ問題ないはずだ。

設定を編集した後は

# lilo

とコマンドを発行する必要がある。

なおliloは設定に不備があった場合、起動しなくなる可能性が高い。なのでliloコマンド実行時のメッセージに注意しよう。

まとめ

このページでは「ブートローダとは」と「ブートローダのインストール方法」についてお伝えをした。

特にインストールについてはあまり実施することはないだろうが、Linuxエンジニアとして知っておいて損は無い。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できる。

短期間でエンジニアになる方法

・「まったくの初心者だけどエンジニアになりたい!」

・「プログラマーとして転職をしたい!」

という方はリナックスアカデミーの資料を見てみてください。短期間で未経験からエンジニアになることができるスクールとして15年間選ばれ続けてきた理由やノウハウが載った資料です。

エンジニアの入り口に立つために必要な勉強技術の最新動向本当に使えるIT資格学習に役立つ国からの奨励金などの情報が詰まっています。

無料で2,3日中にお手元にお届けします。


資料を見てみる

SNSでもご購読できます。

コメントを残す

*