Ubuntu内核编译

环境: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 bzlmagemake 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

全部评论

相关推荐

仁者伍敌:难怪小公司那么挑剔,让你们这些大佬把位置拿了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务