如何更新DigitalOcean服务器的内核

介绍

更新您DigitalOcean Droplet上的内核是一个直接的过程,略有不同的Droplet的操作系统。在本指南中,我们将向您介绍如何更新DigitalOcean Droplet的内核。

了解DigitalOcean内核管理

DigitalOcean使用两种不同的管理内核的方法,这取决于操作系统和Droplet的创建时间。 在过去,DigitalOcean Droplet内核Droplet本身之外被管理在DigitalOcean控制面板内。这个过程包括更新服务器上的Droplet内核,然后从DigitalOcean控制面板中选择匹配的内核。这是一个快速而简单的过程,但需要用户使用控制面板进行实际的内核更换。

现代DigitalOcean内核管理

在DigitalOcean的后端基础结构变化导致一个更现代化的过程,允许用户管理 Droplet中的内核。这为用户提供了更简化的内核升级过程,并与服务器的软件管理过程集成。用户可以使用服务器的常规包更新程序来管理他们的内核。 对于使用在控制面板遗留系统Droplet,一个名为 DigitalOcean GrubLoader特殊的内核现已上线,建议。这允许带有旧式管理系统的Droplet引导到内部安装的内核。

设置内部内核管理的Droplet

查找Droplet本机是否使用内部内核或是否必须利用GrubLoader内核的最简单方法是检入DigitalOcean控制面板。 在您 Droplet的页面,点击导航进行 Kernel选项: 数字海洋侧菜单内核选择 你将进入到内核管理页面。 如果你的页面有这样的关于内部内核管理的消息,你的Droplet被设置为本地使用内部内核: DigitalOcean本地内核 如果相反,你看到一个下拉菜单允许你更改你的内核,你的Droplet正在使用传统的外部内核管理: DigitalOcean传统内核管理 如果您的Droplet使用外部内核管理,通过在搜索框中搜索“grub”切换到GrubLoader。选择生成的内核之一,并单击 更改按钮: DigitalOcean换成GrubLoader 接下来,登录到您的Droplet以root或 sudo用户。您必须完全关闭Droplet电源以切换到GrubLoader内核:
注意
重新启动Droplet不会更改内核。必须完全关闭。
sudo poweroff
当Droplet关闭时,返回控制面板。点击 Droplet的页面上的 Power菜单项: DigitalOcean电源菜单项 在接下来的页面中,单击 Power On按钮: DigitalOcean开机按钮 您的Droplet现在应该使用新的GrubLoader内核启动。现在可以使用从操作系统本身安装的内核。

检查哪个内核当前正在使用中

在升级内核之前,您应该检查您当前使用的内核版本。 要显示内核版本和系统的体系结构(32位或64位),请键入:
uname -ir
这将显示类似以下内容:
Output3.13.0-43-generic x86_64
第一部分表示内核版本(在此情况下, 3.13.0-43-generic )和第二项告诉您的架构(在该例子中,该系统是64位)。显示的内核是当前用于操作Droplet的内核。

升级所有软件包和使用最新的内核

将内核更改为最新版本的一种方法是将所有可用的软件包升级应用到您的服务器。这将拉入最新的稳定内核(如果可用)。

Ubuntu和Debian

要更新Ubuntu或Debian Droplet上的所有软件包(包括内核),请键入:
sudo apt-get update
sudo apt-get dist-upgrade
重新启动以实现更改:
sudo reboot

CentOS和Fedora

要更新CentOS或Fedora Droplet上的所有软件包(包括内核),请键入:
注意
在Fedora,取代yumdnf ,以避免一些警告。
sudo yum update
重新启动以实现更改:
sudo reboot

只升级最新的内核

如果您不希望更新系统上的其他软件包,可以将内核定位为专门更新。

Ubuntu

如果你只想更新内核本身,在Ubuntu中,键入:
sudo apt-get update
sudo apt-get install linux-virtual
重新启动Droplet以实现更改:
sudo reboot

Debian

如果您使用的是64位分发的Debian,则可以通过键入以下内容仅更新内核相关包:
sudo apt-get update
sudo apt-get install linux-image-amd64 linux-headers-amd64
如果您使用的是32位分发的Debian,则可以通过键入以下内容仅更新内核相关包:
sudo apt-get update
sudo apt-get install linux-image-686-pae linux-headers-686-pae
重新启动Droplet以实现更改:
sudo reboot

CentOS和Fedora

要仅升级内核,请键入:
注意
在Fedora,取代yumdnf ,以避免一些警告。
sudo yum update kernel
重新启动以实现更改:
sudo reboot

在Droplet上安装任意内核

切换到最新的内核之外的过程有点复杂。的 第一步是找到您要使用的内核软件包并安装它。

