星期一, 7月 18, 2011

舊Linux上編譯Xen guest kernel

由於最近希望把一台舊Linux伺服器虛擬化,原本嘗試用Hyper-V Server,無奈對於Linux相容性太差,連新版的TrueImage boot cd都不能用,於是我改用XenServer。因為我希望有好用的管理工具,所以我是直接下載Citrix的XenServer免費版,需要每年手動更新一次授權。

在虛擬的Windows XP安裝Xen Tools後發現記憶體使用量變小,IO也很快。所以再把Linux丟上去後,發現不能在Kernel 2.4跑Xen Tools。於是我先升級Linux核心 2.4->2.6,確定沒問題後,再照著XenSource的官方文件。注意若原本是kernel 2.4,千萬要先升級為module-init-tools,否則重開機就掛了。

要編譯支援Xen的kernel,首先當然是取得Linux kernel source,早期的Linux需要另外下載xen patch,現在新的kernel都內建,所以我下載2.6.39.3,是目前最新的Stable。接下來要編譯:
$su -
#cd /usr/src
#wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.39.3.tar.bz2
#tar xjf linux-2.6.39.3.tar.bz2
#make menuconfig
  1. 根據官方文件,在32bit kernel必須啟用PAE(Processor type and features -> High Memory Support -> PAE (Physical Address Extension) Support->64GB),並且要設定CONFIG_HIGHPTE=n(Processor type and features -> High Resolution Timer Support->不要勾),否則會crash(應該就是kernel panic吧?),若編成64bit kernl就不用管這兩點。
  2. 再來要注意,一定要啟用ACPI support,否則就看不到Dom0。 Power Management and ACPI options ->  ACPI Support。
  3. 接著是重點: Processor type and features -> Paravirtualized guest support  -> Xen guest support
  4. 最後在 Device Drivers ->  Xen driver support 底下,我是有關的全選啦 XD
最後是
#make bzImage modules modules_install install
沒問題的話,重開機就OK了。
參考資料:外行人編譯GCC外行人升級Linux核心 2.4->2.6

沒有留言: