在引導過程中 switch_root 之後,Systemd 立即掛在 Xen Dom0 中

在引導過程中 switch_root 之後,Systemd 立即掛在 Xen Dom0 中

我一直在嘗試設定 Xen 以與 UEFI 和我的 Arch Linux 安裝一起使用(3.18.2)作為 Dom0 但一直無法啟動。值得注意的是,否則它可以完全正常啟動,但無法在 Xen 下啟動。

具體來說,我的計算機完全凍結,我必須對其進行硬重置,據我所知,沒有相關的錯誤訊息。經過大量努力(並發現),我發現它在被調用debug=postmount後立即凍結。systemdswitch_root

真正的問題是我無法讓 systemd 在電腦死機之前吐出任何日誌或資訊。我已經嘗試了各種核心以及 systemd 特定的日誌記錄選項,但是在退出安裝後 shell 後,我可能會在螢幕凍結之前遊標閃爍半次,沒有日誌。

我目前的設定是橡膠靴使用兩個小設定檔啟動 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,但兩個版本都在啟動過程中的同一點凍結。
  • 我確實必須重新編譯 binutils 以獲得x86_64-pep支援才能產生 EFI,但只是替換了它。我也不需要更換 GCC 嗎?另請注意,Xen 的 Arch 維基頁面提到需要降級版本的 binutils,但它和最新版本都無法以相同的方式啟動。
  • 我也嘗試啟用/停用所有與 xen 相關的 systemd.services,但由於看起來 systemd 在載入任何服務之前就崩潰了。
  • 不幸的是,在呼叫 systemd 後,兩者都systemd.crash_shell=true無法systemd.unit=emergency.service將我放入 shell 中。
  • init=/bin/sh據我所知,工作正常,所以問題肯定systemd不是switch_root問題本身。
  • 從 shell 運行 systemd(通過init=/bin/shexec /usr/lib/systemd/systemd)也會以同樣的方式崩潰,而且這樣做systemd --system --test --log-level=debug似乎並沒有太嚇人。也就是說,它會輸出它知道它在 Xen 虛擬化和 x86_64 系統中的信息,但不會輸出超過 5 行的內容。然後測試失敗一些錯誤諷刺的是…尚未運行 systemd。

我真的希望(並且有點害怕)我需要傳遞一些簡單的核心參數或 Xen Dom0 選項來解決這個問題,但任何見解或建議都將不勝感激。

答案1

我的問題最終透過將no-efi-rs(無 EFI 運行時服務)標誌傳遞給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

一旦你進入 shell,你就可以運行

# 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

相關內容