内核(kernel)是任何操作系统的核心。在开始将Linux称为操作系统之前。简单来说,Linux不是操作系统;它只是一个内核。现在,让我们一起来了解什么是内核!
内核是在服务器硬件和软件之间进行交互的程序,当将任何闪存驱动器插入系统时,内核会检测到已插入的闪存驱动器。由于Linux是开放源代码内核,因此,如果您知道自己正在做什么,那么则可以更新,升级和替换Linux内核。
什么是Linux内核?
众所周知,CPU,内存和设备通过内核与操作系统进行通信。当谈论Linux内核时,必须提到在每个Linux发行版中都有两种用户模式。在Linux发行版中,将会获得一个用户模式和一个内核模式。通常情况下,无法从标准用户模式界面访问内核模式。
如果具有访问内核模式的root特权,这将会比较有用。启动服务器时,线程中没有任何软件运行。内核决定做什么和不做什么。内核决定哪个应用程序将获得多少RAM和CPU。
在Linux发行版上升级内核
升级Linux内核并不容易,仅当发现安全错误或硬件交互问题时,才必须这样做。如果系统崩溃,则可能必须恢复整个系统。通常,Linux发行版附带升级最多的内核。升级Linux内核不会删除或删除以前的内核;它保存在系统内部。
有时可以从Linux系统的恢复菜单中回滚到较早的内核。但是,可能需要针对硬件问题或安全问题升级内核。在本文中,小编将简单介绍如何在各种Linux发行版上升级内核。
如何知道当前的内核版本?
如果系统中未安装Neofetch,安装以下步骤在Linux发行版上安装Neofetch。根据发行版,在Linux终端上使用下面给出的以下命令行。
- 在Debian / Ubuntu上安装Neofetch
sudo apt-get update sudo apt-get install neofetch
- 在Fedora上安装Neofetch
sudo dnf install neofetch
- 在Red Hat / CentOS上安装Neofetch
sudo yum install neofetch
- 在Arch和基于Arch的Linux上安装Neofetch
pacman -S neofetch
安装完成后,可以通过运行Neofetch工具来检查内核版本。
$ neofetch
1、在Ubuntu和Debian系统上升级内核
各种Linux发行版都有不同的方法来升级Linux内核。基于Debian和Ubuntu发行版提供了几种更新和升级内核的方法。在这里,简单介绍可以遵循的五种方法来升级Debian Linux上的内核。
方法1:dist upgrade
用于升级内核
你可能已经熟悉Linux的更新和升级命令,可以通过系统更新程序更新系统系统信息库,并apt-update
从终端命令执行更新。但是dist升级不仅仅是升级系统和软件包,它升级了内核,软件和其他软件包的依赖关系。可以运行以下dist-upgrade
命令来升级Linux内核。
sudo apt-get dist-upgrade
运行full升级命令始终是比较有用,从而完成升级过程。
sudo apt full-upgrade
方法2:强制系统更新管理器
每个Linux系统在操作系统内部都有一个内置的Update Manager。你可能已使用更新程序很多次更新系统。但是,你知道可以强制Update Manager升级Linux内核吗?其实可以在终端外壳上运行以下命令行,以强制更新程序下载并安装升级的Linux内核。它可能会下载一些其他软件包。
update-manager –d
方法3:使用Ukuu工具
Ukuu是用于Linux发行版的工具,可以从Linux发行版的官方存储库下载并安装最新的Linux内核。对于Ubuntu,它将从https://kernel.ubuntu.com/下载内核。
要通过Ukuu工具升级Linux内核,首先需要在Linux系统上安装Ukuu工具。使用PPA命令将Ukuu软件包添加到系统存储库中。
sudo apt-add-repository ppa:teejee2008 / ppa
现在更新系统并安装Ukuu工具。
sudo apt-get update sudo apt-get install ukuu
一旦将Ukuu安装在服务器中,就可以从具有root访问权限的终端运行Ukuu工具。启动Ukuu工具后,将找到操作系统可用的Linux内核的列表,这时必须选择内核才能将其安装在系统中。
sudo ukuu-gtk
内核升级后,可以从系统中删除Ukuu工具。需要注意的是,如果在安装Ukuu工具时发现任何问题,那么可能是你的系统不再支持Ukuu版本安装。但是,Linux可以使用付费版本的Ukuu,这样可以使用付费版本在Ubuntu Linux上升级内核。
方法4:手动下载并安装内核
通过这种方法,将从Ubuntu内核的官方商店中手动下载Linux内核。稍后将在系统上安装内核软件包。在之前的所有方法中,此方法是最危险的方法。在初始化此方法之前,请备份所有系统和数据。
要下载所需的Linux内核,必须转到Ubuntu Kernel存档。从内核主线下载以下内核软件包,需要下载内核标头和内核版本以制作完整的软件包。为了更好地理解,可以看到以下需要下载的虚拟软件包列表。
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
下载完成后,现在可以打开目录来安装软件包。由于所有软件包均为.deb
格式,因此可以使用该dpkg
工具安装软件包。要安装软件包,请使用以下命令行。
cd /path/to/directory/destination_path
现在,.deb
在Debian系统上安装内核软件包。
sudo dpkg -i *.deb
2、在Red Hat和Fedora系统上升级内核
Fedora、Red Hat和基于Red Hat的Linux发行用户可以通过从资源库下载内核来手动升级Linux内核。在这里,将展示升级内核的一般方法。Red Hat Linux和CentOS用户可以使用yum命令。此外,Fedora用户必须yum
用DNF
命令替换。其余的命令行对于这两个发行版都是相同的。
方法1.安装特定版本的内核
Fedora和Red Hat Linux用户可以在其系统上安装特定版本的Kernel。可以在Linux终端上运行以下命令行,以在Linux系统上安装任何特定版本的内核。安装完成后,重新引导系统以在Linux系统上获取所需的内核。
yum update kernel yum install kernel-{version}
方法2.在RHEL和Fedora系统上升级内核
首先,必须在系统上安装SysLinux工具。通常,SysLinux预先安装在Fedora和Red Hat Linux发行版中。如果无法在服务器上找到该工具,则可以使用以下命令进行安装。
yum install syslinux
当向系统中添加内核时,它会将内核名称和版本注册到引导菜单中。现在,为引导加载程序目录配置SysLinux。使用以下syslinux
命令来配置引导加载程序目录。在本文中,引导目录为sdb2
;。所要必须将目录替换为你的目录。
syslinux /dev/sdb2
现在,创建一个目录和一个安装点来存储内核。不要忘记将boot.iso
文件挂载到USB磁盘上。
mkdir /mnt/isoboot /mnt/diskboot mount -o loop boot.iso /mnt/isoboot mount /dev/sdb2 /mnt/diskboot
然后使用以下cp
命令复制USB磁盘上的文件并安装分区。
cp /mnt/isoboot/isolinux/* /mnt/diskboot
在此阶段中,这里将运行以下grep
命令以从isolinux
配置脚本运行引导加载程序文件。然后将isoboot
文件安装在diskboot
目录中。在这里使用SysLinux工具来加载内核以及引导加载程序菜单。
grep -v local /mnt/isoboot/isolinux/isolinux.cfg > /mnt/diskboot/syslinux.cfg umount /mnt/isoboot /mnt/diskboot
重新引导系统之前,可以检查Red Hat Linux系统上所有已安装的内核列表。
yum list installed "kernel-*"
现在,使用以下rpm
命令下载所需版本的Linux内核。由于这里不会删除旧内核,因此将-i
在命令行中使用语法。如果要删除并安装新内核,可以使用-u
代替-i
参数。
rpm -ivh kernel-kernel_version.arch.rpm
现在,检查是否在引导菜单上登记了新内核。
ls /boot
在这里将使用最流行的用于Red Hat和Fedora Linux的Dracut引导软件包安装程序。Dracut将创建内核映像。
dracut "initramfs-$(uname -r).img" $(uname -r)
现在,将先前下载的内核文件加载到系统内存中。使用以下lsinitrd
命令调用initramfs映像。
lsinitrd /boot/initramfs-3.10.0-78.el7.x86_64.img
现在,运行以下grep
命令来初始化GRUB加载过程。请小心处理此步骤,以避免grub加载错误。
grep initramfs /boot/grub2/grub.cfg
现在,检查引导加载程序列表。
ls -l /boot/
然后,在重新引导系统后,使用Dracut工具选择内核版本,这里可以强制系统调用新的更新内核。以下命令可以帮助重新配置内核和引导设置。
dracut --kver kernel_version --force
现在使用下面给出的以下命令行创建内核软件包和内核版本的简短列表。
lsinitrd lsinitrd | grep etc/ lsinitrd -f /etc/sysctl.conf
然后在终端上运行以下命令行以定义内核版本。
lsinitrd --kver 3.10.0-327.10.1.el7.x86_64 -f /etc/sysctl.conf
最后配置一些脚本以完成内核升级过程,必须在目录中将default_kernel
值设置为kernel,将值设置update_default
为true sysconfig
。使用/etc/sysconfig/kernel
文件系统上的路径查找配置文件。现在,如下所示更改值。
DEFAULTKERNEL=kernel UPDATEDEFAULT=yes
一切正确完成后,现在可以重新引导Linux系统以开始使用升级的内核。
3、在Arch和基于Arch的Linux上升级内核
Arch和基于Arch的Linux发行版具有动态变化的Linux内核。Arch Linux会定期更新其安全补丁。这就是为什么会在Arch Linux上看到显着的内核和补丁更新的原因。在这里,小编将介绍两种在Arch Linux上升级内核的方法。首先将介绍更新和升级方法;稍后将介绍在Arch Linux上升级内核的手动方法。
方法1:更新和升级内核
Manjaro和其他Arch Linux发行版通常通过常规更新管理器提供内核更新和升级。在Linux系统上运行系统更新程序时,它将检查最新的内核。你可以使用以下pacman
命令来检查Arch Linux发行版上的最新内核。
sudo pacman -Syu
如果找到新内核,它将通知下载并安装它。可以选择是否要获取最新的内核。一旦同意安装,请在安装完成后重新引导系统,然后检查内核版本以确保内核是否已升级。
sudo reboot
方法2:在Arch Linux上手动升级内核
通过这种方法将会看到如何从Linux内核的官方网站手动下载和安装最新的内核。通过这种方法可以在Arch Linux上安装任何可用的和受支持的内核。
首先,必须从Kernel.org 网站下载所需的内核版本 。该文件将作为压缩文件下载,默认情况下,该文件将存储在文件系统上的Downloads目录中。
现在,使用以下命令行打开“下载”目录并获取下载文件的列表。然后使用tar命令提取压缩文件。提取文件后,将自动创建一个文件夹;可以在该文件夹中找到内核文件。
cd Downloads/ ls tar xvf linux-4.15.2.tar.xz
现在,使用以下命令行进入内核目录。在本文中,内核目录名为linux-4.15.2
,根据下载的版本,可能会有不同的名称。
cd linux-4.15.2
运行以下命令行以ncurses
在GNU编译器集合中获取库工具。它将在以后编辑Linux内核的配置脚本。
sudo pacman -S ncurses make gcc bc openssl
现在,使用以下zcat
命令将配置脚本从正在运行的Linux内核复制到新创建的内核。
zcat /proc/config.gz > .config
现在,可以在Linux系统中初始化新内核的安装过程。
make menuconfig
运行下面给出的以下命令行,以在Arch Linux上安装可加载的内核模块。
make sudo make modules_install
现在,使用cp
命令将vmlinuz
文件从当前内核复制到新内核。这里将需要该vmlinuz
文件以在系统启动时加载内核。下面提供了两个命令,第一个命令用于32位或86位系统用户,最后一个命令用于64位Linux用户。
sudo cp -v arch/x86/boot/bzImage /boot/vmlinuz-4.15.2 sudo cp -v arch/x86_64/boot/bzImage /boot/vmlinuz-4.15.2
mkinitcpio
在Arch Linux上运行以下bash命令,在RAM上创建一个临时目录来存储initramfs
映像文件。
sudo mkinitcpio -k 4.15.2-ARCH -g /boot/initramfs-4.15.2.img
现在,使用以下cp
命令将内核表复制到新内核的目录。
sudo cp -v System.map /boot/System.map-4.15.2
接下来需要在引导目录中创建一个内核映射。
sudo ln -sf /boot/System.map-4.15.2 /boot/System.map
现在,使用下面给出的以下命令行在启动目录上安装GRUB并完成内核升级过程。
sudo grub-mkconfig -o /boot/grub/grub.cfg
正确完成所有操作后,重新启动Arch Linux。从引导加载程序菜单中,打开“ Arch Linux的高级选项”。会发现为新内核创建了新的引导程序。也可以检查内核版本,以确保在Arch Linux上升级了内核。
sudo reboot uname -r
提示:更新默认内核
有时更新默认内核可以解决Linux上的一些小问题。但是,也可以从启动菜单中检查通用内核版本。如果只需要在系统上升级Linux内核,则可以在Linux终端外壳上运行以下命令。
sudo apt-get update $ sudo apt-get upgrade $ sudo apt-get upgrade linux-image-generic
总结
如果某种错误操作损坏了Linux内核,不用担心,可以删除当前内核,然后通过“引导修复”工具重新安装内核和GRUB。
在上述文章中,小编描述了Linux内核的基础知识,同时还说明了如何在Debian、Fedora、Arch和Red Hat Linux系统上升级内核的方法,仅供参考。
最后要说的是,如果你对引导,grub和其他根分区文件系统没有足够的了解,则不建议在Linux上升级内核。本文使用了一些工具和命令行来完成Linux内核的升级过程,所以最好具有这些命令行的基本思路来构建定制的内核。某些Linux的实验版和Beta版也可用于各种Linux发行版,安装这些第三方内核需要自行承担风险。