第 30 章 内核
对之前在 crashdump 过程中损坏的 PT_NOTE 条目修复
在一些 HP 服务器中,内核崩溃可能会导致因为内核代码缺陷导致 PT_NOTE 条目崩溃。因此,内核崩溃转储工具无法初始化。提供的补丁与 PT_NOTE 条目分配一致,以便它们在一个物理页面中相同,因此写入和读取数据是相同的。因此,在上述情况下,内核崩溃转储现在可以正常工作。(BZ#1073651)
删除 slub_debug
参数以保存内存
slub_debug
参数启用 SLUB 分配器的调试,这样可使每个对象消耗额外的内存。如果使用 slub_debug
内核参数,则在 128 GB 系统上自动设置 kdump
捕获内核没有足够的内存分配给 kdump 捕获内核。因此,kdump
init 脚本中的各种任务会终止,并显示 Out Of Memory (OOM)错误消息,且不会保存崩溃转储。提供的补丁会删除 slub_debug
参数,现在崩溃转储会在上述场景中按预期保存。(BZ#1180246)
删除竞争条件会导致在附加新 CPU 时死锁
在以前的版本中,当附加新 CPU 时,如果新 CPU 上的迁移线程已经标记为
活跃
但 未启用
,则可能会出现 CPU 热插拔和 stop_two_cpus ()函数之间的竞争条件。应用了一组补丁来消除此竞争条件。因此,附加新 CPU 的系统现在如预期运行。(BZ#1252281)
使用来自上游的巨页迁移补丁更新内核
在以前的版本中,巨页迁移可能会出现一些错误,包括内核 panic。上游的一组补丁已被向后移植来修复这些程序错误。现在,更新的内核更为稳定,在 AMD64 和 Intel 64 以外的构架中会自动禁用巨页迁移。(BZ#1287322)
使用 UEFI 引导内核并启用安全引导
当使用统一可扩展固件接口(UEFI)并启用安全引导时,操作系统可能会因为 3.10.0-327.3.1.el7.x86_64 内核引导所有内核。更新 3.10.0-327.4.4.el7 内核及系统如预期启动的新版本。(BZ#1290441)
为所有安装的内核在 initramfs 镜像中添加了新的 microcode
在以前的版本中,当安装 microcode_ctl 软件包时,postinstall scriptlet 只为正在运行的内核重新构建 initramfs 文件,而不用于任何其他安装的内核。因此,当构建完成后,还没有安装的内核有一个 initramfs 文件。提供的修复为所有安装的内核在 initramfs 镜像中添加了新的 microcode。因此,不再生成 superfluous initramfs 文件。(BZ#1292158)
GFS2 中竞争条件导致的内核 slab
错误不再发生
以前在 GFS2 文件系统中发生了一个竞争条件,其中两个进程同时尝试释放用于目录查找的内核
slab
内存。因此,当两个进程都释放相同的内存时,内核中会出现 slab
内存错误。现在,GFS2 文件系统已被修补来消除竞争条件,进程现在无法尝试释放已经被其他进程释放的内存。现在,在尝试释放内存时,每个进程都会被强制进行。因此,内核 slab
错误不再发生。(BZ#1276477)
GFS2 现在将数据写入文件中的正确位置
在以前的版本中,当写入使用
O_DIRECT
(直接 I/O)打开的文件时,GFS2 文件系统会错误地计算大于 4 KB 的位置。因此,数据被写入文件中的错误位置。GFS2 已修补,以计算直接 I/O 写入的正确文件偏移。因此,GFS2 现在将数据写入文件中的正确位置。(BZ#1289630)
当 kdump 机制失败时,dump-capture 内核内存会释放
当使用
,high
和 ,low
语法分配 crashkernel 内存时,在有些情况下,保留高部分,但保留 kdump 机制失败。由于以下原因,这个故障可能会在大型系统中发生。手动指定的 crashkernel 低内存太大,因此找不到足够的 memblock 区域。kexec 工具可以成功加载 dump-capture 内核,但引导 dump-capture 内核会失败,因为内存不足。在分配了高内存部分后,提供的补丁集为 dump-capture 内核保留低内存。
因此,如果 kdump 机制失败,则 dump-capture 内核内存会被释放。因此,用户可以相应地测量措施。(BZ#1241236)
因为不可用的 kabi-whitelists 组件,ksc 工具不再无法文件错误
在以前的更新中,k
abi-whitelists
组件被改为内核组件的 kabi-whitelists
子组件。因此,ksc 工具无法文件错误,因为 kabi-whitelists
组件值未激活,并生成以下出错信息:
Could not create bug.<Fault 32000:"The component value 'kabi-whitelists' is not active">
在这个版本中,内核组件的正确子组件是 kabi-whitelisted,ksc 文件错误如预期。(BZ#1328384)
现在,在没有强制参数运行时,ksc 会返回错误而不是崩溃
ext4 文件系统现在可以按预期调整
由于 ext4 代码中的一个错误,之前无法重新定义大小为 1 KB 的块大小并小于 32MB 的 ext4 文件系统的大小。现在,应用了一个补丁来解决这个问题,上面描述的 ext4 文件系统可以如预期调整大小。(BZ#1172496)
将 qdisc 附加到虚拟设备时的意外行为不再发生
在以前的版本中,将 qdisc 附加到虚拟设备可能会导致意外行为,如数据包被预先丢弃并减少带宽。有了这个更新,虚拟设备的默认
tx_queue_len
为 1000,由设备标记表示。现在,默认设置支持将 qdisc 附加到虚拟设备,不再需要对 tx_queue_len=0
特殊处理。(BZ#1152231)
udev
守护进程不再被 dracut
在以前的版本中,
initramfs
进程中的 dracut 脚本使用 udevadm control 命令停止 udev
守护进程,这会导致 udev
守护进程退出。但是,systemd
服务策略是重启守护进程。在某些情况下,这会阻止系统引导。在这个版本中,停止 udev 守护进程的代码已从 dracut 脚本中删除,这可避免上述问题。(BZ#1276983)
修复了多fsb 缓冲日志记录
在以前的版本中,因为记录多块缓冲区的问题,对具有大型目录块大小的 XFS 文件系统的目录修改可能会导致内核 panic 和规范服务器崩溃。提供的补丁修复了 multi-fsb 缓冲日志记录,在这种情况下服务器不再崩溃。(BZ#1356009)
使用第 6 代 Intel Core 处理器中集成图形的笔记本电脑上不再发生硬屏幕锁定
在使用 6 代 Intel Core 处理器中的集成图形的笔记本电脑上,之前发生硬屏幕锁定有时会发生:
- 在 monitor 的边缘间移动光标
- 在多个监控器间移动光标
- 更改 monitor 配置的任何方面
- docking 或 undocking the machine
- 插入或拔出 monitor
这个程序错误已被解决,在这种情况下,屏幕的硬锁定不再发生。(BZ#1341633)
在具有持久内存的系统中修复多个问题
在具有持久内存的系统上引导时,有时会出现几个问题,可以是真实的非线性内存模块(NVDIMM)或使用
memmap=X!Y
内核命令行参数模拟 NVDIMM。
完成持久性内存会导致为每个
pmem
设备的块(128 MB)显示以下信息:
Built 2 zonelists in Zone order, mobility grouping on. Total pages: 8126731 Policy zone: Normal
系统变得无响应。
此时会显示以下
BUG
信息:
BUG: unable to handle kernel paging request at ffff88007b7eef70
在这个版本中解决了上面描述的错误。(BZ#1367257)
当未设置 SUDO_USER
和 USER
变量时,Python 错误不再会出现
在以前的版本中,当在没有设置
SUDO_USER
或 USER
环境变量的备用环境中执行时,会出现多个 python
错误。在这个版本中,未定义的 SUDO_ USER
和 USER 变量会被正确处理,不再会出现错误。(BZ#1312057)
CIFS 匿名身份验证不再失败
在以前的版本中,
cifs
模块为匿名身份验证设置错误的值。对 samba
文件服务器所做的更改会公开此错误。因此,匿名身份验证会失败。在这个版本中,更改了客户端的行为,并为匿名身份验证设置正确的 auth
值。因此,cifs 匿名身份验证现在可以正常工作。(BZ#1361407)