はじめに
Linuxを利用した組込み開発において、x86アーキ以外のプロセッサを使用する場合、多くの場合ブートローダにU-Bootを利用していると思います。
開発初期は必要と感じていたメッセージも、後半になると必要がなくなってくることが多いです。また、少しでも起動速度を速くしたい場合、コンソールに出力されるメッセージを少なくすることで得られる改善は意外に馬鹿にできません。今回は、比較的手軽に行える出力メッセージ削減方法を紹介したいと思います。
抑止方法
U-Bootビルド時に指定するコンフィグでほぼすべての場合に適用できる方法を紹介します。
コンフィグと適用結果についてそれぞれ示していきます。
特に手を加えない場合の出力例
まずは何もしない場合の起動メッセージ例を示します。以下の環境で取得しました。
- ボード : i.MX6DL Sabreボード
- U-Bootバージョン : BSP U-Boot (rel_imx_4.1.15_2.0.0_ga)
- 使用コンフィグ : imx6sabresd_defconfig
U-Boot 2016.03 (Mar 26 2020 - 18:18:32 +0900)
CPU: Freescale i.MX6DL rev1.1 996 MHz (running at 792 MHz)
CPU: Commercial temperature grade (0C to 95C) at 48C
Reset cause: POR
Board: MX6-SabreSD
I2C: ready
DRAM: 1 GiB
PMIC: PFUZE100 ID=0x10
MMC: FSL_SDHC: 0, FSL_SDHC: 1, FSL_SDHC: 2
No panel detected: default to Hannstar-XGA
Display: Hannstar-XGA (1024x768)
In: serial
Out: serial
Err: serial
switch to partitions #0, OK
mmc1 is current device
Net: FEC [PRIME]
Normal Boot
Hit any key to stop autoboot: 0
特になくても困らない情報もありますね。
CONFIG_SYS_CONSOLE_INFO_QUIET
CONFIG_SYS_CONSOLE_INFO_QUIETを有効にしてビルドするとコンソールに関する情報が出力されなくなります。
U-Boot 2016.03 (Mar 26 2020 - 20:17:30 +0900)
CPU: Freescale i.MX6DL rev1.1 996 MHz (running at 792 MHz)
CPU: Commercial temperature grade (0C to 95C) at 48C
Reset cause: POR
Board: MX6-SabreSD
I2C: ready
DRAM: 1 GiB
PMIC: PFUZE100 ID=0x10
MMC: FSL_SDHC: 0, FSL_SDHC: 1, FSL_SDHC: 2
No panel detected: default to Hannstar-XGA
Display: Hannstar-XGA (1024x768)
switch to partitions #0, OK
mmc1 is current device
Net: FEC [PRIME]
Normal Boot
Hit any key to stop autoboot: 0
メッセージ出力先を示す表示がなくなりました。
CONFIG_DISPLAY_CPUINFO と CONFIG_DISPLAY_BOARDINFO
CPUに関する情報やボード情報はいらないという場合、これもコンフィグを変更することで簡単に抑止することができます。
多くの場合、共通に使用されるコンフィグ ヘッダなどですでに有効になっていることが多いので、ボード固有定義を記述するファイル内で今回はundefを追加し無効化しました。
/* 以下を追加 */
# undef CONFIG_DISPLAY_CPUINFO
# undef CONFIG_DISPLAY_BOARDINFO
U-Boot 2016.03 (Mar 26 2020 - 20:41:50 +0900)
I2C: ready
DRAM: 1 GiB
PMIC: PFUZE100 ID=0x10
MMC: FSL_SDHC: 0, FSL_SDHC: 1, FSL_SDHC: 2
No panel detected: default to Hannstar-XGA
Display: Hannstar-XGA (1024x768)
switch to partitions #0, OK
mmc1 is current device
Net: FEC [PRIME]
Normal Boot
Hit any key to stop autoboot: 0
始めと比較するとかなりすっきりしました。
まとめ
今回は簡単にできるメッセージ抑止方法を紹介しました。ほかにも削減に利用できるコンフィグはあり、これらを組み合わせて利用すると必要なメッセージ以外を抑止することができます。
(今回出力例として採取したものはもともと量が多くないものでしたが、場合によっては大幅に減ることがあります)
あと少し速くしたい!といったときには試してみてください。