Ubuntu和Debian

您可以搜索 apt通过键入可用内核库:
sudo apt-get update
apt-cache search --names-only linux-image
您应该会看到可用内核的列表,其可能如下所示:
Outputlinux-image-4.4.0-21-generic - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
linux-image-4.4.0-21-lowlatency - Linux kernel image for version 4.4.0 on 64 bit x86 SMP
linux-image-extra-4.4.0-21-generic - Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
linux-image-extra-virtual - Transitional package.
linux-image-extra-virtual-lts-utopic - Transitional package. (dummy transitional package)
linux-image-extra-virtual-lts-vivid - Transitional package. (dummy transitional package)
linux-image-extra-virtual-lts-wily - Transitional package. (dummy transitional package)
. . .
找到要安装的内核的软件包名称。 安装您发现的确切包名称。安装相关的头文件通常也是个好主意。您可以通过使用相同的包名,替换只有做到这一点 image与封装名称组件 headers
sudo apt-get install linux-image-4.4.0-21-generic linux-headers-4.4.0-21-generic
现在,内核安装,请跳到第一节 哪一个启动程序被用来发现学会了如何引导内核。

CentOS和Fedora

要在基于RHEL的发行版中搜索可用的内核,请键入:
yum list --showduplicates kernel
您将看到已安装和可用的内核的列表:
Output. . .
Installed Packages
kernel.x86_64                                 3.10.0-327.22.2.el7                                 @updates
Available Packages
kernel.x86_64                                 3.10.0-327.el7                                      base    
kernel.x86_64                                 3.10.0-327.3.1.el7                                  updates 
kernel.x86_64                                 3.10.0-327.4.4.el7                                  updates 
kernel.x86_64                                 3.10.0-327.4.5.el7                                  updates 
kernel.x86_64                                 3.10.0-327.10.1.el7                                 updates 
kernel.x86_64                                 3.10.0-327.13.1.el7                                 updates 
kernel.x86_64                                 3.10.0-327.18.2.el7                                 updates 
kernel.x86_64                                 3.10.0-327.22.2.el7                                 updates 
包名称可以通过组合构成 kernel-与从第二列的版本。 键入以下内容安装内核:
sudo yum install kernel-3.10.0-327-18.3.el7
现在内核已经安装,我们需要进行一些修改以引导到它。找到下面使用的引导加载程序。

Droplet使用哪个Bootloader启动加载

默认情况下,您的Droplet将引导到最高版本的内核。要覆盖这个选择一个不同的内核,你必须修改引导加载程序默认加载的内核。需要具体的过程在很大程度上取决于安装在 Droplet 引导加载程序的类型。 下面是由引导加载程序分解的发行版:
  • Grub 2
    • Debian 8
    • Debian 7
    • Ubuntu 16.04
    • Ubuntu 14.04
    • Ubuntu 12.04
    • CentOS 7
    • Fedora 23
  • Grub 1
    • CentOS 6
    • CentOS 5
  • Syslinux :
    • Fedora 24
选择与Droplet上安装的引导加载程序匹配的过程。

在Grub 2版本上引导到非默认内核

再次,以下发行版使用Grub 2引导加载程序:
  • Debian 8
  • Debian 7
  • Ubuntu 16.04
  • Ubuntu 14.04
  • Ubuntu 12.04
  • CentOS 7
  • Fedora 23
适当的步骤将取决于你的映像是否使用 本机内部的内核 ,或者是否是从DigitalOcean控制面板中 GrubLoader内核。

对于具有本机内核管理的Droplet

如果你的Droplet本身使用内部内核,在选择新内核时有相当多的灵活性。

编辑Grub设置以允许动态管理

第一步是调整几个设置,决定Grub如何选择默认内核。 打开 /etc/default/grub有你的编辑器文件中:
sudo nano /etc/default/grub
查找并修改以下设置。如果您的文件版本中没有设置,请添加它们:
/ etc / default / grub
. . .
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true
GRUB_DISABLE_SUBMENU=y
. . .
GRUB_DEFAULT设置将允许Grub使用任何价值,我们保存为默认的内核,而不是硬编码默认值。 该 GRUB_SAVEDEFAULT告诉GRUB设置默认内核什么,我们在菜单中明确选择。 该 GRUB_DISABLE_SUBMENU选项平展的菜单结构,使我们可以更容易地解析它。 Grub 2不包括在命令行上显示其菜单的实用程序,因此您必须手动解析配置。 确保只有 一个出现在文件中每个设置的。保存并在完成后关闭文件。 接下来,如果你正在运行一个 DebianUbuntuDroplet,你需要做一个快速编辑到DigitalOcean特定Grub的文件:
sudo nano /etc/default/grub.d/50-cloudimg-settings.cfg
该文件是DigitalOcean正确引导映像所必需的。但是,它包含默认的选择,将在覆盖我们的设置 /etc/default/grub 。 注释掉 GRUB_DEFAULT线如果存在:
/etc/default/grub.d/50-cloudimg-settings.cfg
#GRUB_DEFAULT=0
保存并在完成后关闭文件。

