起動中にシステムの「init」停止をデバッグする方法は?

起動中にシステムの「init」停止をデバッグする方法は?

init独自のスクリプトを実行しようとしています。一部のARMハードウェアそしてsystemdを使用するDebian Jessie。全体的な起動概念とinitスクリプトはx86バリアントとほぼ同じで、うまく機能します。どちらのハードウェアも、SDカードイメージ全体がx86ホストに事前構築されています。

ARMハードウェアで実行するときは、次のことがあります。シリアルコンソールアクセス私のスクリプトが呼び出されるまでinit正しく実行されることがわかりました。switch_root

exec switch_root -c /dev/console /newroot /sbin/init

その後は何も起こりませんでした。エラーメッセージは印刷されません。これは問題を見つけるのが難しいです。

カーネルコマンドラインは...

ro root=LABEL=IM_BOOT1 panic=10 mem=256M console=ttyS0,115200 systemd.log_level=debug

...私が知っている限り、systemd最大のデバッグメッセージを印刷する必要があります。残念ながら何も印刷されません。

停止の原因が何であるかを理解するために、つまり何が起こっているのかを理解するために何ができるかについてのアイデア/ヒントはありますか?


唯一の奇妙な詳細はカーネルログのいくつかの警告です。今後呼ぶswitch_root

<snip> ext4: Unknown symbol jbd2_journal_errno (err 0) ext4: Unknown symbol jbd2_journal_begin_ordered_truncate (err 0) ext4: Unknown symbol jbd2_journal_flush (err 0) ext4: Unknown symbol mb_cache_entry_find_next (err 0) squashfs: version 4.0 (2009/01/31) Phillip Lougher aufs 3.16-20150928 usbhid: Unknown symbol hid_output_report (err 0) usbhid: Unknown symbol hidinput_count_leds (err 0) usbhid: Unknown symbol hid_allocate_device (err 0) usbhid: Unknown symbol hid_destroy_device (err 0) usbhid: Unknown symbol hid_alloc_report_buf (err 0) usbhid: Unknown symbol hid_set_field (err 0) usbhid: Unknown symbol hid_check_keys_pressed (err 0) usbhid: Unknown symbol hid_input_report (err 0) usbhid: Unknown symbol hid_debug (err 0) usbhid: Unknown symbol __hid_request (err 0) usbhid: Unknown symbol hid_parse_report (err 0) usbhid: Unknown symbol hid_add_device (err 0) usbcore: registered new interface driver usbhid usbhid: USB HID core driver usb_storage: Unknown symbol scsi_report_device_reset (err 0) usb_storage: Unknown symbol scsi_remove_host (err 0) usb_storage: Unknown symbol scsi_report_bus_reset (err 0) usb_storage: Unknown symbol scsi_sense_desc_find (err 0) usb_storage: Unknown symbol scsi_eh_prep_cmnd (err 0) usb_storage: Unknown symbol scsi_host_put (err 0) usb_storage: Unknown symbol scsi_scan_host (err 0) usb_storage: Unknown symbol scsi_is_host_device (err 0) <snip>

...しかし、このモジュールは現れるとにかくうまくいきます。これが関係があるかどうかわかりません。

いくつかの追加の詳細:

  • Debianのインストール準備完了debootstrap(x86でも同じ方法が機能します)
  • カスタムカーネル:Linux (none) 3.16.7 #1 Mon Nov 16 08:32:55 UTC 2015 armv5tejl GNU/LinuxAUFSおよびハードウェア固有のデバイスツリーを使用したパッチ
  • カーネルとルートファイルシステムの両方がQEMUを使用してx86ホストに構築されます。
  • initramfsブーツと忙しい箱、AUFS最終ルートfsを設定し、最後にを呼び出しますswitch_root。同じアプローチ(ほぼ100%同じinitスクリプト)がx86でうまく機能します。
  • 実行する前にインタラクティブシェルを実行できますが、switch_root現時点では期待どおりに機能していないエントリが見つかりません。

ベストアンサー1

カーネルに何かが欠けていることがわかりましたsystemd

http://cgit.freedesktop.org/systemd/systemd/tree/README必要なカーネル構成設定を表示します。

設定が完了したらsystemdすぐに作業を開始してください。

おすすめ記事