Fedora 40 开机启动失败,不重装系统,如何恢复成功 ?(附带恢复过程)

在 Fedora 40 中通过 命令sudo dnf install obs-studio 安装了 OBS Studio录屏软件, 安装后obs-studio可正常启动,但是在进行录屏时候,OBS Studio会突然崩溃,然后根据OBS Studio的提示,启动了安全模式录屏,但是依然会崩溃。随后重启Fedora40系统,发现系统无法进入登录界面,系统界面如下:

js 复制代码
Fedoar Linux (6.12.6-100.fc40.x86_64) 40 (LDE Plasma)
Fedoar Linux (6.11.8-200.fc40.x86_64) 40 (LDE Plasma)
Fedoar Linux (6.10.6-200.fc40.x86_64) 40 (LDE Plasma)
Fedoar Linux (0-rescue-bb2dbf469...) 40 (LDE Plasma)
*UEFI Firmware Settings

测试过几个内核,依然无法进入系统。下边是我进行系统修复时候的过程,最后才是正确的解决方案,供大家参考。

因为每个系统遇到的错误不同,按照我的流程,也有可能对您的系统造成损害,造成数据的丢失,请一定看完后在制定适合自己的恢复方案,恢复前一定备份自己系统的数据(Live CD 启动可备份数据),造成的一些问题和后果需要操作者本人承担。

本文章仅供技术交流使用,不承担任何因为本文章引起的一切后果。

最后通过 Fedoar Linux (0-rescue-bb2dbf469...) 40 (LDE Plasma) 可以进入Fedora40的安全模式。

此时最好的方式应该是回滚命令sudo dnf install obs-studio 对系统做的更新 (虽然我自己没有尝试成功) 。回滚更新的操作如下:

js 复制代码
通过 Fedoar Linux (0-rescue-bb2dbf469...) 40 (LDE Plasma) 进入安全模式,输入登录密码进入root账户。

然后运行 
dnf history | grep -A 10 "obs-studio"
发现类似的结果:

45 | remove obs-studio | 2025-04-04 11:22 | Removed | 12 ##
44 | install obs-studio | 2025-04-04 10:39 | I,O,U | 118
43 | install redis | 2025-03-23 06:15 | Install | 1
...

这里需要回滚到安装obs-studio之前的系统。运行

dnf history undo 44
然后我的系统提示:
Error: The following problems occurred while running a transaction:
Cannot find rpm nevra "javascriptcoregtk4.1-2.46.6-1.fc40.x86_64".
Cannot find rpm nevra "webkit2gtk4.1-2.46.6-1.fc40.x86_64".
...
有很多条。

因为我的Fedora40系统长期没有更新,有些过时软件包无法在系统的updates仓库中找到,就无法回滚。

其实我在回滚之前,做过另外一个尝试,也可能是造成丢包不能回滚的原因。

我在回滚之前,通过 Fedoar Linux (0-rescue-bb2dbf469...) 40 (LDE Plasma) 进入安全模式,输入登录密码进入root账户后,做了如下失误的操作:

js 复制代码
1.手工卸载了 obs-studio
sudo dnf remove obs-studio
卸载后依然无法启动。

2.运行了系统更新,重建了内核

# 清理缓存并更新
dnf clean all
dnf update --refresh -y

# 重建 initramfs(解决内核模块问题)
dracut --regenerate-all --force

# 更新 GRUB 配置
grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg

这个命令可能提示无法执行,我运行了如下命令:
dnf reinstall shim grub2-efi grub2-efi-x64-modules grub2-efi-x64-cdboot
grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg


# 重装显示管理器(如 SDDM/GDM)
dnf reinstall sddm plasma-workspace  # KDE 用户
# 或
dnf reinstall gdm gnome-shell      # GNOME 用户

exit
reboot

重启系统后,依然无法启动。

虽然系统数据已经备份,但是系统中按照了很多程序,不想重做系统,于是才有了以下操作:

现在需要找到错误的最终原因,然后把错误复制下来,交给人工智能来处理。

既然使用人工智能,你需要尽可能的把所有问题和操作流程都写出来,字数越多越好。

我打算使用Live CD启动后,进入损坏系统的chroot环境中,然后获取最后一次启动失败的信息。

下边启动Live CD 后,进行了如下操作:

js 复制代码
#创建文件夹,好挂载分区
sudo mkdir /mnt/fedora
sudo mkdir /mnt/fedora/boot
sudo mkdir /mnt/fedora/boot/efi

