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

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

ブートローダとは、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

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

IT講師に興味はありませんか?

・「今までIT講師をやってきたが、更に多くの講義を行いたい」

・「エンジニアとしてやってきたが講師業に魅力を感じている」

・「講師として活躍するためにベースとなる知識を知りたい」

・「様々な分野や言語の講師にチャレンジしてみたい」


という方はぜひIT講師募集のページをご覧ください。


リスキルテクノロジーでは「受講している方々にITを好きになってもらう」ことを目標に、同じ目標に向かって歩んで行ける講師の方を常に探しています。


システム開発やインフラ構築などのエンジニアリング経験を活かし、新入社員などの未経験者や経験の浅い初学者の方々に対してITトレーニングを行っていただくことになります。


テキストやカリキュラムは事前に用意されており、それらを元に講義を進めていくため、IT講師をはじめて実施する方でも安心してトレーニングを実施できます。


IT講師募集のページを見る

SNSでもご購読できます。

コメントを残す

*

未経験からの育成制度も充実
IT講師に興味はありませんか?

リスキルテクノロジーでIT講師の積極募集を開始! 経験・未経験問わずご応募可能。育成制度で講師スキル向上も目指せます

IT講師に応募する