聽說Xen 4.2支持嵌套虛擬化了(nested virtualization,在虛擬機裡可以使用vmx或者svm),趕緊下來試試。
目標系統:Ubuntu 12.04 i386 + i5 2510E + QM67
CPU和主板都支持vt-d,因此除了實驗嵌套虛擬化,還可以實驗設備passthrough。
xen主要由兩部分組成,一個是hypervisor,就是編譯出來的xen.gz文件,這個是開機啟動時加載的。
另一部分是工具。
一般編譯Xen只需要兩部,make xen tools && make install-xen install tools
還有一部分可選,stubdom,我們在這也編譯,make stubdom && make install-sbudom
准備工作
sudo apt-get install bcc python-dev gettext iasl uuid-dev libncurses5-dev libglib2.0-dev libyajl-dev texinfo git
編譯Xen
因為我要編譯XSM模塊,也就是Xen Security Module,所以先要修改一下Config.mk
修改Config.mk,將XSM_ENABLE和FLASK_ENABLE改為y
make xen
出現下面的錯誤
這時出現了一個關於類型的警告,是與XSM有關的代碼,直接修改一下代碼就行了
xen/xsm/flask/ss/policydb.c
1779行
if ( len != strlen(POLICYDB_STRING) )
{
printk(KERN_ERR "Flask: policydb string length %d does not "
"match expected length %lu\n",
len, strlen(POLICYDB_STRING));
goto bad;
}
改為(unsigned long) (strlen(POLICYDB_STRING)
這樣就可以編譯通過了,編譯完就可以安裝Xen,make install-xen