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.
相关推荐
AngelPP4 小时前
OpenClaw 架构深度解析:如何把 AI 助手搬到你的个人设备上
人工智能
宅小年4 小时前
Claude Code 换成了Kimi K2.5后,我再也回不去了
人工智能·ai编程·claude
九狼4 小时前
Flutter URL Scheme 跨平台跳转
人工智能·flutter·github
ZFSS4 小时前
Kimi Chat Completion API 申请及使用
前端·人工智能
天翼云开发者社区5 小时前
春节复工福利就位!天翼云息壤2500万Tokens免费送,全品类大模型一键畅玩!
人工智能·算力服务·息壤
知识浅谈5 小时前
教你如何用 Gemini 将课本图片一键转为精美 PPT
人工智能
Ray Liang6 小时前
被低估的量化版模型,小身材也能干大事
人工智能·ai·ai助手·mindx
shengjk17 小时前
NanoClaw 深度剖析:一个"AI 原生"架构的个人助手是如何运转的?
人工智能
代码匠心8 小时前
AI 自动编程:一句话设计高颜值博客
前端·ai·ai编程·claude