内核模块的管理和升级

1 解释一下什么是内核以及它起到什么作用

内核是指模块化操作系统。内核具有可以在系统运行时动态加载模块的能力,并且可以扩展其功能。内核模块可以提供以下功能:

a) 设备驱动程序:这增加了对新硬件的支持

b) 文件系统支持:NFS(网络文件系统)或BTRFS(一个融合了文件系统和卷管理器的高级文件系统)

内核模块有一些参数,我们可以通过这些参数自定义系统的行为。内核模块可以根据需要加载或卸载。

2 为什么系统需要kmod包

kmod 包是一个工具。 为了有效管理和使用内核模块,我们需要在系统中安装kmod包。

我们必须以 root 用户身份登录并执行以下命令来安装 kmod 软件包:

yum install kmod

Yum 指的是 Yellowdog Updater Modified。 它是一个开源的图形化包管理工具,用于 安装/更新/删除/管理 软件包。

3 如何显示内核模块的信息

以 root 用户登录并执行以下命令可以显示有关内核模块的详细信息:

modinfi MyModule

这里,“MyModule”指的是模块名称

我们还可以使用下面的命令列出模块支持的所有参数:

modinfi MyModule

执行上述命令时,它将输出列出为:

parm:InterruptRate:中断率(整数数组)

parm:InterruptMode:中断模式(整数数组)

这里,“parm”指的是参数名称。

4 如何在内核中加载一个模块

当您以root用户登录并执行以下命令时,可以将模块加载到内核中:

modprobe MyModuleName

默认情况下,modprobe 从以下目录加载模块

/lib/modules/kernel_version/kernel/drivers/

在该目录中,模块有自己的子目录 net/(用于网络)和 scsi/(用于小型计算机系统接口驱动程序)。 加载模块时,modprobe 会加载模块的依赖项(如果内核中尚未加载这些依赖项)。

5 如何在内核中卸载一个模块

当您以 root 用户身份登录并执行以下命令时,可以在内核中卸载模块:

modprobe –r MyModuleName

-r 指的是删除模块‘MyModuleName’。上面的命令有两种情况会失败:

a) 如果进程使用“MyModuleName”。

b) 如果任何依赖于“MyModuleName”的模块正在处理中,则上述命令将阻止卸载该模块。

6 如何设置一个模块的参数

模块在模块参数的帮助下加载到内核中。 每个参数都有一个默认值,但可以修改这些值以改变系统的行为。 设置参数的方法有以下三种:

a) 当模块没有依赖关系时,我们只需使用 modprobe –r 命令卸载模块,然后使用参数列表加载模块即可。

b) 在文件中列出新参数并将其放置在 /etc/modprobe.d/目录中。 这将使参数持久化并确保每次加载时都设置这些值。

c) 使用参数加载模块并执行以下命令

modprobeMyModuleName [paramName=value]

注意:我们可以输入多个带有空格的参数和值。

7 如何加载具有自定义参数的模块

为了加载具有自定义参数的模块,您必须形成以下命令:

modprobe mod100e throttlerate=1000,900,800 debug=1

在上面的命令中,“mod100e”指的是网络驱动程序模块,该模块在驱动程序的第一个、第二个和第三个实例中将每秒的节流率中断设置为 1000,900,800,并将在调试模式下加载该模块。

在上面的命令中,我们将多个值作为单个参数传递(以逗号分隔),并忽略它们之间的空格。

8 模块如何持久加载

大多数内核模块都会在系统引导期间自动加载。 这些模块是通过创建服务来持久加载的,并在启动文件中提到,该文件会在每天的特定时间自动触发。因此,可以使用以下命令创建服务

systemd –module –load.service

然后,该服务将在文件mystartupfile.conf中提及,并且该文件将被放置在 /etc/modules-load.d 目录中。 因此,我们最终创建的服务将持久地加载模块。

9 如何从驱动程序更新光盘上安装模块

驱动程序模块借助 DUD(驱动程序更新光盘)安装到其他硬件中。 DUD 是一个 ISO 映像,由压缩格式的数据组成,在安装过程中使用该镜像来安装和加载所需的模块。 另一种选择是创建 .rpm 文件(Red Hat 软件包管理器)并使用以下命令安装 rpm 文件:

yum install kmodMyRPMFile.rpm

执行命令时,输出会显示已解析并执行事务的所有模块依赖项。

10 解释如何对内核模块进行签名以实现安全系统启动

为了安全系统启动,内核模块将有一个私钥和公钥。 该模块使用私钥进行签名并使用公钥进行身份验证。 默认情况下,Linux 发行版包含签名内核、签名引导加载程序和签名内核模块。

此外,签名的嵌入式密钥允许 Linux 发行版通过安全系统引导来引导、安装和使用安全统一可扩展固件接口 (UEFI) 进行身份验证。

11 linux中的内核包有哪些

Linux 包含以下内核包:

a) Kernel-debug:包含内核调试选项,可用于诊断性能降低的情况

b) Kernel-debug-level:这是内核开发版本,默认启用调试选项,以便诊断性能下降的情况

c) Kernel-devel:它具有用于在包中构建模块的内核头文件

d) Kernel-docz:其中包含带有设备驱动程序详细信息的内核源文档。

默认情况下,所有这些包都可以在 /ust/share/doc/kernel-doc-kernel_version/ 目录中找到。

12 升级内核前有那些注意事项

以下是升级内核之前需要采取的预防措施:

a) 确保启动媒体(光盘、U盘)存在 - 如果启动加载程序未正确配置,我们可以使用该介质来启动系统

b) 创建可使用 VFAT(虚拟文件分配表)或 ext2(扩展文件系统)格式的启动引导文件

c) 确保设备上有足够的可用空间。 例如:DVD 镜像大约需要 4GB 空间,CD 镜像大约需要 700 MB 空间。

d) 您应该从Linux的 安装DVD中复制boot.iso文件。

13 创建一个启动媒体(光盘、U盘)需要那些步骤

为了创建启动媒体,我们必须以 root 用户身份登录并执行以下命令:

a) 安装 syslinux

yum install syslinux

b) 在 USB 设备的 syslinux 中安装引导加载程序

syslinux /dev/设备名

c) 创建 USB 设备和 boot.iso 的挂载点

mkdir /mnt/iso /mnt/disk

d) 从 boot.iso 复制 iso 并存储在 USB 中

cp /mnt/iso/* /mnt/磁盘

e) 卸载USB设备并boot.isoumount

/mnt/iso /mnt/磁盘

f) 然后使用启动介质重新启动系统并确保可以启动系统

14 你是怎样执行内核升级的?

获取到所有需要更新的内核包后就可以进行内核升级。 但建议保留旧的内核并做备份处理,以防升级的内核出现问题的时候可以进行回退操作。

确保您有 rpm 包。 打开 shell 命令行并切换到包含 rpm 包的目录。 以root用户登录并执行以下命令:

rpm –ivh kernel –mykernelversion.arch.rpm

确保在命令中使用 –i 以保留旧内核,而不是使用 –u,因为它会覆盖已安装的内核。

15 你可以如何撤销对初始化光盘镜像的修改操作?

必须执行以下步骤才能撤消在初始化光盘镜像中所做的更改:

a) 通过在 GRUB (GRand Unified Boot Loader) 菜单中选择救援模式内核来重新启动系统

b) 更改导致initramfs(文件系统上的目录列表)出现故障的错误设置

c) 通过执行以下命令使用正确的设置重新创建 initramfs

dracut –kvermykernalversion –force

dracut 是一个事件驱动的initramfs 基础设施。 此命令将从已安装的系统复制文件并将其与初始化光盘合并。