#因为我的系统是多个分区,需要分别挂载
sudo mount /dev/sda9 /mnt/fedora
sudo mount /dev/sda2 /mnt/fedora/boot
sudo mount /dev/sda1 /mnt/fedora/boot/efi

为让`chroot` 环境运行得像一个正常的环境,你需要挂载一些额外的虚拟文件系统:(不挂载系统会无法联网,因为在修复时候需要下载包)
sudo mount --bind /dev /mnt/fedora/dev
sudo mount --bind /proc /mnt/fedora/proc
sudo mount --bind /sys /mnt/fedora/sys
sudo mount --bind /run /mnt/fedora/run

#我分区很多,需要单独挂载(可选)
sudo mount /dev/sda4 /mnt/fedora/var
sudo mount /dev/sda5 /mnt/fedora/home

# 进入待修改的系统, chroot环境是已经被损坏的Fedora40系统
sudo chroot /mnt/fedora

# 关键是找到关键错误,运行如下命令:

# 检查启动失败的日志损坏(Important!!)
# 这样可以不用获取无用的信息,太多无用信息对人工智能不友好

journalctl -b -0 -p 3 --no-pager  # 查看当前启动失败的日志(错误级别≥3)
journalctl -b -1 -p 3 --no-pager  # 查看上一次启动的日志(如果可能)
journalctl -b -2 -p 3 --no-pager  # 查看大次启动的日志(如果可能)

上边两个获取的信息就足够了,如果没有获取任何信息,可以尝试下如下命令:

# 查看 DNF 更新日志
cat /var/log/dnf.log | grep -i "error\|fail"

# 检查内核和驱动相关日志
cat /var/log/messages | grep -i "error\|drm\|failed"

# 显示管理器日志(如 SDDM/GDM)
cat /var/log/Xorg.0.log  # 图形界面错误
cat /var/log/sddm.log    # KDE Plasma 的显示管理器日志

把获取的信息保存,然后整理后向人工智能咨询,我在Cursor中使用的是Claude-3.7-Thinking Max ,采用Ask的方式,咨询了这个大模型,最后成功启动系统。

我查询到的错误日志如下:

