linux内核的编译和安装
1. 获取内核源码
登录Linux内核官方网站, 可以获取源代码。使用git获取最新提交到Linus版本树的一个副本:
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
注意:如果你的机器的内存过小可能导致代码拉到中途失败,错误如下:
fetch-pack: invalid index-pack output
解决方法:可以只拉取最近的一次提交,也能获取最新的代码。
git clone --depth 1 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
2. 编译源码
进入源码目录linux-2.6,首先是配置各种形如CONFIG_FEATURE的编译选项,这些选项位于linux-2.6/.config中,可以通过指令来查看图形化的配置格式make menuconfig
.
修改后可以通过指令进行配置更新make oldconfig
.
源码中会有个默认的配置,也可以直接用这个进行配置,通过指令make defconfig
.
配置好后,执行make进行源码编译。
make -jn
上述n代表执行的make线程数,一般设置为cpu核心数的两倍。
编译完成后,内核为linux-2.6/arch/x86/boo/bzImage。
3. 安装内核
以root身份,安装编译的模块,安装在lib/modules下(比如:/lib/modules6.3.0-rc2-00405-ga3671bd86a97),指令如下:
make modules_install
接下来安装内核,安装在/boot下(比如:/boot/vmlinuz-6.3.0-rc2-00405-ga3671bd86a97)
make install
4. reboot,系统加载新的内核
reboot进入grub后,可以看到刚才编译安装的内核:
(我这里是6.3.0-rc2-00405-ga3671bd86a97)
进入grub后,可以看到刚才编译安装的内核:
6.3.0-rc2-00405-ga3671bd86a97
进入系统后,通过uname -r
也能看内核变为自己编译的内核了。