在Debian 9上手动安装新内核的正确方法是什么?


9

我没有足够的信心单独执行此操作,并冒着服务器无法启动等风险。

我想从以下版本升级内核:

$ uname -r
4.9.0-6-amd64

$ uname -v
#1 SMP Debian 4.9.88-1+deb9u1 (2018-05-07)

到内核​​版本4.15或4.16。无论您推荐哪个。


我只是想知道如何列出可用的版本:

$ apt-cache search linux-image | grep amd64

linux-headers-4.9.0-6-amd64 - Header files for Linux 4.9.0-6-amd64
linux-headers-4.9.0-6-rt-amd64 - Header files for Linux 4.9.0-6-rt-amd64
linux-image-4.9.0-6-amd64 - Linux 4.9 for 64-bit PCs
linux-image-4.9.0-6-amd64-dbg - Debug symbols for linux-image-4.9.0-6-amd64
linux-image-4.9.0-6-rt-amd64 - Linux 4.9 for 64-bit PCs, PREEMPT_RT
linux-image-4.9.0-6-rt-amd64-dbg - Debug symbols for linux-image-4.9.0-6-rt-amd64
linux-image-amd64 - Linux for 64-bit PCs (meta-package)
linux-image-amd64-dbg - Debugging symbols for Linux amd64 configuration (meta-package)
linux-image-rt-amd64 - Linux for 64-bit PCs (meta-package), PREEMPT_RT
linux-image-rt-amd64-dbg - Debugging symbols for Linux rt-amd64 configuration (meta-package)
linux-headers-4.9.0-3-amd64 - Header files for Linux 4.9.0-3-amd64
linux-headers-4.9.0-3-rt-amd64 - Header files for Linux 4.9.0-3-rt-amd64
linux-headers-4.9.0-4-amd64 - Header files for Linux 4.9.0-4-amd64
linux-headers-4.9.0-4-rt-amd64 - Header files for Linux 4.9.0-4-rt-amd64
linux-headers-4.9.0-5-amd64 - Header files for Linux 4.9.0-5-amd64
linux-headers-4.9.0-5-rt-amd64 - Header files for Linux 4.9.0-5-rt-amd64
linux-image-4.9.0-3-amd64 - Linux 4.9 for 64-bit PCs
linux-image-4.9.0-3-amd64-dbg - Debug symbols for linux-image-4.9.0-3-amd64
linux-image-4.9.0-3-rt-amd64 - Linux 4.9 for 64-bit PCs, PREEMPT_RT
linux-image-4.9.0-3-rt-amd64-dbg - Debug symbols for linux-image-4.9.0-3-rt-amd64
linux-image-4.9.0-4-amd64 - Linux 4.9 for 64-bit PCs
linux-image-4.9.0-4-amd64-dbg - Debug symbols for linux-image-4.9.0-4-amd64
linux-image-4.9.0-4-rt-amd64 - Linux 4.9 for 64-bit PCs, PREEMPT_RT
linux-image-4.9.0-4-rt-amd64-dbg - Debug symbols for linux-image-4.9.0-4-rt-amd64
linux-image-4.9.0-5-amd64 - Linux 4.9 for 64-bit PCs
linux-image-4.9.0-5-amd64-dbg - Debug symbols for linux-image-4.9.0-5-amd64
linux-image-4.9.0-5-rt-amd64 - Linux 4.9 for 64-bit PCs, PREEMPT_RT
linux-image-4.9.0-5-rt-amd64-dbg - Debug symbols for linux-image-4.9.0-5-rt-amd64
linux-headers-4.15.0-0.bpo.2-amd64 - Header files for Linux 4.15.0-0.bpo.2-amd64
linux-headers-4.15.0-0.bpo.2-cloud-amd64 - Header files for Linux 4.15.0-0.bpo.2-cloud-amd64
linux-headers-4.16.0-0.bpo.1-amd64 - Header files for Linux 4.16.0-0.bpo.1-amd64
linux-headers-4.16.0-0.bpo.1-cloud-amd64 - Header files for Linux 4.16.0-0.bpo.1-cloud-amd64
linux-image-4.15.0-0.bpo.2-amd64 - Linux 4.15 for 64-bit PCs
linux-image-4.15.0-0.bpo.2-amd64-dbg - Debug symbols for linux-image-4.15.0-0.bpo.2-amd64
linux-image-4.15.0-0.bpo.2-cloud-amd64 - Linux 4.15 for x86-64 cloud
linux-image-4.15.0-0.bpo.2-cloud-amd64-dbg - Debug symbols for linux-image-4.15.0-0.bpo.2-cloud-amd64
linux-image-4.16.0-0.bpo.1-amd64 - Linux 4.16 for 64-bit PCs
linux-image-4.16.0-0.bpo.1-amd64-dbg - Debug symbols for linux-image-4.16.0-0.bpo.1-amd64
linux-image-4.16.0-0.bpo.1-cloud-amd64 - Linux 4.16 for x86-64 cloud
linux-image-4.16.0-0.bpo.1-cloud-amd64-dbg - Debug symbols for linux-image-4.16.0-0.bpo.1-cloud-amd64
linux-headers-4.9.0-4-grsec-amd64 - Header files for Linux 4.9.0-4-grsec-amd64
linux-image-4.9.0-4-grsec-amd64 - Linux 4.9 for 64-bit PCs, Grsecurity protection (unofficial patch)
linux-image-grsec-amd64 - Linux image meta-package, grsec featureset
linux-image-cloud-amd64 - Linux for x86-64 cloud (meta-package)
linux-image-cloud-amd64-dbg - Debugging symbols for Linux cloud-amd64 configuration (meta-package)

