はじめに
この実験では、Linux の GRUB ブートローダーの設定に加えた変更が正常に適用されたかどうかを確認する方法を学びます。まず、/etc/default/grub にある主要な GRUB 設定ファイルを調べ、その設定内容を理解します。
その後、/boot/grub/grub.cfg にある生成された GRUB メニュー設定ファイルを調べ、デフォルトファイルの設定がどのように反映されているかを確認します。最後に、dmesg コマンドを使用してカーネルのブートパラメータを調べ、GRUB の設定が実行中のシステムに反映されていることを確認します。
cat /etc/default/grub で GRUB 設定を確認する
このステップでは、GRUB 設定ファイルを調べます。GRUB (GRand Unified Bootloader) は、Ubuntu を含む多くの Linux ディストリビューションのブートローダーです。コンピュータを起動すると最初に実行されるソフトウェアで、オペレーティングシステムのカーネルをロードする役割を担っています。
GRUB の主要な設定ファイルは /etc/default/grub にあります。このファイルには、GRUB の動作を決定する設定が含まれています。たとえば、ブートするデフォルトのオペレーティングシステム、ブート前のタイムアウト時間、カーネルパラメータなどです。
cat コマンドを使ってこのファイルの内容を表示しましょう。cat コマンドは、ファイルの内容を表示するために使用されます。
ターミナルが開いていない場合は開きます。デスクトップの左側にある Xfce Terminal アイコンをクリックすると開きます。
次のコマンドを入力し、Enter キーを押します。
cat /etc/default/grub
ターミナルに /etc/default/grub ファイルの内容が表示されます。以下のような内容が表示されるでしょう。
## If you change this file, run 'update-grub' afterwards to update
## /boot/grub/grub.cfg.
GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
## Uncomment to enable graphical terminal (grub-gfxpayload is needed)
#GRUB_TERMINAL=gfxterm
## The resolution used on graphical terminal
## settings below may not work on your chipset but may be useful for EFI panel
## sizes
#GRUB_GFXMODE=640x480
## Uncomment to disable graphical terminal on boot problems
#GRUB_TERMINAL_INPUT=console
## Uncomment to disable menu scrolling
#GRUB_MENU_SCROLL_STYLE=menu
## Uncomment to enable hidden menu by default
#GRUB_HIDDEN_TIMEOUT=0
#GRUB_HIDDEN_TIMEOUT_QUIET=true
## Uncomment to enable BadRAM filtering, modify to suit your needs
## This works only with Linux 2.6.25 or later using pci_filter_enable=1
## and needs BadRAM filtering support in the kernel
#GRUB_BADRAM="0x0123456789abcdef,0xghijkllmnopqrstuvwxyz"
## Uncomment to disable graphical boot (use text mode)
#GRUB_DISABLE_GRAPHICS_OVERRIDE=true
## If you want to enable the GRUB boot menu at boot time, uncomment the following line:
#GRUB_ENABLE_CRYPTODISK=y
## The following lines are for the default grub menu entry
#GRUB_INIT_TUNE="480 440 1"
## Uncomment to set a custom theme
#GRUB_THEME=/path/to/grub/theme
## Uncomment to enable os-prober, which detects other operating systems
#GRUB_DISABLE_OS_PROBER=false
このファイルには様々な設定が含まれています。たとえば:
GRUB_DEFAULT:ブートするデフォルトのメニューエントリを指定します。0は最初のエントリを意味します。GRUB_TIMEOUT:デフォルトのエントリが自動的にブートされるまでの時間(秒)を設定します。GRUB_CMDLINE_LINUX_DEFAULT:デフォルトのエントリをブートする際にカーネルに渡されるカーネルパラメータが含まれています。
このファイルを理解することは、高度な Linux 設定やブート問題のトラブルシューティングに不可欠です。
Continue をクリックして次のステップに進みます。
cat /boot/grub/grub.cfg で GRUB メニューを確認する
前のステップでは、GRUB の主要な設定ファイルである /etc/default/grub を見ました。ただし、このファイルはブートプロセス中に GRUB が直接使用するものではありません。代わりに、/etc/default/grub の設定は、実際の GRUB メニュー設定ファイルを生成するために使用されます。この設定ファイルは /boot/grub/grub.cfg にあります。
/boot/grub/grub.cfg ファイルは、update-grub コマンド(または grub-mkconfig)によって自動的に生成されます。このファイルには、コンピュータを起動したときに表示されるメニューエントリが含まれており、ブートするオペレーティングシステムやカーネルを選択できます。
重要: /boot/grub/grub.cfg ファイルを手動で編集しないでください。行った変更は、次に update-grub を実行したときに上書きされます。常に /etc/default/grub を変更してから、sudo update-grub を実行して変更を適用してください。
cat コマンドを使って /boot/grub/grub.cfg ファイルの内容を表示しましょう。
ターミナルに次のコマンドを入力し、Enter キーを押します。
cat /boot/grub/grub.cfg
/etc/default/grub と比較すると、はるかに長く複雑な出力が表示されます。このファイルには、各ブートメニューエントリの詳細な設定が含まれており、カーネルのパス、initrd のパス、カーネルのコマンドラインパラメータなどがあります。
#
## DO NOT EDIT THIS FILE
#
## It is automatically generated by grub-mkconfig using templates
## from /etc/grub.d and settings from /etc/default/grub
#
#### BEGIN /etc/grub.d/00_header ###
...
#### END /etc/grub.d/00_header ###
#### BEGIN /etc/grub.d/05_debian_theme ###
...
#### END /etc/grub.d/05_debian_theme ###
#### BEGIN /etc/grub.d/10_linux ###
...
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' {
recordfail
...
linux /boot/vmlinuz-*-generic root=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ro quiet splash $vt_handoff
initrd /boot/initrd.img-*-generic
}
...
#### END /etc/grub.d/10_linux ###
#### BEGIN /etc/grub.d/20_linux_xen ###
...
#### END /etc/grub.d/20_linux_xen ###
#### BEGIN /etc/grub.d/30_os-prober ###
...
#### END /etc/grub.d/30_os-prober ###
#### BEGIN /etc/grub.d/30_uefi-firmware ###
...
#### END /etc/grub.d/30_uefi-firmware ###
#### BEGIN /etc/grub.d/40_custom ###
...
#### END /etc/grub.d/40_custom ###
#### BEGIN /etc/grub.d/41_custom ###
...
#### END /etc/grub.d/41_custom ###
出力をスクロールして、さまざまなメニューエントリとその設定を確認できます。menuentry で始まる行を探してください。これらは、GRUB ブートメニューに表示されるオプションを定義しています。
このファイルは複雑で、すべての行をすぐに理解する必要はありません。重要なのは、/boot/grub/grub.cfg が GRUB が実際に使用するファイルであり、/etc/default/grub と /etc/grub.d のスクリプトから生成されるということです。
Continue をクリックして次に進みます。
dmesg で GRUB パラメータを調査する
前のステップでは、GRUB の設定ファイル /etc/default/grub と /boot/grub/grub.cfg を調べました。/etc/default/grub には GRUB_CMDLINE_LINUX_DEFAULT 変数が含まれており、これはカーネルパラメータを指定します。これらのパラメータは、Linux カーネルが起動する際に渡されます。
dmesg コマンドは、カーネルのリングバッファメッセージを表示するために使用されます。これらのメッセージには、システムのブートプロセスに関する情報が含まれており、使用されたカーネルコマンドラインパラメータも含まれます。
この仮想マシンのブート時に GRUB が渡したカーネルコマンドラインパラメータを dmesg を使って確認しましょう。
ターミナルに次のコマンドを入力し、Enter キーを押します。
dmesg | grep "Kernel command line"
このコマンドの詳細を説明します。
dmesg:カーネルメッセージを表示します。|:これはパイプです。左側のコマンド (dmesg) の出力を受け取り、右側のコマンド (grep) の入力として送ります。grep "Kernel command line":このコマンドは、受け取った入力 (dmesgから) の中で、「Kernel command line」という正確なフレーズを含む行を検索します。
出力には、システムをブートするために使用されたカーネルコマンドラインが表示されます。以下のような内容になります。
[ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-*-generic root=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ro quiet splash vt.handoff=7
quiet や splash などのパラメータが見られます。これらはおそらく /etc/default/grub の GRUB_CMDLINE_LINUX_DEFAULT 変数で定義されています。これらのパラメータは、ブート時にカーネルがどのように動作するかを指示します。たとえば、quiet はブート時の出力を減らし、splash はグラフィカルなブート画面を有効にします。
dmesg でカーネルコマンドラインを調べることは、GRUB の設定変更が正しく適用されていることを確認し、カーネルパラメータに関連するブート問題をトラブルシューティングするための有用な手法です。
これで、GRUB の設定を調べ、dmesg を使ってカーネルパラメータを確認することに成功しました。
Continue をクリックしてこの実験を完了します。
まとめ
この実験では、Linux で GRUB の設定が適用されているかどうかを確認する方法を学びました。まず、cat コマンドを使って GRUB の主要な設定ファイル /etc/default/grub を調べ、その内容とブートプロセス中の GRUB の動作を制御するさまざまなパラメータを理解しました。
/etc/default/grub ファイルを見ることで、デフォルトのブートエントリ、タイムアウト値、カーネルのコマンドライン引数などの設定について理解を深めました。この最初のステップは、GRUB 設定の適用を検証する前に、意図した GRUB 設定を理解するために重要です。



