【第4回】ブートローダー
本文中に記載のある#で始まるコマンド例はroot権限で実行することを示しています。自分の環境で実行する際に間違えてしまうとシステムを壊してしまう危険があります。引数などを良く確認してから実行して下さい。
第4回はx86ボードのブートローダーである、GRUBとUEFIについて解説します。
前半はGRUBの使い方についてです。Linuxのブートローダーは他にもLILOやsyslinuxなどがありますが、現在最も普及しているものがGRUBです。Linuxを組込むにはGRUBの設定も必要になります。Linuxを起動する時によく使うGRUBの機能について順に説明します。
後半はUEFIの話です。UEFIはブートローダーを起動するための仕掛けです。UEFIがESP(EFI System Partition)やNVRAMのブートエントリを使って、GRUBをどのように起動しているかを中心に説明します。
GRUBやUEFIをインストールしたり、変更したりするとPCが起動しなくなることもあるので、実運用しているPCで作業を行う時は十分な準備と注意が必要です。
1. コマンドモードでカーネルを起動
PCにGRUBがインストールされていれば、メニューではなくGRUBのコマンドラインからUSBメモリなどいろいろなメディアからLinuxを直接起動することができます。
以下の例は4GBのUSBメモリにパーティションを作成せずyoctoのイメージを書き込んだ場合です。
(yoctoイメージの作成については第3回の 「2. yoctoでrootfsをビルド 」を参考にして下さい)
GRUBのメニューが表示されたら、c を入力してコマンドモードへ遷移します。
grubのプロンプトが表示されます。
カーネルを書き込んだデバイスを確認します。
引数なしのlsコマンドでディスクの一覧を確認できます。
grub> ls
(proc) (memdisk) (hd0) (hd1) (hd1,gpt4) (hd1,gpt3) (hd1,gpt2) (hd1,gpt1) (hd2)
引数をつけて個別のディスクの情報を確認できます。
grub> ls (hd0)
デバイス hd0: ファイルシステムの種類 ext* - Last modification time 2023-10-16
10:45:50 Monday, UUID a7792a72-b371-45b5-824e-7f86129ef0d5 - Sector size 512B -
Total size 3907584KiB
普通はディスクのサイズでyoctoイメージを書き込んだUSBメモリを判別できると思います。
もしできなければ
grub> ls (hd0)/boot
のようにディレクトリ名までつければディレクトリの内容が表示されるので、内容がわかっていればこれでも判別ができます。
linuxコマンドでカーネルをロードします。
grub> linux (hd0)/boot/bzImage root=/dev/sdb rootdelay=5
カーネルのパラメータ
カーネルのパラメータはカーネルのファイルの後にスペースで区切って指定します。
もしinit=をパラメータにつける場合は、init=/bin/sh の後ろにパラメータを書くとinitの引数と解釈してしまうようで、うまく行きません。なので、init=を設定する場合はパラメータの最後で指定します。
initramfsを使用する場合はinitrdコマンドでロードします。
grub> initrd (hd0)/boot/initrd.img-6.1.0-12-amd64
カーネルをbootコマンドで起動します
grub> boot
2. コマンドモードの使い方
コマンドモードではLinuxのbashに似た機能が使えます。
help
GRUBのコマンドの簡単な使い方はhelpで表示できます。
例えばlinuxコマンドの使い方は以下で表示できます。
grub> help linux
引数なしのhelpでコマンドの一覧を表示できます。
grub> help
ただし、これでは画面が流れてしまって、上の方を読むことができません。
pager変数を1にすればページ単位の表示が可能になります。
grub> set pager=1
grub> help
...
...
--MORE--
と表示され一旦停止し、スペースキーで次のページへ移動できます。
ヒストリー
今まで入力したコマンドを保持しているので、上矢印キーで1つ前のコマンドを表示します。
修正が必要であれば、左右矢印キーで移動して、文字の追加削除ができます。
ファイル名の補完
lsコマンドやlinuxコマンドなどでファイルを指定する時にファイル名の途中でTABキーを入力するとファイル名が補完されます。
メニューとコマンドモードの切替
コマンドモードからメニューに戻るにはESCキーを入力します。
メニューが表示されている時に c を入力すると、コマンドモードに遷移します。
3. GRUBをシリアルから使う
GRUBを動かすPC(こちらをターゲット側PCとします)が離れた場所にあったり、GRUBの出力結果をログとして残したい時など、シリアルで入出力できると役に立つケースもあります。
ここから先は
¥ 300