这是我第一次真心把Linux内核完整的编译一遍……不过呢,从高版本起步,老内核里出现的诸多问题已经被开发者fix掉,反而更加容易。在内核中添加Xen支持就是这样。
从2.6.39版本开始,内核不需要patch 直接可以同时支持Xen Dom0和DomU ,但是想把Xen相关的编译选项调开倒真不容易。也许是我没习惯内核的编译方式吧。
环境:gcc4.5 处理器 Pentium D E2140(老处理器了,不支持HVM,凑合着用)
下载linux 3.1.0版本的内核之后 sudo make menuconfig 进入配置画面
1. 配置
Processor Types and Features -->
Processor Family 选择Pentium 4(根据实际情况,选最高的。老处理器没办法)
下面的 High Memory Support 内存上限 选择 64GB,这样底下会多出一个隐藏选项:
PAE Support 该选项会自动被选上
再进入Paravirtualized Guest Support,会出来一个隐藏选项
Xen Guest Support (= =) 选中!
这样编译出来的内核,既可以当Dom0,也可以当DomU。内核会自动适应。
最后看一下其他的选项 把跟AMD处理器相关的就先拿掉吧
2. 安装
配置好以后,直接make 或者
sudo make -j5 bzImage
sudo make -j5 modules
-jn 可以开n个线程make。一般n=3-5
sudo make modules_install
(这一步会覆盖已有的 模块/lib/modules 可能有的驱动会出问题)
然后把/usr/src/linux-3.1.0下的 .config, System.map 和arch/x86/boot/bzImage 拷贝到/boot 改名成 config-3.1.0 System.map-3.1.0 vmlinuz-3.1.0
sudo cp -a .config /boot/config-3.1.0
sudo cp -a System.map /boot/System.map-3.1.0
sudo cp arch/x86/boot/bzImage /boot/vmlinuz-3.1.0
创建initrd
sudo update-initramfs -c -v -k 3.1.0 // 创建一个新的initramfs启动用,会生成initrd.img-3.1.0
更新grub
sudo grub-mkconfig
会自动生成
### BEGIN /etc/grub.d/20_linux_xen ###
Found linux image: /boot/vmlinuz-3.1.0
Found initrd image: /boot/initrd.img-3.1.0
menuentry 'Ubuntu GNU/Linux, with Linux 3.1.0 and XEN syms-4.1.2' --class ubuntu --class gnu-linux --class gnu --class os --class xen {
insmod part_msdos insmod ext2 set root='(hd0,msdos6)' search --no-floppy --fs-uuid --set 8396057b-e888-4868-a754-27a816cae53d echo 'Loading Linux 3.1.0 ...' multiboot /boot/xen-syms-4.1.2 placeholder module /boot/vmlinuz-3.1.0 placeholder root=UUID=8396057b-e888-4868-a754-27a816cae53d ro quiet splash echo 'Loading initial ramdisk ...' module /boot/initrd.img-3.1.0
}
检查完毕无误以后,把配置文件写入grub.cfg
sudo grub-mkconfig -o /boot/grub.cfg
3. nvidia 官方显卡驱动安装
Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
Option "AddARGBGLXVisuals" "True"
SubSection "Display"
Depth 24
EndSubSection
EndSection
Section "Extensions"
Option "Composite" "Enable"
EndSection