升级至4.16.9

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
ReverseOnce
帖子: 106
注册时间: 2015-08-29 21:05

升级至4.16.9

#1

帖子 ReverseOnce » 2018-05-21 1:42

什么样的发行版用什么样的内核,ubuntu的内核当然用ubuntu的方式来定制最合适。ubuntu的内核源代码用git管理,其仓库位于launchpad,要获得内核树需要安装git。
新建一个工作目录,打开终端,输入:

代码: 全选

cd Downloads

代码: 全选

mkdir BuildKernel
切换到工作目录:

代码: 全选

cd BuildKernel
安装git;

代码: 全选

sudo apt install git
开始下载内核仓库:

代码: 全选

git clone git://git.launchpad.net/~ubuntu-kernel-test/ubuntu/+source/linux/+git/mainline-crack v4.16.9
这个命令最终会在当前目录新建一个名为v4.16.9的子目录,并包含所需的内核源代码。正确完成克隆的输出看起来像下面这样:

代码: 全选

remote: Counting objects: 7059560, done.
remote: Compressing objects: 100% (1289911/1289911), done.
remote: Total 7059560 (delta 6002977), reused 6773778 (delta 5723362)
Receiving objects: 100% (7059560/7059560), 1.60 GiB | 6.80 MiB/s, done.
Resolving deltas: 100% (6002977/6002977), done.
Checking out files: 100% (61358/61358), done.
git比https更快、更稳定,不过,如果9146端口被防火墙屏蔽,退而求其次,也可以使用https:

代码: 全选

git clone https://git.launchpad.net/~ubuntu-kernel-test/ubuntu/+source/linux/+git/mainline-crack v4.16.9
再到下面给出的web页面下载7个补丁:

代码: 全选

0001-base-packaging.patch
0002-UBUNTU-SAUCE-add-vmlinux.strip-to-BOOT_TARGETS1-on-p.patch
0003-UBUNTU-SAUCE-tools-hv-lsvmbus-add-manual-page.patch
0004-adhoc-from-__future__-import-syncconfig.patch
0005-UBUNTU-SAUCE-no-up-disable-pie-when-gcc-has-it-enabl.patch
0006-debian-changelog.patch
0007-configs-based-on-Ubuntu-4.16.0-4.5.patch
建一个存放补丁的文件夹,将下载好的补丁全部保存到这个文件夹:

代码: 全选

mkdir -p ubuntu-patches/v4.16.9-patches
开始编译之前,需要确认内核树所在的分区有大约50g的多余空间,并安装相关软件包:

代码: 全选

sudo apt install libudev-dev libpci-dev libelf-dev  binutils-dev
sudo apt install asciidoc kernel-wedge kexec-tools
sudo apt install bison flex libssl-dev libncurses5-dev
sudo apt build-dep linux
进入内核树根:

代码: 全选

cd v4.16.9
为内核打上ubuntu的补丁,按0001-0007的数字由小到大的顺序打完7个补丁,有其他非官方补丁的在此也应该一起打上:

代码: 全选

git am < ~/Downloads/BuildKernel/ubuntu-patches/v4.16.9-patches/0001-base-packaging.patch
没设置用户ID的输入:

代码: 全选

patch -p1 < ~/Downloads/BuildKernel/ubuntu-patches/v4.16.9-patches/0001-base-packaging.patch
初始化debian文件:

代码: 全选

fakeroot debian/rules clean
编辑配置:

代码: 全选

fakeroot debian/rules editconfigs
这个命令调用menuconfig来配置内核,看到其显示的内核版本是4.17.0-rc5,说好的4.16.9呢?不管了,由它去。
4.17.0-rc5.png
开始编译:

代码: 全选

fakeroot debian/rules clean
DEB_BUILD_OPTIONS=parallel=4 fakeroot debian/rules binary-headers binary-generic binary-perarch
处理器核心多的可以将命令中的“4”改成更大的数字,以加速编译过程。此命令执行完会在上一级目录生成11个包。
如果需要低延时的内核,则输入:

代码: 全选

fakeroot debian/rules clean
DEB_BUILD_OPTIONS=parallel=4 fakeroot debian/rules binary
该命令将在上一级目录生成57个包,耗时是前面命令的两倍。
安装新内核:

代码: 全选

cd ..
sudo dpkg -i linux-headers*.deb linux-image*.deb linux-modules*.deb linux-libc-dev*.deb
更换到新的低延时内核看看,软重启:

代码: 全选

sudo kexec -l /boot/vmlinuz-4.16.9-041609-lowlatency --initrd=/boot/initrd.img-4.16.9-041609-lowlatency --reuse-cmdline
sudo kexec -e
检查运行状态:

代码: 全选

uname -rs
dpkg --get-selections | grep linux
dmesg | less
check.png
头像
九天星
帖子: 1440
注册时间: 2007-07-14 20:45

Re: 升级至4.16.9

#2

帖子 九天星 » 2018-05-25 15:28

升级内核的目的是什么?
ReverseOnce
帖子: 106
注册时间: 2015-08-29 21:05

Re: 升级至4.16.9

#3

帖子 ReverseOnce » 2018-05-29 18:09

九天星 写了:升级内核的目的是什么?
原因也许有很多,例如:
1.为了当前内核尚未支持的新功能。
2.量身定制, 提高系统运行速度。
3.驱动新的硬件和设备。
4.旧内核潜藏安全隐患。
5.计算机迷的探索。
还有一大堆,总之,利多弊少。
回复