부팅 중 switch_root 직후 Systemd가 Xen Dom0에서 중단됩니다.

부팅 중 switch_root 직후 Systemd가 Xen Dom0에서 중단됩니다.

UEFI 및 Arch Linux 설치와 함께 작동하도록 Xen을 설정하려고 했습니다(3.18.2)을 Dom0으로 지정했지만 시작할 수 없습니다. 그렇지 않으면 Xen에서는 부팅되지 않지만 완벽하게 부팅된다는 점은 주목할 가치가 있습니다.

특히, 내 컴퓨터가 완전히 멈춰서 하드 리셋을 해야 했는데, 내가 아는 한 관련 오류 메시지가 나타나지 않았습니다. 많은 노력과 발견 끝에 나는 그것이 debug=postmount호출된 직후에 멈추는 것을 발견했습니다.systemdswitch_root

진짜 문제는 컴퓨터가 정지되기 전에 시스템에서 로그나 정보를 뱉어낼 수 없다는 것입니다. 다양한 커널과 시스템 특정 로깅 옵션을 시도했지만 설치 후 셸을 종료한 후 화면이 멈추기 전에 로그 없이 커서가 절반 정도 깜박입니다.

내 현재 설정은고무 장화서로 관련된 경우 아래와 같이 두 개의 작은 구성 파일을 사용하여 Xen EFI를 시작합니다.

$esp/loader/conf/xen.conf:

title   Xen
efi     xen-4.5.0.efi

$esp/xen.cfg(동일한 디렉토리 사용 xen-4.5.0.efi):

[global]
default=xen

[xen]
options=console=none dom0_mem=2048M,max=2048M dom0_max_vcpus=1 loglvl=all noreboot
kernel=vmlinuz-linux root=/dev/sda3 rw systemd.unit=emergency.service systemd.log_level=debug
ramdisk=initramfs-linux.img

지침:

  • AUR Xen 4.4.1-3 패키지를 사용하고 소스에서 Xen 4.5.0을 다운로드하고 컴파일하려고 시도했지만 두 버전 모두 부팅 중 같은 지점에서 정지되었습니다.
  • EFI 생성에 대한 지원을 받으려면 binutils를 다시 컴파일해야 했지만 x86_64-pep그냥 교체했습니다. GCC도 교체해야 합니까? 또한 참고하시기 바랍니다Xen을 위한 Arch 위키 페이지binutils의 다운그레이드 버전이 필요하다고 언급되어 있지만, binutils나 최신 버전 모두 같은 방식으로 실행되지 않습니다.
  • 또한 모든 xen 관련 systemd.services를 활성화/비활성화하려고 시도했지만 서비스가 로드되기 전에 systemd가 충돌하는 것 같습니다.
  • 불행하게도 systemd를 호출한 후에는 둘 다 나를 셸에 넣을 systemd.crash_shell=true수 없습니다 .systemd.unit=emergency.service
  • init=/bin/sh내가 아는 한, 그것은 잘 작동하므로 문제는 확실히 문제 자체가 systemd아닙니다 .switch_root
  • 셸에서 systemd를 실행하면( init=/bin/sh및 를 통해 exec /usr/lib/systemd/systemd) 동일한 방식으로 충돌이 발생하므로 systemd --system --test --log-level=debug그렇게 해도 별로 무섭지 않은 것 같습니다. 즉, Xen 가상화 및 x86_64 시스템에서 수행되는 작업을 인쇄하지만 5줄 이상은 인쇄하지 않습니다. 그럼 테스트는 실패몇 가지 실수아이러니한 점은... systemd가 아직 실행되고 있지 않다는 것입니다.

이 문제를 해결하려면 몇 가지 간단한 커널 매개변수나 Xen Dom0 옵션을 전달해야 한다는 점을 정말로 기대하고 있습니다(약간 두렵기도 합니다). 그러나 통찰력이나 조언을 주시면 대단히 감사하겠습니다.

답변1

no-efi-rs(No EFI Runtime Service) 플래그 xen.cfg를 .

부팅 프로세스가 이 /sbin/init단계에 도달할 수 있는 경우 Xen에 대한 몇 가지 유용한 구성은 다음과 같습니다.

[global]
default=xen

[xen]
options=loglvl=all guest_loglvl=all conring_size=10M console_to_ring=true noreboot
kernel=vmlinuz-linux root=/dev/whatever rw init=/bin/sh log_buf_len=10M loglevel=9 
ramdisk=initramfs-linux.img

쉘에 들어가면 다음을 실행할 수 있습니다.

# mount xenfs so that the next command actually works
mount -t xenfs xenfs /proc/xen
# display the Xen log, pipe it to a file if you want to save it for later
xl dmesg

관련 정보