内核编译安装:
一、一定是下载满足需求的内核啦。官网:https://www.kernel.org/
p.s.学习最新的内核,可以克隆linus在github的代码:https://github.com/torvalds/linux
二、选择内核配置:
进入下载好的源码的根目录下,make menuconfig。选择之后保存退出。之后会有.config文件。这个文件就是配置文件。
p.s.选择默认选项的话:make defconfig。
p.s. 有时会将补丁打入内核,所有在makemenuconfig之前,先打补丁:patch -p1 <(PATCH_PATH)/(PATCH_NAME)。参数 p1:将补丁中的需要修改或添加的文件的第一级路径省略。如:“a/include/linux/cgroup_subsys.h”和省略 a/。
p.s. 如果需要当前内核的配置文件时,那么就得克隆当前配置文件:zcat /proc/config.gz> .config; make oldconfig。
p.s. make menuconfig可能不能使用,这是因为缺少编译环境。sudo apt-get installlibncurses5libncurses5-dev build-essential问题就会迎刃而解
三、如果之后又修改过配置文件,或者在用已用的配置文件配置新的代码树的时候。应该验证和更新配置:makeoldconfig。
四、通过之上四步,内核已经配置好了,这是就可以编译了。
make -j(cpu数×2)
五、安装新内核。注意:必须是root用户!
1、make modules_install--------------->可以把所有编译好的模块安装到正确的主目录/lib/modules下。
2、make install ----------->自动将映像添加到/boot目录下。
这是已安装新内核了。重新启动就可以选择不同内核了。
p.s. ubuntu 发行版时,系统可能会自动隐藏grub菜单。所以必须修改grub文件:
打开 /etc/default/grub 注释 GRUP_HIDDEN_TIMEOUT = 0 仅在前头加一个#即可。
最后必须更新grub :update-grub。
卸载内核:
一、卸载自己编译的内核:
- /boot/vmlinuz*KERNEL-VERSION*
- /boot/initrd*KERNEL-VERSION*
- /boot/System-map*KERNEL-VERSION*
- /boot/config-*KERNEL-VERSION*
- /lib/modules
- KERNEL-VERSION代表你想卸载的内核的版本号
-
- 最后必须更新grub : update-grub。
- 二、卸载发行版自带的内核。
- 1、查找内核文件 :dpkg--get-selections|grep linux 。带有image的就是内核文件。
- 如:linux-image-3.16-amd64 install
- 2、卸载:sudo apt-get removelinux-image-(接内核版本)
- 最后必须更新grub:update-grub