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/Linux
AUFS 및 하드웨어별 장치 트리를 사용한 패치 - 커널과 루트 파일 시스템은 모두 QEMU를 사용하여 x86 호스트에 구축됩니다.
initramfs
부츠와바쁜 상자, AUFS 최종 루트 fs를 설정하고 마지막으로 를 호출합니다switch_root
. 동일한 접근 방식(거의 100% 동일한init
스크립트)이 x86에서 잘 작동합니다.- 실행하기 전에 대화형 셸을 실행할 수 있지만
switch_root
현재로서는 예상대로 작동하지 않는 항목을 찾을 수 없습니다.
답변1
커널에 뭔가가 빠져 있는 것으로 나타났습니다 systemd
.
http://cgit.freedesktop.org/systemd/systemd/tree/README필요한 커널 구성 설정을 표시합니다.
구성이 완료되면 systemd
즉시 작업을 시작하세요.