js 复制代码
root@localhost-live:/# journalctl -b -0 -p 3 --no-pager Apr 05 07:14:23 fedora kernel: [Firmware Bug]: TSC_DEADLINE disabled due to Errata; please update microcode to version: 0x25 (or later) Apr 05 07:14:23 fedora kernel: DMAR: [Firmware Bug]: No firmware reserved region can cover this RMRR [0x000000009d800000-0x000000009fffffff], contact BIOS vendor for fixes root@localhost-live:/# journalctl -b -1 -p 3 --no-pager Apr 05 02:51:38 fedora kernel: DMAR: [Firmware Bug]: No firmware reserved region can cover this RMRR [0x000000009d800000-0x000000009fffffff], contact BIOS vendor for fixes Apr 05 02:51:47 ocean (sd-exec-[750]: /usr/lib/systemd/system-generators/systemd-gpt-auto-generator failed with exit status 1. Apr 05 02:51:48 ocean systemd-udevd[839]: /usr/lib/udev/rules.d/90-alsa-restore.rules:16 GOTO="alsa_restore_std" has no matching label, ignoring. Apr 05 02:51:48 ocean systemd-udevd[839]: /usr/lib/udev/rules.d/90-alsa-restore.rules:20 GOTO="alsa_restore_std" has no matching label, ignoring. Apr 05 02:51:54 ocean systemd-update-done[1090]: Failed to write "/etc/.updated": Permission denied Apr 05 02:51:54 ocean systemd-update-done[1090]: Failed to write "/var/.updated": Permission denied Apr 05 02:51:54 ocean systemd[1]: Failed to start systemd-update-done.service - Update is Completed. Apr 05 02:51:54 ocean bluetoothd[1107]: Failed to set mode: Failed (0x03) Apr 05 02:52:27 ocean cupsd[1306]: Unable to finalize "/etc/cups/subscriptions.conf": Permission denied Apr 05 02:52:30 ocean setroubleshoot[1535]: failed to retrieve rpm info for path '/etc/cups/subscriptions.conf.O': Apr 05 02:52:31 ocean setroubleshoot[1535]: SELinux 正在阻止 cupsd 对 unlink 文件 进行 /etc/cups/subscriptions.conf.O 访问。 如需要完整的 SELinux 信息,请运行 sealert -l ff46484f-01da-4961-84ab-6526434538c8 Apr 05 02:53:06 ocean dbus-broker-launch[1103]: Activation request for 'org.freedesktop.nm_dispatcher' failed. root@localhost-live:/# journalctl -b -2 -p 3 --no-pager Apr 05 00:14:25 fedora kernel: DMAR: [Firmware Bug]: No firmware reserved region can cover this RMRR [0x000000009d800000-0x000000009fffffff], contact BIOS vendor for fixes Apr 05 00:14:34 ocean (sd-exec-[724]: /usr/lib/systemd/system-generators/zram-generator failed with exit status 1. Apr 05 00:14:34 ocean (sd-exec-[724]: /usr/lib/systemd/system-generators/systemd-gpt-auto-generator failed with exit status 1. Apr 05 00:14:34 ocean systemd-modules-load[769]: Failed to find module 'i2c-dev' Apr 05 00:14:34 ocean systemd-modules-load[769]: Failed to find module 'msr' Apr 05 00:14:34 ocean systemd-modules-load[769]: Failed to find module 'i2c-dev' Apr 05 00:14:34 ocean systemd-modules-load[769]: Failed to find module 'fuse' Apr 05 00:14:35 ocean systemd-udevd[811]: /usr/lib/udev/rules.d/90-alsa-restore.rules:16 GOTO="alsa_restore_std" has no matching label, ignoring. Apr 05 00:14:35 ocean systemd-udevd[811]: /usr/lib/udev/rules.d/90-alsa-restore.rules:20 GOTO="alsa_restore_std" has no matching label, ignoring. Apr 05 00:14:35 ocean systemd[1]: Failed to mount boot-efi.mount - /boot/efi. Apr 05 00:14:35 ocean systemd[1]: Failed to mount proc-sys-fs-binfmt_misc.mount - Arbitrary Executable File Formats File System. Apr 05 00:14:35 ocean systemd-binfmt[927]: Failed to check if /proc/sys/fs/binfmt_misc is mounted: No such device Apr 05 00:14:35 ocean systemd[1]: Failed to start systemd-binfmt.service - Set Up Additional Binary Formats. Apr 05 00:14:36 ocean systemd-update-done[1001]: Failed to write "/etc/.updated": Permission denied Apr 05 00:14:36 ocean systemd-update-done[1001]: Failed to write "/var/.updated": Permission denied Apr 05 00:14:36 ocean systemd[1]: Failed to start systemd-update-done.service - Update is Completed. Apr 05 00:15:19 ocean systemd[1]: Timed out waiting for device dev-zram0.device - /dev/zram0. Apr 05 00:15:30 ocean sudo[1066]: pam_systemd(sudo:session): Failed to connect to system bus: No such file or directory

大模型给出的回复和解决方案如下:

Fedora 40修复步骤

按照以下步骤在chroot环境中操作,解决您系统的多个问题:

1. 修复权限和SELinux问题

js 复制代码
# 修复文件权限和SELinux上下文
restorecon -Rv /etc
restorecon -Rv /var
chmod 755 /etc /var

# 修复cups相关问题
restorecon -Rv /etc/cups
chmod 644 /etc/cups/subscriptions.conf*

# 临时放宽SELinux
setenforce 0
# 永久设置SELinux为宽容模式
sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config

2. 修复内核模块加载问题

js 复制代码
# 创建所需的模块配置
echo "i2c-dev" > /etc/modules-load.d/i2c-dev.conf
echo "msr" > /etc/modules-load.d/msr.conf
echo "fuse" > /etc/modules-load.d/fuse.conf

# 确保这些模块在内核中可用
dnf install kernel-modules-extra -y

3. 修复系统服务和配置