重新生成grub.cfg文件

接下来,我们需要找出其中 grub.cfg文件位于Droplet。 这将取决于您使用的分布。 我们将设置一个叫做环境变量 GRUB_CONFIG ,我们可以在程序使用遵循:
export GRUB_CONFIG=`sudo find /boot -name "grub.cfg"`
其次,重建 grub.cfg与我们所做的更改文件。 在 UbuntuDebian,重建通过键入文件:
sudo update-grub
CentOSFedora,通过键入使用环境变量重建文件:
sudo grub2-mkconfig -o $GRUB_CONFIG

显示可用内核

现在配置已重建,菜单已展开,我们可以解析文件中可用的条目。以下命令将显示条目索引号和标题。其中任何一个都可以用于引用特定条目:
sudo grep 'menuentry ' $GRUB_CONFIG | cut -f 2 -d "'" | nl -v 0
您应该会看到所有可用的引导选项:
Output     0  CentOS Linux (3.10.0-327.22.2.el7.x86_64) 7 (Core)
     1  CentOS Linux (3.10.0-327.18.2.el7.x86_64) 7 (Core)
     2  CentOS Linux (0-rescue-d4c27651599f460481bc723aafe36177) 7 (Core)
     3  CentOS Linux (0-rescue-ce700ac27e6f4161b0730bad2182e0b1) 7 (Core)
记下您要引导的条目的索引号或标题。

设置新的默认内核

Grub包括从命令行设置新的默认内核的命令。您可以使用索引号或条目标题来指定引导选项。 对于 UbuntuDebian用户,一个新的内核可以通过索引这样的设置:
sudo grub-set-default 2
或者通过条目标题这样:
sudo grub-set-default 'Ubuntu, with Linux 4.4.0-24-generic'
CentOSFedora Droplets,下面就可以使用索引来设置新的默认:
sudo grub2-set-default 1
您可以通过键入以下内容通过标题设置条目:
sudo grub2-set-default 'CentOS Linux (3.10.0-327.18.2.el7.x86_64) 7 (Core)'

设置临时内核

您还可以选择临时引导选项。这将适用于下一次引导。您可以使用条目标题的索引编号来指定引导选项。 对于 UbuntuDebian用户,一个新的内核可以通过索引这样的设置:
sudo grub-reboot 2
或者通过条目标题这样:
sudo grub-reboot 'Ubuntu, with Linux 4.4.0-24-generic'
CentOSFedoraDroplet,临时内核可以通过索引选择通过键入:
sudo grub2-reboot 1
或者通过条目标题这样:
sudo grub2-reboot 'CentOS Linux (3.10.0-327.18.2.el7.x86_64) 7 (Core)'

重新启动Droplet

一旦选择了要使用的内核,重新启动Droplet:
sudo reboot
你的Droplet现在应该引导到你选择的内核。

使用GrubLoader内核的Droplets

如果你的Droplet在控制面板中使用GrubLoader内核来实现内核,你必须遵循不同的过程。

展开Grub菜单

打开 /etc/default/grub有你的编辑器文件中:
sudo nano /etc/default/grub
查找并修改以下设置。如果您的文件版本中没有此设置,请添加:
/ etc / default / grub
. . .
GRUB_DISABLE_SUBMENU=y
. . .
GRUB_DISABLE_SUBMENU选项平展的菜单结构,使我们可以更容易地解析它。 Grub 2不包括在命令行上显示其菜单的实用程序,因此您必须手动解析配置。 确保只有 一个出现此设置。保存并在完成后关闭文件。

重新生成grub.cfg文件

接下来,让我们看看其中 grub.cfg文件所在的形象。 这将取决于您使用的分布。 我们将设置一个叫做环境变量 GRUB_CONFIG ,我们可以在程序使用遵循:
export GRUB_CONFIG=`sudo find /boot -name "grub.cfg"`
其次,重建 grub.cfg与我们所做的更改文件。 在 UbuntuDebian,重建通过键入文件:
sudo update-grub
CentOSFedora,使用我们设置环境变量重建文件:
sudo grub2-mkconfig -o $GRUB_CONFIG
现在配置已重建,菜单已展开,我们可以解析文件中可用的条目。

显示可用内核

