Systemd

Systemd 不會啟動 xenstored、xenconsoled 和 xendomains

  • June 25, 2015

我正在執行 Gentoo 安裝,最近移至 systemd,每當我使用 Xen 啟動時,我無法發出任何 xl 命令,出現以下錯誤:

xc:錯誤:無法在特權命令介面上獲取句柄(2 = 沒有這樣的文件或目錄):內部錯誤

libxl:錯誤:libxl.c:92:libxl_ctx_alloc:無法打開 libxc 句柄:沒有這樣的文件或目錄

無法初始化 xl 上下文

在調查了這個問題後,我發現上面提到的三個服務(xenstored、xenconsoled 和 xendomains)沒有執行,我無法在 systemd 中啟用它們。我檢查了**/usr/lib64/systemd/system的名稱甚至包含 xen 的服務文件,但沒有找到。所以我相信我需要以某種方式安裝這三個服務,但我不確定為什麼當我出現xen (和 xen-tools)或 systemd**時沒有安裝它們。我需要從原始碼建構它們嗎?任何方向將不勝感激!

我通過在 systemd 已經安裝的情況下重新安裝 xen 和 xen-tools 解決了這個問題。

但是,我確實必須更改我的 xen-qemu-dom0-disk-backend.service 以指向我已經安裝的 QEMU 二進製文件(因為我使用單獨的 QEMU 包)。

壞消息

幾天前我查了這個,忘記發布答案了。我不使用xenxen-tools所以我的emerge輸出顯示了額外的包:

ecyoung@bedroom-gentoo ~ $ sudo emerge -av xen xen-tools

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild  N     ] dev-libs/yajl-2.0.4-r3::gentoo  USE="-static-libs" ABI_X86="32 (64) (-x32)" 81 KiB
[ebuild  N     ] dev-python/markdown-2.6.1::gentoo  USE="-doc -pygments {-test}" PYTHON_TARGETS="python2_7 python3_3 python3_4 (-pypy) (-pypy3)" 292 KiB
[ebuild  N     ] dev-python/pypam-0.5.0-r3::gentoo  PYTHON_TARGETS="python2_7 python3_3" 103 KiB
[ebuild  N     ] sys-firmware/ipxe-1.0.0_p20130925::gentoo  USE="qemu usb -iso -undi -vmware" 2,188 KiB
[ebuild  N     ] sys-devel/dev86-0.16.19::gentoo  697 KiB
[ebuild  N     ] net-misc/bridge-utils-1.5::gentoo  USE="(-selinux)" 33 KiB
[ebuild  N     ] app-emulation/xen-tools-4.5.0-r6::gentoo  USE="pam python -api -custom-cflags -debug -doc -flask -hvm (-ocaml) -ovmf -pygrub -qemu -screen -static-libs -system-qemu -system-seabios" PYTHON_TARGETS="python2_7" 18,604 KiB
[ebuild  N     ] app-emulation/xen-4.5.0-r8::gentoo  USE="-custom-cflags -debug -efi -flask -xsm" 0 KiB

Total: 8 packages (8 new), Size of downloads: 21,996 KiB

Would you like to merge these packages? [Yes/No] n

Quitting.

ecyoung@bedroom-gentoo ~ $ 

正如您從上面列出的輸出中看到的那樣,systemdUSE 標誌沒有在 USE 列表中列出app-emulation/xenapp-emulation/xen-tools。每個支持systemdUSE 標誌的包都會在列表中列出。事實上,我們可以通過app-portage/gentoolkit包含equery腳本的包來驗證這一點:

ecyoung@bedroom-gentoo ~ $ sudo equery hasuse systemd
* Searching for USE flag systemd ... 
[IP-] [  ] app-admin/syslog-ng-3.6.2:0
[IP-] [  ] dev-libs/efl-1.12.2:0
[IP-] [  ] kde-base/kdm-4.11.19:4/4.11
[IP-] [  ] media-gfx/sane-backends-1.0.24-r5:0
[IP-] [  ] media-sound/pulseaudio-5.0-r7:0
[IP-] [  ] net-print/cups-2.0.2-r1:0
[IP-] [  ] net-wireless/bluez-5.25:0/3
[IP-] [  ] sci-geosciences/gpsd-3.9-r1:0
[IP-] [  ] sys-apps/accountsservice-0.6.40:0
[IP-] [  ] sys-apps/busybox-1.23.1-r1:0
[IP-] [  ] sys-apps/dbus-1.8.16:0
[IP-] [  ] sys-apps/util-linux-2.25.2-r2:0
[IP-] [  ] sys-auth/pambase-20150213:0
[IP-] [  ] sys-auth/polkit-0.112-r2:0
[IP-] [  ] sys-fs/lvm2-2.02.109:0
[IP-] [  ] sys-fs/multipath-tools-0.5.0-r1:0
[IP-] [  ] sys-fs/udisks-2.1.4:2
[IP-] [  ] sys-process/procps-3.3.9-r2:0
[IP-] [  ] virtual/libgudev-215-r3:0/0                                                                                                                                                                                                                                         
[IP-] [  ] virtual/libudev-215-r1:0/1                                                                                                                                                                                                                                          
[IP-] [  ] virtual/udev-215:0                                                                                                                                                                                                                                                  
[IP-] [  ] x11-base/xorg-server-1.16.4:0/1.16.1                                                                                                                                                                                                                                
[I-O] [  ] x11-wm/enlightenment-0.19.4:0.17/0.19                                                                                                                                                                                                                               
ecyoung@bedroom-gentoo ~ $

請注意,如果我啟用了 systemd 配置文件,該列表將包含更多內容。有關更完整的列表,請參閱下面的 Tracker Bug。


可能的修復

由於上面未列出該標誌,因此我可以想到大約 3 個選項:

  1. 編寫您自己的 .service 文件。還有許多其他類似的連結只是Google用於編寫 systemd 服務
  2. eselect profile使用(選擇不帶 的配置文件)切換回 OpenRC/SysV init systemd。此設置在Gentoo 的 Xen Wiki 條目中有詳細記錄
  3. .service files將您在 #1 中寫的內容貢獻給錯誤 482420 - app-emulation/xen-tools:添加 systemd 單元腳本文件支持,從而阻止錯誤 448882 - (install-systemd-unit)$$ Tracker $$不提供 systemd 單元的軟體包。此列表包含所有需要 systemd 單元的包。被劃掉的已經增加了支持。那些還不需要工作的。

引用自:https://unix.stackexchange.com/questions/210046