linux开机黑屏的一种解决方案

linux开机黑屏的一种解决方案

1. 特点

linuxmint(ubuntu)
开机黑屏。切到高级设置进入,卡在loading initial ramdisk界面;但是可以进入高级设置-recovery mode,在里面选择resume可以进入系统。
Manjaro(arch)
安装完系统开机就黑屏,recovery mode进不去
opensuse
安装完系统开机就黑屏,其他未知
临时解决方案
在grub中,对着启动项按下e,找到以 linux /boot/vmlinuz...开头的行,在行尾添加dis_ucode_ldr可以开机

2. 原因

Intel 微代码(Microcode)更新与内核或硬件兼容性冲突

3. 解决方法

3.1 方法 1:改grub(治标不治本,不过所有linux都可以用):

  1. 编辑GRUB配置文件

    sudo nano /etc/default/grub
    
  2. GRUB_CMDLINE_LINUX中添加禁用参数
    找到以GRUB_CMDLINE_LINUX=开头的行,在引号内添加dis_ucode_ldr参数:

    GRUB_CMDLINE_LINUX="...原有参数... dis_ucode_ldr"
    

    示例(修改后可能类似这样):

    GRUB_CMDLINE_LINUX="quiet splash dis_ucode_ldr"
    
  3. 保存并更新GRUB
    Ctrl+X → 输入 Y → 回车保存文件,然后执行:

    sudo update-grub
    
  4. 重启系统

    sudo reboot
    

3.2 方法 2:禁止微代码集成到 initramfs(linuxmint可行、Manjaro不可行)

若降级无效,需彻底阻止微代码被加载到初始内存盘:

  1. 编辑微代码配置文件:

    sudo nano /etc/default/intel-microcode
    
  2. 修改为以下内容:

    IUCODE_TOOL_INITRAMFS=no
    
  3. 重新生成 initramfs:

    sudo update-initramfs -u  # Ubuntu/Debian
    sudo dracut -f  # Fedora/openSUSE
    

3.3 方法 3:降级 Intel 微代码(没试过)

  1. 进入 Recovery Mode 选择 resume 进入系统。

  2. 执行以下命令安装旧版微代码包:

    sudo apt install intel-microcode=3.20180312.0~ubuntu18.04.1  # Ubuntu 18.04 示例版本
    
    

3.4 试过没用的方法(别看这个,Manjaro没用)

在 Arch Linux 中阻止 Intel 微代码打包到 initramfs,通过配置 mkinitcpio 工具实现。

移除 microcode钩子

  • 编辑 /etc/mkinitcpio.conf

    sudo nano /etc/mkinitcpio.conf
    
  • HOOKS 行中找到 microcode 并将其删除。例如修改前:

    HOOKS=(base systemd autodetect microcode modconf kms keyboard sd-vconsole block filesystems fsck)
    

    修改后:

    HOOKS=(base systemd autodetect modconf kms keyboard sd-vconsole block filesystems fsck)
    
  • 保存文件(Ctrl+OEnterCtrl+X)。

重新生成 initramfs

执行以下命令应用更改:

   sudo mkinitcpio -P

此命令会为所有已安装的内核重新生成 initramfs 镜像(如 initramfs-linux.img),不再包含微代码。

验证是否生效

  • 检查生成的 initramfs 内容:

    lsinitcpio /boot/initramfs-linux.img | grep -i microcode
    

    若输出中无 intel-ucode.img 等微代码文件,则表示已成功移除。

4. ⚠️不要直接删除intel_ucode

4.1 如果已经删了

开机会提示缺失ucode.img蓝屏(Manjaro)

4.1.1 原因

  • 卸载 intel-ucode 后,/boot/intel-ucode.img 文件被删除。
  • 但 GRUB 配置未更新,仍包含对该文件的引用,导致引导时因文件缺失而崩溃。

4.1.2 解决方案:更新 GRUB 配置(没试过,来自DeepSeek)

需手动移除对 intel-ucode.img 的依赖,并重新生成引导文件:

  1. 使用 Arch Linux 安装介质启动
    从 USB 安装盘启动,选择 “Troubleshooting” → “Boot Arch Linux” 进入临时系统。

  2. 挂载原系统分区
    假设根分区为 /dev/nvme0n1p2,EFI 分区为 /dev/nvme0n1p1

    mount /dev/nvme0n1p2 /mnt          # 挂载根分区
    mount /dev/nvme0n1p1 /mnt/boot     # 挂载 EFI 分区
    arch-chroot /mnt                   # 切换到原系统环境
    
  3. 修改 GRUB 配置文件
    编辑 /boot/grub/grub.cfg 或重新生成配置:

    • 方法1:重新生成 GRUB 配置(推荐)

      grub-mkconfig -o /boot/grub/grub.cfg  # 自动清理无效的 ucode 引用
      
    • 方法2:手动编辑(若自动生成无效)
      找到所有包含 initrd /boot/intel-ucode.img 的行,删除该部分,仅保留对 initramfs 的引用。例如:
      原内容:

      initrd  /boot/intel-ucode.img /boot/initramfs-linux.img
      

      修改为:

      initrd  /boot/initramfs-linux.img
      
  4. 退出并重启

    exit
    umount -R /mnt
    reboot
    

4.2 可能的正确删除方法

若你坚持卸载微码(一般不推荐,除非确定 CPU 无需更新),需确保彻底清理:

  1. 卸载包并清除残留

    sudo pacman -Rns intel-ucode  # 卸载并删除依赖配置
    sudo rm /boot/intel-ucode.img # 确保文件被删除
    
  2. 重建 initramfs(部分内核需此步骤)

    sudo mkinitcpio -P  # 重新生成 initramfs,避免依赖微码
    
posted @ 2025-08-03 09:11  sunong  阅读(154)  评论(0)    收藏  举报
Sakana Widget右下角定位