js 复制代码
# 修复systemd生成器权限
chmod 755 /usr/lib/systemd/system-generators/*

# 重置systemd
systemctl daemon-reexec

# 修复zram问题
dnf reinstall zram-generator -y

4. 修复EFI分区和引导问题

js 复制代码
# 检查fstab和EFI分区
cat /etc/fstab
blkid /dev/sda1

# 重新生成grub配置
grub2-mkconfig -o /boot/grub2/grub.cfg
grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg

这个命令可能提示无法执行,我运行了如下命令:
dnf reinstall shim grub2-efi grub2-efi-x64-modules grub2-efi-x64-cdboot
grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg

5. 重建内核initramfs

js 复制代码
# 清理旧内核缓存
rm -f /boot/initramfs-*.img

# 为所有内核重建initramfs
dracut --regenerate-all --force

# 确保默认内核正确
grubby --set-default /boot/vmlinuz-$(uname -r)

6. 修复显示管理器和桌面环境

js 复制代码
# 修复桌面环境组件
dnf reinstall sddm plasma-workspace plasma-desktop -y

# 启用显示管理器
systemctl enable sddm.service

7. 更新系统并修复依赖关系

js 复制代码
# 清理缓存并修复包数据库
dnf clean all
rm -f /var/lib/rpm/__db*
rpm --rebuilddb

# 更新系统
dnf update --refresh -y --skip-broken

# 修复依赖关系
dnf check
dnf distro-sync -y

8. 完成并重启

js 复制代码
# 确保系统服务正常启动
systemctl preset-all

# 退出chroot并重启
exit

退出chroot后,卸载所有挂载点并重启:

js 复制代码
sudo umount -R /mnt/fedora
sudo reboot

如果系统仍无法启动,请在救援模式或Live CD中运行以下额外命令:

js 复制代码
# sda9是我的主目录 "/" 分区
sudo fsck -fv /dev/sda9

注意:系统日志中的固件警告(DMAR和TSC_DEADLINE)通常不会阻止系统启动,可以在系统恢复后再考虑更新BIOS。

运行大模型给的修复方案时,有几个命令也提示异常,但是总体运行完成,重启系统可以正常进入系统了。 运行异常的命令如下:

js 复制代码
root@localhost-live:/# systemctl daemon-reexec
Running in chroot, ignoring command 'daemon-reexec'

root@localhost-live:/# grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
Running `grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg' will overwrite the GRUB wrapper.
Please run `grub2-mkconfig -o /boot/grub2/grub.cfg' instead to update grub.cfg.
GRUB configuration file was not updated.

root@localhost-live:/# dnf check
clash-verge-1.7.7-1.x86_64 has installed conflict "clash-verge": clash-verge-1.7.7-1.x86_64
clash-verge-1.7.7-1.x86_64 is obsoleted by clash-verge-1.7.7-1.x86_64
Error: Check discovered 2 problem(s)


root@localhost-live:/# systemctl preset-all
Removed "/etc/systemd/system/mysql.service".
Removed "/etc/systemd/system/vmtoolsd.service.requires/vgauthd.service".
Removed "/etc/systemd/system/mysqld.service".
Removed "/etc/systemd/system/multi-user.target.wants/nginx.service".
Removed "/etc/systemd/system/multi-user.target.wants/postgresql-15.service".
Removed "/etc/systemd/system/multi-user.target.wants/mariadb.service".
Removed "/etc/systemd/system/default.target".
Unit /usr/lib/systemd/system/qemu-guest-agent.service is added as a dependency to a non-existent unit dev-virtio\x2dports-org.qemu.guest_agent.0.device.
Created symlink /etc/systemd/system/basic.target.wants/rpmdb-rebuild.service → /usr/lib/systemd/system/rpmdb-rebuild.service.
Created symlink /etc/systemd/system/basic.target.wants/rpmdb-migrate.service → /usr/lib/systemd/system/rpmdb-migrate.service.
Created symlink /etc/systemd/system/vmtoolsd.service.requires/vgauthd.service → /usr/lib/systemd/system/vgauthd.service.
相关推荐
meisongqing17 分钟前
人工智能:RNN和CNN详细分析
人工智能·神经网络
带娃的IT创业者20 分钟前
《AI大模型趣味实战》智能财务助手系统架构设计
人工智能·系统架构
Shockang25 分钟前
机器学习的一百个概念(7)独热编码
人工智能·机器学习
东芃939430 分钟前
CUDA error: no kernel image is available for execution on the device
人工智能·深度学习
计算所陈老师36 分钟前
基于论文的大模型应用:基于SmartETL的arXiv论文数据接入与预处理(一)
人工智能·数据治理
DUTBenjamin1 小时前
计算机视觉基础4——特征点及其描述子
人工智能·计算机视觉
陈奕昆1 小时前
IAGCN:登上《Nature》的深度学习可解释性情感分析模型突破
人工智能·深度学习
煤烦恼1 小时前
scala类与集合
java·大数据·开发语言·人工智能·scala
AAIshangyanxiu1 小时前
智能气候:AI Agent结合机器学习与深度学习在全球气候变化驱动因素预测中的应用
人工智能·深度学习·机器学习·ai agent·全球气候变化·ai气候变化·弄作物模型
txp玩Linux1 小时前
rnn的音频降噪背后技术原理
人工智能·rnn·深度学习·神经网络·机器学习