文章目录
准备环节
克隆kvm主线代码
这部分有两个办法一个是直接克隆代码,适合能翻墙的用户,另外一种是从国内网站克隆kernel主线之后更新kvm主线的代码改动,本文使用第二种方式演示,第一种更简单但网络要求极高
- 克隆主线
git clone https://mirrors.tuna.tsinghua.edu.cn/git/linux.git
更新成功后在当前目录出现 linux 目录,进入linux目录 - 添加kvm分支
git remote add kvm git://git.kernel.org/pub/scm/virt/kvm/kvm.git
- 获取kvm分支更新内容
git fetch kvm
- 使用
git branch -a
如输出类似下图侧表示成功
准备编译环境
推荐CentOS8及以上版本
- 更新系统
yum update -y
- 安装开发组软件
yum group install "Develop*" -y
- 安装依赖
yum install bc python3 ncurses ncurses-devel openssl-devel -y
编译前需了解的知识
查看make支持命令
- 其中menuconfig需要 ncurses库支持,menuconfig提供终端交互方式配置内核参数
- olddefconfig基于现有的.config文件升级,其中新添加的特性按照 arch/x86/configs/x86_64_defconfig自动填充
编译步骤
- 编译内核
- 编译initramfs文件
- 编译module模块
编译内核
拷贝当前内核的配置文件
- 使用uname -a查看当前内核编号
- 进入/boot目录找到与内核编号相同的配置文件,拷贝文件到内核源码目录内,文件名为 .config
- 执行
make olddefconfig
- 执行
make vmlinux -j cpu线程数
编译linux内核
若编译过程中出现下图所示,则使用’make vmlinux -j1’查看错误提示,使用百度和谷歌搜索坚决方案
注意!!!
如果编译过程中遇到如图所示的错误,请按照下面步骤操作,没有可忽略
- 编辑 .config文件,清空 CONFIG_SYSTEM_TRUSTED_KEYS参数
编译bzImage
- 执行
make bzImage
即可
出现 bzImage is ready即可
编译modules
- 执行
make modules
即可
安装新内核
推荐关闭selinux
安装模块
- 执行
make modules_install
安装模块 - 执行
make install
安装bzImage和kernel
检查默认引导内核
执行grubby --info DEFAULT
,输出如下图,其中内核编号和编译的相同即可