Xen 提示與技巧
1. 設置 Xen 映像的安全性脈絡
SELinux 對應 Xsen 的針對性原則要求 Xen 的磁碟映像擁有 xen_image_t 的脈絡。假若映像並不包含在這個脈絡內,domU 存取這個映像時便會遭到拒絕(建基於 Anaconda 的安裝程式,例如 CentOS 的安裝程式將會無法找到這個映像應提供的硬碟)。根據預設值,下列兩個目錄擁有這個脈絡:
/var/lib/xen/images(/.*)? system_u:object_r:xen_image_t:s0 /xen(/.*)? system_u:object_r:xen_image_t:s0
你亦可以手動式地利用 chcon 設定檔案或目錄的脈絡。如果你希望不論因何原因要還原脈絡時,仍能保留正確的脈絡,你亦可以為本地檔案加入自訂的脈絡。舉個例說,我想將映像放置在 /src/xen 內。下列指令會預備這個目錄作為放置 Xen 映像之用:
# mkdir -p /srv/xen # semanage fcontext -a -t xen_image_t "/srv/xen(/.*)?"
第二個指令會將這行加進 /etc/selinux/targeted/contexts/files/file_contexts.local 內:
/srv/xen(/.*)? system_u:object_r:xen_image_t:s0
然後再新載入 SELinux 的原則。現在既然這些原則已經知道正確的檔案脈絡,你可以用 restorecon 來遞迴地將正確的脈絡套用到這個目錄:
# restorecon -R /srv/xen
假若你想的話,你可以用 ls 來檢查脈絡已經被正確地設定:
# ls -dZ /srv/xen drwxr-xr-x root root system_u:object_r:xen_image_t /srv/xen
2. 主控台的處理
一個 domU 系統的預設主控台是 xvc0。這是 xm console 連接時用的。要登入這個主控台,必須有一個 agetty 實體聆聽 xvc0。假若不這樣做,你只會看見指向這個主控台或所有主控台的 syslog 信息。如果 /dev/console 及 /dev/xvc0 代表同一個設備(當 xvc0 是主要或唯一主控設備時會屬實),kudzu 會自動為 xvc0 在 /etc/initab 內加入記錄。要是你使用虛擬的框緩衝區,這個情況並不屬實,因此 xvc0 的記錄將不會被加進 /etc/initab 內。至於 virt-manage 是否使用框緩衝區的,可以借著檢視區域設定檔的 vfb 選項而作判斷。例如:
vfb = ["type=vnc,vncunused=1"]
如果你仍然想透過 xvc0 登入,請在 domU 的 /etc/initab 內加入以下內容:
co:2345:respawn:/sbin/agetty xvc0 9600 vt100-nav
請亦在 /etc/securetty 內加入 xvc0。
以 root 的身份,你可以用下列指令吩咐 init 重新閱讀 /etc/inittab:
# telinit q
3. 透過 virt-manager 定義其它鍵盤佈局
你很可能已經見過一台 DomU 半虛擬系統的鍵盤佈局永遠在 virt-manager 內扮演一個 qwerty 鍵盤,而不採用開機時(或在 /etc/sysconfig/keyboard 內)所指定的鍵盤佈局。這個情況只會當你使用 vfb(透過 virt-manager 或直接利用 vncviewer)時出現。如果你使用 xm console,系統會使用正確的鍵盤佈局。
但由 CentOS 5.1 開始(也就是利用 xen-3.0.3-41.el5、xen-libs-3.0.3-41.el5、libvirt-0.2.3-9.el5 及 virt-manager-0.4.0-3.el5 這些套件)你可以在 DomU 內透過 virt-manager 採 qwert 以外的鍵盤佈局。不幸地,這不能在 virt-manager 內設定,而要在設定檔內以「來賓」的身份設定:
下面是為一台 DomU 設定比利時鍵盤佈局(be-latin1)的範例:
vfb = [ "type=vnc,vncunused=1,keymap=fr-be" ]
當然,你須要用一個正確的修改值:所有可用的按鍵對照表都放置在 /usr/share/xen/qemu/keymaps 內
你亦可以將某個鍵盤佈局設定為所有 domU 的預設值。要這樣做,編輯 /etc/xen/xend-config.sxp 這個檔案,然後加入如此一行(範例採用法文鍵盤):
(keymap 'fr')
接著你須要重新啟動 Xen 常駐程式令這個設定生效(service xend restart)。
Translation of revision 11