环境:ubuntu 16.04 LTS
因为很多操作都需要root权限,为了方便,所以切换到root权限模式进行下面的操作
查看内核版本
首先使用uname -r
查看本机内核
我的内核版本是4.8.0-36-generic
下载源码并解压
在http://www.kernel.org/下载所需要内核源码
在这里我下载的是linux-4.9.1.tar.xz
首先在文件目录内使用指令
xz -d linux-4.9.1.tar.xz
tar -xvf linux-4.9.1.tar.xz
对文件进行解压,从而得到文件夹linux-4.9.1
正式编译
为避免之后的过程出错先执行如下三条指令
sudo apt-get install libssl-dev
sudo apt-get install libncurses5-dev
sudo apt-get update
(1). 使用mv指令将生成的文件夹移动到/usr/src
目录下
`cd /usr/src`
(2). 输入 cp /boot/config-
后按下TAB键,系统会自动补全符合条件的文件名,然后继续输入.config
例: cp /boot/config-4.8.0-36-generic .conifg
(3). 进入之前解压的文件夹
例: cd /usr/src/linux-4.9.1
执行指令 make mrproper
执行此条指令清除之前的编译信息,若为首次编译则不需要进行
(4). 执行指令 make menuconfig
后弹出界面
可以根据个人需求对其进行配置,在此不进行多余配置,
利用左右键依次进行选择 Save->OK->Exit->Exit
此过程会在 文件夹内生成一个.config
文件,文件不可见,可使用ls -a
查看
(4). 执行make -j10
此过程相当于分别执行了make bzlmage
和make modules
两条指令
也可直接使用指令 make
,使用-j10
的作用是为了加快编译速度, -j
后面的数字建议设置为CPU核心数目的2倍,不宜过大。
此过程大概需要执行2-3小时。
(5). 继续执行指令
make modules_install
make install
执行完这两条指令后,/boot
目录下会生成vmlinuz、initrd.img 等文件
(6). 执行 reboot
命令后重启,一般内核在重启后就更换成功了
执行uname -r
查看内核版本 ,我的内核版本此时已经成功换成4.9.1
注:(部分电脑重启后的内核版本可能并未改变,需要继续如下步骤
updata-grub
同时检查
/boot/grub/grub.cfg
的文件内容找到如下代码片段
linux /boot/vmlinuz-4.9.1 root=UUID=3df047be-8376-49c0-8e2a-b5c6f7021fc6 ro quiet splash $vt_handoff initrd /boot/initrd.img-4.9.1
将对应的版本号改为想优先启动的内核版本号,便可成功
如将启动时系统内核改为4.8.0-36-generic
linux /boot/vmlinuz-4.8.0-36-generic root=UUID=3df047be-8376-49c0-8e2a-b5c6f7021fc6 ro quiet splash $vt_handoff initrd /boot/initrd.img-4.8.0-36-generic
感谢您的阅读,若文章存在问题欢迎指出
邮箱chpyue@foxmail.com