我也需要标题。在Ubuntu上,还有一个名为extra或类似名称的软件包,所以我很困惑,在这里看不到它。


在Debian 9上手动安装新内核的正确方法是什么?


您是否有任何特定原因需要更新的内核?
marcelm

Answers:


10

如果要安装更新的Debian软件包内核,则应使用backports存储库中的一个。您似乎已经将该存储库添加到您的apt配置中,因此一切就绪。

由于您当前的内核是基本的amd64版本,因此我假设您不需要实时调度程序版本,也不需要云版本。

赶紧跑

apt-get install linux-image-4.16.0-0.bpo.1-amd64 linux-headers-4.16.0-0.bpo.1-amd64

即“安装为Debian 9反向移植的4.16内核的基本-amd64版本和相应的头文件包”。

与常规软件包不同,新版本的linux-image软件包不会完全取代现有的4.9.0内核,而是会与之一起安装。(这是因为版本号包含在软件包名称中。)引导加载程序将在linux-image安装后自动配置为以基于版本号的顺序显示可用内核,或者对于某些引导加载程序而言则是不可能的。 ,只需将最近安装的一项自动设置为首选项。

如果事实证明您的新内核无法启动,则可以从引导加载程序中选择先前的内核,然后删除被证明无法运行的内核程序包。如果您不小心告诉程序包管理器删除当前正在运行的内核,那么就很聪明地知道这不是一件好事,并且会中止该操作。


[...] it is smart enough to know that isn't a good thing to do, and will abort the operation.< -如果您不能确定其中的内核,你正在运行(在这种情况下),你可以运行uname -r(摘自askubuntu.com/questions/359574/...
伊斯梅尔·米格尔·

12

手头的问题

您需要比Debian实例上安装的Linux内核更新的Linux内核。这有一些风险。建议您避免偏离Debian提供的默认稳定LTS内核。但是,由于您的需求,您需要更新的内核。

您可以添加backports存储库,使用apt-pinning控制此处安装的内容,并安装必要的组件以升级内核。

我强烈建议使用apt-pinning,因为您可以添加备用存储库,甚至可以添加第三方存储库并控制从中安装的内容。这又使您自己承担风险,安装和更新替代程序包和库,并与操作系统的主要组件一起更新它们。Apt钉扎允许对备用来源(即不稳定)的包装进行细粒度控制,从而降低破损风险。如果您了解风险,可以继续前进。

添加Backports存储库并设置apt-preferences

第一步是将适当的存储库添加到您的sources.list。我建议您使用,/sources.list.d/但是您可以仅在一个文件中执行此操作。

#Main Stable Repo
deb http://deb.debian.org stable main contrib non-free 
deb-src http://deb.debian.org stable main contrib non-free
#Stable-updates
deb http://deb.debian.org stable-updates main contrib non-free 
deb-src http://deb.debian.org stable-updates main contrib non-free 
#Security Updates 
deb http://deb.debian.org/debian-secruity stable/updates main contrib non-free
deb-src http://deb.debian.org/debian-secruity stable/updates main contrib non-free 
#Stretch Backports    
deb http://ftp.debian.org/debian stretch-backports main contrib non-free
deb-src http://ftp.debian.org/debian stretch-backports main contrib non-free

sources.list应该看起来像这样。如果不需要非自由软件,则不需要非自由部件。接下来,您需要使用来给程序包pin优先级/etc/apt/preferences。该文件应如下所示:

Package: *
Pin: release a=debian-security
Pin-Priority: 1000

Package: *
Pin: release a=stable
Pin-Priority: 900

Package: *
Pin: release a=stable-updates
Pin-Priority: 800

Package: *
Pin: release a=stretch-backports
Pin-Priority: 700

您可以更详细地指定各个封装,并为引脚优先级分配较高或较低的值。

之后,您运行apt-get update

安装所需的内核

使用apt-cache search linux-image您将列出所有可用的内核。确定要使用的内核后,可以使用进行安装apt-get install linux-image-flavour。建议您也安装匹配的Linux标头包。如果您的环境中需要grsec映像,请安装该映像。再次使用适当的头文件包。

重新启动后,您将能够在GRUB菜单中选择要启动的内核。如果遇到问题,您始终可以选择已知的良好内核,然后使用该内核进行引导。

结论

我已经使用apt-pinning来成功管理个人计算机的Debian安装。我使用上述方法安装了当时最新的内核(4.15),并且系统运行正常。但是,要花一点钱,因为它是个人计算机,而不是我认为是要安装此服务器的生产服务器。我还包括指向所有我引用的资源的链接。我使用这个Debian Wiki页面来告知必要的步骤以及apt-pinning页面。该文章还引用了。

如果您对此帖子有任何疑问或疑虑,请随时问我。如果此答案有任何更正或误解,请通知我。我可以根据需要更新帖子。

祝你好运!


由于某种原因,优先级为700的反向移植导致我的系统尝试将所有软件包升级到反向版本。如果将其设置为499或更低,一切似乎都正常。root @ pc:/ etc / apt#grep -r iority * preferences.d / sparky:Pin-Priority:1001首选项.d / main:Pin-Priority:1000首选项.d / main:Pin-Priority:900首选项.d / main:Pin-Priority:800首选项
。d

2

要安装linux-image及其标头包,请使用以下命令:

apt install linux-{image,headers}-4.16.0-0.bpo.1-amd64

运行上述命令后,需要从backport安装一些依赖项,可以通过以下方式安装:

apt install -t stretch-backports pckg_name

1
或者-t stretch-backports可以添加到第一行,因此它会自动获取所有正确的依赖项:apt install -t stretch-backports linux-{image,headers}-4.18.0-0.bpo.3-amd64
mivk '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.