内核模块的管理和升级
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 基础设施。 此命令将从已安装的系统复制文件并将其与初始化光盘合并。