第 8 章 已知问题
这部分论述了 Red Hat Enterprise Linux 9.6 中已知的问题。
8.1. 安装程序和镜像创建 复制链接链接已复制到粘贴板!
auth
和 authconfig
Kickstart 命令需要 AppStream 软件仓库
auth
和 authconfig
Kickstart 命令在安装过程中需要 authselect-compat
软件包。如果没有这个软件包,如果使用了 auth
或 authconfig
,则安装会失败。但根据设计,authselect-compat
软件包只包括在 AppStream 仓库中。
临时解决方案:验证 BaseOS 和 AppStream 软件仓库可供安装程序使用,或者在安装过程中使用 authselect
Kickstart 命令。
Jira:RHELPLAN-10061[1]
在 Anaconda 作为应用程序运行的系统中意外 SELinux 策略
当 Anaconda 作为应用程序在已安装的系统上运行(例如,使用 -image
anaconda 选项对镜像文件执行另一个安装),则系统不会在安装过程中修改 SELinux 类型和属性。因此,某些 SELinux 策略的元素可能会在运行Anaconda 的系统上发生更改。
临时解决方案:不要在生产环境中运行 Anaconda。相反,在临时虚拟机中运行 Anaconda,以使 SELinux 策略在生产系统上保持不变。作为系统安装过程的一部分运行 anaconda,如从 boot.iso
或 dvd.iso
安装不会受此问题的影响。
Jira:RHELPLAN-110940[1]
当使用使用第三方工具创建的 USB 引导安装时,不会检测 本地介质
安装源
当从使用第三方工具创建的 USB 引导 RHEL 安装时,安装程序无法检测到 本地介质
安装源(只检测 Red Hat CDN )。
出现这个问题的原因是,默认的引导选项 int.stage2=
会尝试搜索 iso9660
镜像格式。但是,第三方工具可能会创建具有不同格式的 ISO 镜像。
临时解决方案 :使用以下解决方案之一:
-
当引导安装时,点击
Tab
键来编辑内核命令行,并将引导选项inst.stage2= 改为
inst.repo=
。 - 要在 Windows 中创建可引导 USB 设备,使用 Fedora Media Writer。
- 当使用 Rufus 等第三方工具创建可引导的 USB 设备时,首先在 Linux 系统上重新生成 RHEL ISO 镜像,然后使用第三方工具创建可引导的 USB 设备。
有关执行任何指定的临时解决方案的步骤的更多信息,请参阅 安装介质在 RHEL 8.3 的安装过程中没有被自动探测到。
Jira:RHELPLAN-53644[1]
USB CD-ROM 驱动器作为 Anaconda 中的安装源不可用
当源为 USB CD-ROM 驱动器,并且指定了 Kickstart ignoredisk --only-use=
命令时,安装会失败。在这种情况下,Anaconda 无法找到并使用这个源磁盘。
临时解决方案:使用 harddrive --partition=sdX --dir=/
命令从 USB CD-ROM 驱动器安装。因此,安装不会失败。
带有 iso9660 文件系统的硬盘分区安装失败
您不能在使用 iso9660
文件系统进行分区的系统中安装 RHEL。这是因为将设置为忽略包含 iso9660
文件系统分区的硬盘的更新安装代码。即使在没有使用 DVD 的情况下安装 RHEL,也会发生这种情况。
临时解决方案:在 Kickstart 文件中添加以下脚本,以在安装开始前格式化磁盘。
注:在执行临时解决方案前,请备份磁盘上的数据。erafs
命令对磁盘中的所有现有数据进行格式化。
%pre wipefs -a /dev/sda %end
%pre
wipefs -a /dev/sda
%end
因此,安装可以正常工作,且没有任何错误。
Anaconda 无法验证管理员用户帐户是否存在
在使用图形用户界面安装 RHEL 时,Anaconda 无法验证管理员帐户是否已创建。因此,用户可以在没有管理员用户帐户的情况下安装系统。
临时解决方案: 确保配置管理员用户帐户或 root 密码已设置,并且 root 帐户被解锁。因此,用户可以在安装的系统中执行管理任务。
Jira:RHELPLAN-110191[1]
新的 XFS 功能可防止使用比版本 5.10 更早的固件引导 PowerNV IBM POWER 系统
PowerNV IBM POWER 系统使用 Linux 内核进行固件,并使用 Petitboot 作为 GRUB 的替代。这会导致固件内核挂载 /boot
,Petitboot 读取 GRUB 配置和引导 RHEL。
RHEL 9 内核为 XFS 文件系统引入了 bigtime=1
和 inobtcount=1
功能,而使用比版本 5.10 旧固件的内核不理解。
临时解决方案:您可以对 /boot
使用另一个文件系统,例如 ext4。
Jira:RHELPLAN-94811[1]
RHEL for Edge 安装程序镜像在安装 rpm-ostree 有效负载时无法创建挂载点
当部署 rpm-ostree
有效负载时,例如用于 RHEL for Edge 安装程序镜像,安装程序不能为自定义分区正确创建一些挂载点。因此,安装会停止并显示以下错误:
The command 'mount --bind /mnt/sysimage/data /mnt/sysroot/data' exited with the code 32.
The command 'mount --bind /mnt/sysimage/data /mnt/sysroot/data' exited with the code 32.
临时解决方案:
- 使用自动分区方案,且不手动添加任何挂载点。
-
只在
/var
目录中手动分配挂载点。例如:/var/my-mount-point
和以下标准目录:/
、/boot
、/var
。
因此,安装过程成功完成。
当连接到网络但没有配置 DHCP 或静态 IP 地址时,NetworkManager 无法在安装后启动
从 RHEL 9.0 开始,当没有设置特定的 ip=
或 Kickstart 网络配置时,Anaconda 会自动激活网络设备。Anaconda 为每个以太网设备创建默认的持久配置文件。连接配置文件的 ONBOOT
和 autoconnect
值设为 true
。因此,在启动安装的系统的过程中,RHEL 会激活网络设备,networkManager-wait-online
服务会失败。
临时解决方案 :请执行以下操作之一:
使用
nmcli
工具删除所有连接,但您要使用的一个连接除外。例如:列出所有连接配置文件:
nmcli connection show
# nmcli connection show
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除您不需要的连接配置文件:
nmcli connection delete <connection_name>
# nmcli connection delete <connection_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 <connection_name> 替换为您要删除的连接的名称。
如果没有设置特定的
ip=
或 Kickstart 网络配置,请在 Anaconda 中禁用自动连接网络功能。- 在 Anaconda GUI 中,导航到 Network & Host Name。
- 选择要禁用的网络设备。
- 单击 Configure。
- 在 General 选项卡中,取消 Connect automatically with priority 复选框。
- 点击 Save。
Jira:RHELPLAN-130370[1]
Kickstart 安装无法配置网络连接
Anaconda 只能通过 NetworkManager API 执行 Kickstart 网络配置。Anaconda 在 %pre
Kickstart 部分之后处理网络配置。因此,Kickstart %pre
部分中的一些任务被阻止。例如,因为网络配置不可用,从 %pre
部分中下载软件包会失败。
临时解决方案:
-
配置网络,例如使用
nmcli
工具作为%pre
脚本的一部分。 -
使用安装程序引导选项为
%pre
脚本配置网络。
因此,可以对 %pre
部分中的任务使用网络,Kickstart 安装过程完成。
Jira:RHELPLAN-150080[1]
使用 stig
配置集补救构建的镜像无法使用 FIPS 错误引导
RHEL 镜像构建器不支持 FIPS 模式。当使用由 xccdf_org.ssgproject.content_profile_stig
配置文件补救自定义的 RHEL 镜像构建器时,系统无法引导,并显示以下错误:
Warning: /boot//.vmlinuz-<kernel version>.x86_64.hmac does not exist FATAL: FIPS integrity test failed Refusing to continue
Warning: /boot//.vmlinuz-<kernel version>.x86_64.hmac does not exist
FATAL: FIPS integrity test failed
Refusing to continue
在系统镜像安装后,使用 fips-mode-setup --enable
命令手动启用 FIPS 策略无法正常工作,因为 /boot
目录在不同的分区上。如果禁用了 FIPS,则系统可以成功引导。目前,还没有可用的临时解决方案。
安装镜像后,您可以使用 fips-mode-setup --enable
命令手动启用 FIPS。
驱动程序磁盘菜单无法在控制台上显示用户输入
当您在带有驱动程序磁盘的内核命令行中使用 inst.dd
选项启动 RHEL 安装时,控制台无法显示用户输入。因此,似乎应用程序没有响应用户输入并停止响应,但会显示给用户造成混淆的输出。但是,此行为不会影响功能,用户输入会在按 Enter
后被注册。
临时解决方案:要看到预期的结果,请忽略控制台中没有用户输入,并在完成添加输入后按 Enter
键。
因为在 %packages
部分中缺少具有 systemd
服务文件的软件包,因此 kickstart 安装失败
如果 Kickstart 文件使用 services --enabled=…
指令启用 systemd
服务,且包含指定服务文件的软件包没有包含在 %packages
部分中,则 RHEL 安装过程失败,并显示以下错误:
Error enabling service <name_of_the_service>
Error enabling service <name_of_the_service>
临时解决方案:在 Kickstart 的 %packages
部分中将特定的软件包与服务文件包含。因此,RHEL 安装完成,在安装过程中启用了预期的服务。
Jira:RHEL-9633[1]
无法从签名的容器构建 ISO
尝试从 GPG 或简单签名的容器构建 ISO 磁盘镜像会导致错误,如下所示:
manifest - failed Failed Error: cannot run osbuild: running osbuild failed: exit status 1 2024/04/23 10:56:48 error: cannot run osbuild: running osbuild failed: exit status 1
manifest - failed
Failed
Error: cannot run osbuild: running osbuild failed: exit status 1
2024/04/23 10:56:48 error: cannot run osbuild: running osbuild failed: exit status 1
这是因为系统无法获得镜像签名。
临时解决方案:您可以从容器镜像中删除签名,或构建一个派生的容器镜像。例如,要删除签名,您可以运行以下命令:
要构建派生的容器镜像,并避免向其添加简单的 GPG 签名,请参阅 签名容器镜像 产品文档。
bootc-image-builder
不支持从私有注册中心构建镜像
目前,您无法使用 bootc-image-builder
构建来自私有注册中心的基本磁盘镜像。
临时解决方案:将私有 registry 复制到您的 localhost 中,然后使用以下参数构建镜像:
-
--local
-
localhost/<image name>:tag
作为镜像
例如,要构建镜像:
Jira:RHELDOCS-18720[1]
救援模式下的 SELinux autorelabel 可能导致循环重启
在 救援
模式下访问文件系统会触发 SELinux 在下次引导时自动标记文件系统,这将继续,直到 SELinux 在 permissive
模式下运行。因此,在退出 救援
模式后,系统可能会进入无限循环重启,因为它无法删除 /.autorelabel
文件。
临时解决方案:在下次引导时将 enforcing=0
添加到内核命令行来切换到 permissive
模式。在 救援模式
下访问文件系统时,系统会显示一条警告消息来作为预防措施,告知可能出现此问题。
主机名解析由于引导选项中加密的 DNS 和自定义 CA 而失败
当在内核命令行中使用 inst.repo=
或 inst.stage2=
引导选项以及远程安装 URL、加密的 DNS 和 Kickstart 文件中的自定义 CA 证书时,安装程序会在处理 Kickstart 文件前尝试下载 install.img
stage2 镜像。因此,主机名解析失败,从而导致在成功获取 stage2 镜像前显示一些错误。
临时解决方案:在 Kickstart 文件中定义安装源,而不是内核命令行。
将设备与 LACP 绑定需要更长的时间才能正常工作,从而导致订阅失败
当使用内核命令行引导选项和 Kickstart 文件配置与 LACP 绑定的设备时,会在 initramfs
阶段创建连接,但在 Anaconda 中重新激活。因此,它会导致临时中断,从而通过 rhsm
Kickstart 命令造成系统订阅失败。
临时解决方案:将 -no-activate
添加到 Kickstart 网络配置,以保持网络正常工作。因此,系统订阅成功完成。
Jira:RHELDOCS-19852[1]
services
Kickstart 命令无法禁用 firewalld
服务
Anaconda 中的一个 bug 阻止 services --disabled=firewalld
命令在 Kickstart 中禁用 firewalld
服务。
临时解决方案 :改为使用 firewall --disabled
命令。因此,firewalld
服务被正确禁用。
当 'ignoredisk' 命令在 'iscsi' 命令之前时,Kickstart 安装失败并显示 unknown disk 错误
如果 ignoredisk
命令被放在 iscsi
命令之前,则使用 Kickstart 方法安装 RHEL 会失败。出现这个问题的原因是 iscsi
命令在命令解析过程中附加了指定的 iSCSI 设备,而 ignoredisk
命令同时解析了设备规范。如果 ignoredisk
命令在 iscsi
命令附加之前引用了一个 iSCSI 设备名称,则安装会失败,并显示"unknown disk"错误。
临时解决方案:确保 iscsi
命令在 Kickstart 文件中被放置在 ignoredisk
命令之前,以引用 iSCSI 磁盘,并确保安装成功。
如果在使用 ostreecontainer
时没有创建 /boot
分区,则安装程序会失败
当使用 ostreecontainer
Kickstart 命令安装可引导容器时,如果没有创建 /boot
分区,安装会失败。出现这个问题的原因是,安装程序需要一个专用的 /boot
分区来继续容器部署。
临时解决方案:确保在 Kickstart 文件中定义了一个 /boot
分区或者在安装过程中手动创建。
Anaconda 可能无法在 s390x
和 ppc64le
构架中正常工作
除了已经支持的 x86_64
和 ARM 架构外,RHEL 的镜像模式支持 pp64le
和 s390x
架构。但是,Anaconda 可能无法在 s390x 和 ppc64le 构架中正常工作。
Jira:RHELDOCS-19496[1]
reboot --kexec
和 inst.kexec
命令不提供可预测的系统状态
使用 reboot --kexec Kickstart
命令或 inst.kexec
内核引导参数执行 RHEL 安装不会提供与完全重启相同的可预期系统状态。因此,在不重启的情况下切换安装的系统可能会导致无法预计的结果。
请注意,kexec
功能已弃用,并将在以后的 Red Hat Enterprise Linux 版本中删除。
Jira:RHELDOCS-20471[1]