Ubuntu GRUB Linuxブートローダーと構成

GRUB Linux BootloaderはLinuxで最も広く使用されているブートローダーです。すべての意欲的なLinuxユーザーは、Ubuntu GRUBについて学ぶことで利益を得るでしょう。このチュートリアルでは、GRUBが何であるか、ブートプロセスがどのように機能するか、およびいくつかの役立つUbuntu GRUBの構成に深く入ります。

詳細はこちらから。

前提条件

このチュートリアルに従いたい場合は、GRUBをブートローダーとして搭載したLinuxデバイスを確認してください。このチュートリアルは、Oracle VirtualBox上の仮想マシンで実行されているUbuntu 18.04.5 LTSをベースにしています。

Ubuntu GRUBブートプロセスの理解

GRUBはGrand Unified Boot Loaderの頭字語であり、デバイスをブートするための主要かつ最も重要なコンポーネントです。GRUBはまた、Linuxの最も一般的なブートローダーでもあります。旅はGRUBのブートプロセスについて少し知ることから始まります。

一般的なブートプロセスでは、BIOSPOSTステップを起動し、次にMaster Boot Record(MBR)でブートローダーを検索します。

MBRは任意のハードディスクの最初のセクタにある情報です。MBRに保存されている情報は、OSをデバイスのRAMにロード(ブート)します。

この記事は主にMBR側に焦点を当てています。ただし、MBRの他にもGUIDパーティションテーブルを使用するGPTもあります。GPTは、MBRディスクが最大で4つのプライマリパーティションしか保持できないのに対して、4つ以上のパーティションを作成する予定がある場合はより良いです。

以下のスクリーンショットでは、ブートプロセスのダイアグラムが表示されます。Ubuntu GRUBが選択したカーネルをメインメモリ(RAM)にロードします。カーネルがロードされた後、ユーザーはデバイスにログインできます。

The role of GRUB during the complete boot process in Linux

Ubuntu GRUBとLILOブートローダーの比較

Linuxワールドには3つの主要なブートローダーがあります:LILO、GRUB、およびGRUB2。GRUB2はLinuxディストリビューションでの最新かつ主要なブートローダーです。GRUB2はこのチュートリアルで最も使用され、デフォルトのUbuntuブートローダーですが、LILOはまだLinuxで存在しています。このセクションでは、それらがどのように対立しているかを学びます。

他のLinuxブートローダーは市場でも利用可能であり、GNU GRUBはメモリ管理とオブジェクト指向フレームワークのサポートが優れています。もう一つはSYSLINUXという軽量なブートローダーです。

GRUBは複数のオペレーティングシステムを起動することができますが、LILOは1つのOSしか起動できません。

GRUB allows opting among multiple OS

Ubuntu GRUBはWindows、Linux、Unix、macOS、BSD、Solarisと互換性がありますが、LILOは主にLinuxオペレーティングシステムをサポートしています。

LILOの設定ファイルを更新する場合、MBRにLILOを再インストールする必要があります。GRUBの設定を変更する場合は再インストールが不要です。

異なるカーネルやリカバリーモードの選択

このセクションでは、破損したカーネルからデバイスをリカバリーする際にカーネルを選択する方法を示します。

A kernel works as an interface between hardware and software. It controls all the processes that users run on the device.

以下はOracle VirtualBoxでVMを使用してカーネルを選択する手順です。

1. Oracle VirtualBoxを使用してUbuntuデバイスコンソールに直接ログインします。

2. 以下のようにシャットダウンコマンドを使用してUbuntuマシンを再起動します。

shutdown -r now

デバイスが再起動すると、Ubuntu GRUBの読み込み中にShiftキーを押し続けると、GRUBブートローダーメニューが表示されます。何も選択しない場合、GRUBはデフォルトのカーネルでシステムを起動し、ブートプロセスを進めます。

デフォルトのカーネル以外の異なるカーネルでブートする必要がある場合や、ファイルの破損やカーネルの正しく読み込まれないなど、システム内で問題が発生した場合には、Ubuntuの詳細オプションを選択する必要があります。

GRUB loading process

4. Ubuntuの詳細オプションを選択すると、Ubuntu GRUBメニューが表示されます。メニューには、選択できるさまざまなカーネルオプションが表示されます。オプションを選択しない場合は、最初に表示されたカーネルがデフォルトで読み込まれます。

以下の画像で確認できるように、各カーネルには2つの追加オプションがあります: upstartとrecovery。

  • (upstart):イベントベースの/sbin/initデーモンの代替であり、起動時にタスクとサービスの起動を処理し、シャットダウン時に停止し、システムが実行中の間にそれらを監視します。/sbin/init
  • (recovery mode):システム内の障害からカーネルを回復するためのモード。
Selecting a kernel from the GRUB menu

