시작하는 동안 시스템의 "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즉시 작업을 시작하세요.

관련 정보