《kvm安装与启动过程说明》进行了通用桌面系统的虚拟机安装。在本文中将介绍自行编译linux Kernel内核源码,无桌面OS虚拟机安装和启动。为后续内核调试打下基础。
1. 安装QEMU-KVM
见前文。
2. 安装KVM内核模块
见前文。
3. 编译Linux源码
3.1 下载合适的内核源码
- 链接:http://www.kernel.org 文件名linux-3.4.1.tar.gz
- 解压下载的包:
1 | $tar –zxvf linux-3.4.1.tar.gz |
3.2 编译内核
1 | $cd linux-3.4.1 |
进入图形配置界面,若报错,可安装ncurses包
1 | $sudo apt-get install libncurses5-dev |
配置Virtualization项->
选择Kernel_based virtual Machine (KVM) support/
KVM for Intel processors support两项
配置kernel-hacking项->
选择compile kernel with debug info
选择KVM支持与Intel 处理器。
1 | $make bzImage //生成bzImage内核镜像 |
开始编译,编译完的结果如图:
主要的文件为vmlinux: 编译出来的最原始的内核文件,未压缩;
./arch/x86/boot/bzImage: 经过压缩后的img文件,比较大;
4. BusyBox编译和安装
该工具用来制作initramfs镜像文件。
4.1 下载源码
- 链接:http://www.busybox.net 文件为busybox-1.22.1.tar.gz2
- 解压
1 | $tar –xf busybox-1.22.1.tar.gz2 |
4.2 编译busybox
1 | $make defconfig |
因为Linux运行环境中是不带动态链接库的,所以必须以静态方式来编译BusyBox。
修改:
Busybox Settings --->
Build Options --->
[*] Build BusyBox as a static binary(no shared libs)
1 | $make |
4.3 制作initramfs
- 编写initrd启动脚本,$BUSYBOX为busybox包解压后的目录
1 | $cd $BUSYBOX/_install |
输入:
1 |
|
- 编写构建initrd镜像脚本
1 | $vim $KERNEL/build-initrd.sh |
输入:
1 |
|
- 运行脚本
1 | $sudo ./build-initrd.sh |
若有权限问题,更改下文件的权限,注意目录层次.
$KERNEL为linux源码解压后的目录,busybox源码也在该目录下。
- 成功后会在当前目录下生产rootfs.img.gz文件
5. Guest OS的安装运行
5.1 启动命令
1 | $sudo /usr/local/kvm/bin/qemu-system-x86_64 -kernel \ |
5.2 参数解释
5.3 运行结果
输入uname –a:
输入cat /proc/cpuinfo:
输入 cat /proc/meminfo:
启动命令加入-smp 4选项后
1 | $cat /proc/cpuinfo |