要发现当前系统安装的版本,我们可以:
$ uname -sr
下面的截图显示了在 Ubuntu 16.04 server 中上面命令的输出:
在 Ubuntu 16.04 中升级内核
要升级 Ubuntu 16.04 的内核,打开 http://kernel.ubuntu.com/~kernel-ppa/mainline/ 并选择列表中需要的版本(发布此文时最新内核是 4.10.1)。
接下来,根据你的系统架构下载 .deb 文件:
对于 64 位系统:
$ wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.10.1/linux-headers-4.10.1-041001_4.10.1-041001.201702260735_all.deb
$ wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.10.1/linux-headers-4.10.1-041001-generic_4.10.1-041001.201702260735_amd64.deb
$ wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.10.1/linux-image-4.10.1-041001-generic_4.10.1-041001.201702260735_amd64.deb
3
这是 32 位系统:
$ wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.10.1/linux-headers-4.10.1-041001_4.10.1-041001.201702260735_all.deb
$ wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.10.1/linux-headers-4.10.1-041001-generic_4.10.1-041001.201702260735_i386.deb
$ wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.10.1/linux-image-4.10.1-041001-generic_4.10.1-041001.201702260735_i386.deb
4
下载完成这些所有内核文件后,如下安装:
$ sudo dpkg -i *.deb
安装完成后,重启并验证新的内核已经被使用了:
$ uname -sr
就是这样。你下载就可以使用比 Ubuntu 16.04 默认安装的内核的更新版本了。
如何更新/替换ubuntu16.04内核1.配置编译工具
#apt-get install libncurses5-dev build-essential kernel-package
1
1
2.下载内核代码
因为kernel.org的代码和ubuntu内核的代码并不完全一致,所以直接从kernel.org下载下来的代码无法确保编译后可以成功运行于老的ubuntu平台,所以应该使用ubuntu的最新的内核代码
下载ubuntu最新的内核代码
#sudo apt-cache search linux-source
1
1
结果如下
Linux-source - linux kernel source with Ubuntu patches
linux-source-4.4.0 - Linux kernel source for version 4.4.0 with Ubuntu patches
linux-source-4.8.0 - Linux kernel source for version 4.8.0 with Ubuntu patches
选择比较新的4.8的版本
#sudo apt-get install linux-source-4.8.0
1
1
代码会下载在/usr/src下,里面内容如下:
drwxr-xr-x 27 root root 4096 4月 21 2016 linux-headers-4.4.0-21
drwxr-xr-x 7 root root 4096 4月 21 2016 linux-headers-4.4.0-21-generic
drwxr-xr-x 27 root root 4096 1月 22 21:35 linux-headers-4.4.0-59
drwxr-xr-x 7 root root 4096 1月 22 21:35 linux-headers-4.4.0-59-generic
drwxr-xr-x 4 root root 4096 1月 22 23:00 linux-source-4.8.0
lrwxrwxrwx 1 root root 45 12月 22 04:36 linux-source-4.8.0.tar.bz2 ->linux-source-4.8.0/linux-source-4.8.0.tar.bz2
1
2
3
4
5
6
1
2
3
4
5
6
编译与替换
1.拷贝到其他工作目录
2.在源代码目录执行
cp arch/x86/configs/x86_64_defconfig .config
1
1
3.编译
make menuconfig
make
sudo make moudules_install
sudo make install
sudo reboot
1
2
3
4
5
1
2
3
4
5
验证
重启后执行uanme -a 命令,查看内核版本,会发现内核版本已经从4.4.0-59变为4.8.11
意义
编译/替换内核之后,可以获得与当前内核版本相匹配的头文件,方便进行驱动开发。另外可以获得带符号的vmlinux,可以方便的进行内核的调试与学习。
顶
2
这个要编译的。从kernel.org下载内核源代码,这里我下载的是最新的4.6-rc5,下载的文件为linux-4.6-rc5.tar.xz,直接用归档管理器解压即可。如果你采用命令行可以用以下命令解压:
xz -d linux-4.6-rc5.tar.xz
tar xvf linux-4.6-rc5.tar
这一步完成后你的当前目录下应该会出现linux-4.4-rc5这个文件夹,进入这个文件夹:
cd linux-4.6-rc5
执行以下命令来确保内核代码树绝对干净:
make mrproper
此外还要安装编译kernel过程中的一些依赖项:
yaourt -S xmlto docbook-xsl bc
2.配置
这一步是定制精确适配你的电脑规格的内核最关键的步骤,为了适应各种机型,官方内核包含了绝大部分的内核模块,其中有些是我们用不到的,可以选择去掉这些模块,更好地发挥硬件的性能。
传统的菜单配置方式如下:
make menuconfig
这会d出一系列的菜单,你可以根据自己的需求进行高度的定制,留下需要的部分即可。例如选择不编译某些部分,或者将某个部分编译成模块。
对于新手来说上述配置过程会很复杂,错误的设置可能会导致内核无法启动或者某些设备无法驱动。不过对新手来说有一个超级捷径,那就是使用localmodconfig:
make localmodconfig
这个命令只会选择当前正在被使用的选项,所以在执行这条命令之前,把所有的设备(鼠标、键盘、U盘)都先插上,这样就应该不会出问题啦。为了简单我这里也采取这样的方式。
最后配置文件将被保存在.config文件中,编译过程会用到它。
3.编译
配置完成后便可以执行编译工作:
make -j4
编译的过程将花费很多时间,从15分钟到超过1小时不等,这取决于你选择的多少选项以及电脑处理器的性能。
4.安装
安装模块:
sudo make modules_install
这一步把内核模块复制到/lib/modules/4.6.0-rc5这个文件夹中,我们需要删除其中的source和build的链接:
sudo rm -f /lib/modules/4.6.0-rc5/{source,build}
将内核复制到/boot目录
sudo cp -v arch/x86_64/boot/bzImage /boot/vmlinuz-4.6
制作初始化内存盘
sudo mkinitcpio -k 4.6.0-rc5 -c /etc/mkinitcpio.conf -g /boot/initramfs-4.6.img
完成上述步骤之后你的/boot目录会多出vmlinuz-4.6和initramfs-4.6.img这两个文件。
现在执行sudo grub-mkconfig -o /boot/grub/grub.cfg来更新引导信息,就可以使用新的内核启动了。重启后使用uname -a来查看内核版本,可以看到已经是4.6-rc5了:
关于更多Linux的学习,请查阅书籍《linux就该这么学》。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)