我一直在嘗試設定 Xen 以與 UEFI 和我的 Arch Linux 安裝一起使用(3.18.2)作為 Dom0 但一直無法啟動。值得注意的是,否則它可以完全正常啟動,但無法在 Xen 下啟動。
具體來說,我的計算機完全凍結,我必須對其進行硬重置,據我所知,沒有相關的錯誤訊息。經過大量努力(並發現),我發現它在被調用debug=postmount
後立即凍結。systemd
switch_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/sh
和exec /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