5. デバイスにログインしたら、unameコマンドで指定したカーネルが読み込まれているかどうかを確認します。-rオプションはカーネル名を出力します。

uname -r 
Verifying the kernel from the console

デフォルトのオペレーティングシステムの設定

これで、GRUBについてもう少し詳しくなったので、いくつかのGRUB構成オプションを調整します。まず、デフォルトで読み込まれるオペレーティングシステムを設定します。

1. お気に入りのSSHクライアントを使用してUbuntuデバイスにログインします。

2. 以下に示すように、awkコマンドを実行してGRUBブートメニューエントリをリストアップします。このawkコマンドは、/boot/grub/grub.cfgに格納されているすべてのエントリを表示します。ファイルの内容は端末に表示されます。行に注意してください。行に関連する番号が必要ですが、これは0から始まります。つまり、Ubuntu行は0で、Ubuntu, with Linux 4.4.0-210-generic1です。

awk -F\' '/menuentry / {print $2}' /boot/grub/grub.cfg
awk command filtering all the entries stored in /boot/grub/grub.cfg

3. 次に、GRUB構成ファイルを編集します。ファイルを編集するにはviを使用できますが、必要に応じて好きなエディタを使用してください。

vi /etc/default/grub

今度は、GRUB_DEFAULTの値を設定します。そのためには、実行したawkコマンドが必要です。これがOSのエントリです。 GRUB_DEFAULT0に設定すると、GRUBブートメニューエントリの最初のOSがデフォルトで起動します。 1に設定すると、デバイスはデフォルトで2番目のOSエントリを起動します。以下のスクリーンショットでは、最初のOSエントリUbuntuがデフォルトで起動するように設定されています。

デフォルトでは、GRUBはブートメニューで待機せず、即座に起動を開始します(0秒)。 GRUB_TIMEOUTの値を変更することで、この待機時間を変更できます。値が5の場合、ブートメニューは5秒間表示され、システムの起動時にロードするOSを選択できます。

Editing the GRUB configuration file

4. GRUBの構成ファイルを保存したら、update-grubコマンドを実行してください。このコマンドは変更された構成ファイルをシステムに適用します。

update-grub
Updating the GRUB configuration

Ubuntu GRUBでの背景画像の設定

GRUBの構成は地味である必要はありません。GRUBに少し味を加えるために、GRUBメニューに背景画像を追加できます。GRUB_BACKGROUNDオプションを使用してGRUBに画像を設定できます。以下の手順に従ってGRUBをカスタマイズしてください。

1. viまたは好みのテキストエディタでGRUB構成ファイルを編集し、以下に示すようにGRUB_BACKGROUND行を追加します。このチュートリアルでは、画像はUBUNTUという名前のユーザーホームフォルダに保存されています。GRUBはrootとして実行されるため、ファイルシステム全体の画像にアクセスできます。変更を加えたら、構成ファイルを保存してください。

# 構文: GRUB_BACKGROUND=/path-to-image
GRUB_BACKGROUND=/home/ubuntu/shanky.jpeg

ファイルshanky.jpegの画像はすでにシステムにありました。背景画像として使用したいファイル名でその名前を置き換えてください。

2. 次に、GRUB構成ファイルの変更を行った後、update-grubコマンドを実行します。

Updating the grub configuration file

3. さらに、Grubファイルに追加した画像が意図した通りに機能しているかを確認します。確認するには、マシンを再起動し、GRUBがロードされる間にShiftキーを押します。以下のように、GRUBには今や背景画像があります。

GRUB menu displaying the background image as specified in the grub configuration file.

GRUBでのデュアルブート

UbuntuのGRUBの最も優れた機能の1つは、デバイスの起動時にWindowsとLinuxの間を選択できることです:一般的にはデュアルブートとして知られています。デュアルブートにより、LinuxとWindowsを1つのデバイスで併用でき、複数のOSで作業するITエンジニアの生活が楽になります。

2021年初頭現在、自動的に追加のオペレーティングシステムメニューエントリを追加するデフォルトのos_proberスクリプトは無効化されています。これは、自動OS検出に関する潜在的なセキュリティ懸念があるためです。インストールされているOSシステムを把握している場合、この機能を以下のコマンドで再度有効にできます。

echo GRUB_DISABLE_OS_PROBER=false|sudo tee -a /etc/default/grub && sudo update-grub

デバイスでデュアルブートを構成したら、マシンを起動するときにGRUBメニューに似た画面が表示されるはずです。

GRUB menu allows you to either login to Windows or Linux Instance

結論

このチュートリアルでは、GRUBとは何かを学び、記事ではGRUBのブートプロセスについて紹介しました。

また、いくつかのUbuntu GRUB構成を調整する方法、異なるカーネルをロードする方法、さらにデュアルブートについても学びました。

GRUBの音の知識を得たので、どのような構成オプションを変更しますか?

Source:
https://adamtheautomator.com/ubuntu-grub/