最初にdmesgにメッセージを書き込むには?

最初にdmesgにメッセージを書き込むには?

現在の起動時に実行するとdmesg | head取得できます。

[    0.000000] Linux version 4.17.19+ (bob@bob-VirtualBox) (gcc version 7.3.0 (Ubuntu          7.3.0-16ubuntu3)) #2 SMP Mon Sep 10 21:33:25 EDT 2018
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.17.19+ root=UUID=2e69cd99-b344-4014-bb00-ce3da383be05 ro quiet splash
[    0.000000] KERNEL supported cpus:

など...

「Hello world」などのメッセージを印刷するために変更できるカーネルソースにすでに存在するファイルはありますか?その後、新しいファイルをビルドしてインストールすると、起動後または最初の後にdmesg出力の先頭に表示されます。ラインコア。新しいモジュールでこれを行うことができますが、既存のモジュールを変更できますか?

答え1

出力の最初の行を印刷する関数を変更できますstart_kernelinit/main.c。 「Linuxバージョン」メッセージが保存され、出力さlinux_bannerれます。使用pr_notice、初期メッセージにも使用する必要があります。

答え2

ルートcrontabを編集します。

# crontab -e

次の行を追加します。

@reboot  echo "Hello World!" > /dev/kmsg

再起動して確認してください。

# dmesg | grep Hello

関連情報