以下命令将显示条目索引号和标题。其中任何一个都可以用于引用特定条目:
sudo grep 'menuentry ' $GRUB_CONFIG | cut -f 2 -d "'" | nl -v 0
您应该会看到所有可用的引导选项:
Output     0  CentOS Linux (3.10.0-327.22.2.el7.x86_64) 7 (Core)
     1  CentOS Linux (3.10.0-327.18.2.el7.x86_64) 7 (Core)
     2  CentOS Linux (0-rescue-d4c27651599f460481bc723aafe36177) 7 (Core)
     3  CentOS Linux (0-rescue-ce700ac27e6f4161b0730bad2182e0b1) 7 (Core)
注意索引号或要选择的条目的标题。

设置新的默认内核

现在,您可以选择一个条目进行引导。 开放 /etc/default/grub再次文件:
sudo nano /etc/default/grub
查找 GRUB_DEFAULT设置。将其设置为您发现的条目的数字索引,或条目的标题:
/ etc / default / grub
. . .
GRUB_DEFAULT=1
. . .
保存并在完成后关闭文件。 接下来,如果你正在运行一个 DebianUbuntuDroplet,你需要做一个快速编辑到DigitalOcean特定Grub的文件:
sudo nano /etc/default/grub.d/50-cloudimg-settings.cfg
该文件是DigitalOcean正确引导映像所必需的。但是,它包含默认的选择,将在覆盖我们的设置 /etc/default/grub 。 注释掉 GRUB_DEFAULT在这个文件中的行:
/etc/default/grub.d/50-cloudimg-settings.cfg
#GRUB_DEFAULT=0
保存并关闭文件。

再次重新生成grub.cfg文件

接着,重新生成 grub.cfg使用相同的程序之前,文件。这将应用我们的默认选择。 在 UbuntuDebian,重建通过键入文件:
sudo update-grub
CentOSFedora,使用我们设置环境变量重建文件:
sudo grub2-mkconfig -o $GRUB_CONFIG

重新启动Droplet

准备好后,重新启动Droplet:
sudo reboot
你的Droplet现在应该引导到你选择的内核。

在Grub 1版本上引导到非默认内核

以下发行版使用Grub 1引导加载程序:
  • CentOS 6
  • CentOS 5
这些分发仅具有内部内核管理,可与DigitalOcean控制面板的GrubLoader内核一起使用。 GrubLoader内核只能在处理Grub 1引导加载程序时引导到最高可用内核。 要引导到其他内核,必须删除其他条目。虽然这通常不是问题,我们建议您在继续之前拍摄您的Droplet的快照。

显示已安装的内核

yum工具其实并不让你卸载当前运行的内核。 正因为如此,我们必须使用到 rpm软件包管理器解决此问题。 要显示当前安装的内核列表,请键入:
rpm -q kernel
您应该看到当前安装的内核包列表:
Outputkernel-2.6.18-410.el5
kernel-2.6.18-409.el5

删除其他内核

接下来,删除所有内核,但要启动进入:
sudo rpm -e kernel-2.6.18-410.el5
重复此过程,直到您只安装了一个内核。

重新启动Droplet

要引导到内核,重新启动Droplet:
sudo reboot
您的Droplet现在应该引导到剩余的内核。

在Syslinux版本上引导到非默认内核

以下发行版使用Syslinux引导加载程序:
  • Fedora 24
Syslinux引导加载程序使得很容易更改将在引导期间使用的默认内核。

编辑extlinux.conf配置文件

要更改用于启动默认的内核,打开 /boot/extlinux/extlinux.conf文件:
sudo nano /boot/extlinux/extlinux.conf
在其他项目里面你应该看到一个 default指令,随后是安装在系统上的每个内核项:
/boot/extlinux/extlinux.conf
. . .
default Fedora (4.6.4-301.fc24.x86_64) 24 (Cloud Edition)

label Fedora (4.6.4-301.fc24.x86_64) 24 (Cloud Edition)
        . . .

label Fedora(4.5.5-300.fc24.x86_64)
        . . .
要引导到不同的选择,只需修改 default指令,使用不同的条目标题:
/boot/extlinux/extlinux.conf
. . .
#default Fedora (4.6.4-301.fc24.x86_64) 24 (Cloud Edition)
default Fedora(4.5.5-300.fc24.x86_64)

label Fedora (4.6.4-301.fc24.x86_64) 24 (Cloud Edition)
        . . .

label Fedora(4.5.5-300.fc24.x86_64)
        . . .
保存并在完成后关闭文件。

重新启动Droplet

要引导到内核,重新启动Droplet:
sudo reboot
您的Droplet现在应该引导到新的默认内核。

结论

通过遵循本指南,您应该能够轻松地管理您的内核。如果您需要其他帮助,请在下面留言。
赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