如何在没有任何Distro-upgrade的情况下将内核更新到最新的主线版本?
目前我正在运行Linux-3.0,我想将它更新为Linux-3.3.1最新的稳定内核版本,如http://www.kernel.org所述 。 我可以在Ubuntu中更新到3.3.1而不会有任何崩溃的风险吗? 我正在按照Update Manager的规定定期更新我的内核。目前我有Linux- 3.0.0.17 .. 我可以更新吗?
注意:
任何用户应该在Ubuntu中使用的最新内核版本都会通过Update Manager自动更新,因此用户通常不需要对内核升级采取任何操作。 作者所指的问题是主线内核 ,请参阅: 我应该升级到“主线”内核吗?
我一直用于内核升级/降级的最简单的指令是由ubuntuforums.org用户提供的lykwydchykyn名称(我为此post修改了url):
- 请访问: http : //kernel.ubuntu.com/~kernel-ppa/mainline/
-
将3个(可能是4个)debs下载到某个文件夹:
linux-headers-VERSION-NUMBER_all.deb linux-headers-VERSION-NUMBER_amd64.deb linux-image-VERSION-NUMBER_amd64.deb linux-image-extra-VERSION-NUMBER_amd64.deb # if available
-
使用你使用的任何软件包管理器前端安装debs(gdebi仍然在吗?),或使用这些命令:
cd /path/to/folder/where/you/put/the/debs sudo dpkg -i *.deb
资料来源:
您可以随时执行以下操作:
apt-cache search linux-image
选择你想要的那个,然后做:
sudo apt-get install linux-image-your_version_choice linux-headers-your_version_choice linux-image-extra-your_version_choice
我的回答是,你可以。 稳定版本是3.4,但在本教程中我使用3.3.1。
Ubuntu(32位)通用PAE:
运行以下命令:
mkdir kernel\ v3.3.1-precise && cd kernel\ v3.3.1-precise wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.3.1-precise/linux-headers-3.3.1-030301-generic-pae_3.3.1-030301.201204021435_i386.deb wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.3.1-precise/linux-headers-3.3.1-030301_3.3.1-030301.201204021435_all.deb wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.3.1-precise/linux-image-3.3.1-030301-generic-pae_3.3.1-030301.201204021435_i386.deb sudo dpkg -i linux-*.deb sudo update-grub sudo reboot now
Ubuntu(64位):
运行以下命令:
mkdir kernel\ v3.3.1-precise && cd kernel\ v3.3.1-precise wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.3.1-precise/linux-headers-3.3.1-030301-generic_3.3.1-030301.201204021435_amd64.deb wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.3.1-precise/linux-headers-3.3.1-030301_3.3.1-030301.201204021435_all.deb wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.3.1-precise/linux-image-3.3.1-030301-generic_3.3.1-030301.201204021435_amd64.deb sudo dpkg -i linux-*.deb sudo update-grub sudo reboot now
请享用!
与此处的一些答案相反,Ubuntu在主要内核团队的一两天内发布了新内核。 我曾经像这里提出的一些答案那样用硬升级方式升级,但我发现这是一种更简单的方法。
手动安装内核的含义
手动安装内核需要额外的工作。
您有理由想要安装最新的主线内核:
- 上次Ubuntu LTS内核更新中的一个错误,您无法降级
- 您在当前的Ubuntu LTS内核更新流或HWE更新中不支持新硬件
- 您希望仅在最新的主线内核版本中提供安全性升级或新function。
截至2018年1月15日,最新的稳定主线内核为4.14.13
。 在撰写本文时,许多人都有兴趣安装它以防止Meltdown安全漏洞。 如果您选择手动安装它,您应该知道:
- 较旧的LTS内核在大于标题为Ubuntu的主菜单第一个选项之前不会更新 。
- 使用通常的
sudo apt auto-remove
命令不会删除手动安装的内核。 您需要遵循以下步骤: 如何删除旧内核版本以清理启动菜单? - 当您想要恢复常规LTS内核更新方法时,监视旧内核中的开发。 然后删除手动安装的主线内核,如上一个项目符号链接中所述。
- 在手动删除最新的主线内核之后运行
sudo update-grub
,然后Ubuntu的最新LTS内核将成为Grub主菜单上第一个名为Ubuntu的选项。
寻找最新的内核
转到( kernel.ubuntu.com – 内核PPA主线 )并按结束键:
现在点击链接4.9.8
(如果你看到这个链接,可以使用更新的链接),然后会出现以下内容:
请注意带有黑色喷枪标记的链接。 这些是我们将使用Intel或AMD处理器为Ubuntu 16.04 64位下载的三个。
使用终端安装
使用Ctrl + Alt + T打开终端会话并使用:
cd ~/Downloads # Change to your downloads directory ll linux*.deb # Check if any previous downloads still exist rm linux*.deb # Use this command if any previous downloads found
现在切换回上面的下载屏幕,然后单击所有三个.deb
内核下载。 下载完成后(您将在浏览器中看到状态)切换回终端会话并使用:
sudo dpkg -i linux*.deb rm linux*.deb sudo reboot
瞧! – 当您选择grub启动菜单中的第一个选项时,您正在运行最新的内核。 您的旧内核版本仍可在grub的“ 高级选项”菜单下使用。
安装最新内核十几次后,你会问一个问题“ 如何删除较旧的内核版本? ”,你会在Ask Ubuntu中找到这些答案。
有一种更简单的方法,这是我使用的方式。 只需下载Ubuntu Mainline Kernel Updater脚本并从终端运行它。 它将为您下载.deb,安装新内核,并可选择删除旧内核(不推荐),然后选择重启。
示例输出(从我的终端复制):
evilsupahfly@the-black-beast:~$ sudo KernelUpdateChecker -no-rc -r utopic Run this command to install the new kernel /tmp/kernel-update root@the-black-beast:~# /tmp/kernel-update Config Notes: Rejecting Release Candidates Accepting Latest Kernel Accepting kernels compiled for utopic Accepting kernels with a version higher than 3.15.0-031500-lowlatency Information: Origin: http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.15.1-utopic Kernel Version: 3.15.1-031501 Release Date: 2014/06/16 @ 18:41 (YYYY/MM/DD @ HH:MM) Care to look at the change log? (y=Yes, n=No) (n) (download output skipped) Greetings root I (the-black-beast) am now self aware and a sentient being, have a nice day. Oh and by the way SKYNET is now active. Installing Linux 3.15.1-031501: (installer output skipped) The New Kernel looks to have been installed WARNING: If the new kernel does not boot you may regret saying yes here. Would you like to remove the current one? (y=Yes, n=No) (n): n Are you ready to Reboot? (y=Yes, n=No) (n): n
几乎完全自动化,完全没有问题。
迟到但新答案。
我将在我的回答中添加更多信息。现在我的旧内核是linux-headers-4.8.0-53
。要找出你在终端中键入uname -r
的内核。现在输入这个命令来获取可用内核的列表。
apt-cache search linux-image
这将为您提供一个非常大的输出。现在选择其中一个您要安装并通过以下命令安装它(不要像这样输入这些命令,将kernal_version一词替换为您要安装的内核版本)
sudo apt-get install linux-image-kernal_version sudo apt-get install linux-image-extra-kernal_version sudo apt-get install linux-headers-kernal_version
现在在我的情况下我选择linux-image-4.10.0-22-generic
所以我的命令看起来像这样
sudo apt-get install linux-image-4.10.0-22-generic sudo apt-get install linux-image-extra-4.10.0-22-generic sudo apt-get install linux-headers-4.10.0-22-generic
现在最后通过命令删除旧内核
sudo apt-get autoremove
现在,当我第一次这样做时,我不知道是我的硬件问题还是因为删除旧内核,但我的笔记本电脑显示我的笔记本电脑有时会出现黑屏。因此我将其取出电池并重新启动并输入命令。此外,我不再受黑屏问题的困扰。
uname -r
它给了我
linux-image-4.10.0-22-generic
这意味着内核已更新。
我写了一个脚本,总是会是最新的。
ukupgrade:Ubuntu内核升级
- 打开您最喜欢的终端并运行以下命令
-
为文件提供可执行权限
chmod +x ./ukupgrade
-
调用脚本
./ukupgrade
运行以下终端命令以安装新的Ubuntu主线内核 。
sudo apt-get update sudo apt-get install python-bs4 cd /tmp rm -rf medigeek-kmp* wget https://github.com/medigeek/kmp-downloader/tarball/master -O kmpd.tar.gz tar xzf kmpd.tar.gz cd medigeek-* python kmpd.py -d
该脚本在Github上托管。 如果您遇到Python脚本中的某个问题,只需按Enter键而不是数字。
如果您不想经历手动升级内核的麻烦,可以尝试使用UUKU。 甚至在元素,薄荷等Ubuntu衍生品上也能正常工作。
我用它来修复我的WiFi问题,因为旧内核有时不会检测到一些新硬件。 除了硬件驱动程序更新,我发现不需要升级内核。 新内核确实具有安全性和轻微的性能升级,但也有破坏VM等问题的倾向。
sudo apt-add-repository -y ppa:teejee2008/ppa sudo apt-get update sudo apt-get install ukuu ukuu-gtk
资源:
另一种选择是尝试定制和优化的构建,例如用于Ubuntu的i3 / i5 / i7优化3.2.1内核:
DuoPetalFlower,我的Linux实验 – 3.2.1内核
他还拥有英特尔primefaces优化版本,如果您试图从上网本中挤出最后一盎司的性能,它可以很好地工作。
还有像Liquorix这样的其他内核声称可以更好地优化桌面性能。
虽然不是某些人推荐的,但您经常可以在更高版本的Ubuntu中运行官方内核而不会出现问题。 我目前在oneiric上运行3.3.3精确内核,我的机器比以前运行得更好。 性能和电池寿命增加,而温度下降了几度。 从待机状态恢复时我的黑屏问题也消失了。 虽然我个人没有使用新内核的问题,但你会发现一些人强烈反对这样做。
正如您所见,Ubuntu确实提供了Linux内核的版本,但并不总是像上游发布的那样快,您可以自己编译3.3.1内核,但这可能比您想要的更多。 如果没有,搜索一下,我相信你会找到一个你可以遵循的教程,比如这个 。 (请注意,我没有彻底检查过那个,所以要小心,因为内核是危险的野兽)
上述答案都没有满足我手动将内核更新到最新稳定版本的问题。 (我目前的笔记本电脑对RCs非常敏感,戴尔XPS 9365)。
我创建了一个shell脚本,用于搜索更新的内核版本并将其显示为要安装的选项。 你可以尝试一下,它是在github上 ,请务必阅读README。
我创建了这个脚本kernel-upgrade.sh
,它从http://kernel.ubuntu.com/~kernel-ppa/mainline下载并安装一个选定的内核:
TMP=/var/tmp/kernel mkdir -p "$TMP" && cd "$TMP" rm -f "$TMP"/* F=v4.16-rc6 V=4.16.0-041600rc6 R=$(wget -qO - "http://kernel.ubuntu.com/~kernel-ppa/mainline/$F/0005-debian-changelog.patch" | sed -ne '/^+linux/{s/.*\.\([0-9]\+\)).*/\1/p;q}') B="$V.$R" URL=http://kernel.ubuntu.com/~kernel-ppa/mainline set -x wget "$URL/$F/linux-headers-$V-generic_${B}_amd64.deb" \ "$URL/$F/linux-headers-${V}_${B}_all.deb" \ "$URL/$F/linux-image-$V-generic_${B}_amd64.deb" sudo dpkg -i "linux-headers-$V-generic_${B}_amd64.deb" \ "linux-headers-${V}_${B}_all.deb linux-image-$V-generic_${B}_amd64.deb" # now enter: sudo reboot now
如果Ubuntu没有以新内核启动,您可以在grub菜单中选择“高级设置”,然后选择在那里启动最后运行的内核。
注意:自4.15-rc7以来,内核具有针对熔毁攻击的KPTI修复,以及自“4.14.1”针对“幽灵变种2,缓解2”(请查看http://github.com/speed47/spectre-meltdown-checker/ )