Blue Achieve
947 字
5 分钟
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 都可以用):
- 编辑 GRUB 配置文件:
sudo nano /etc/default/grub- 在
GRUB_CMDLINE_LINUX中添加禁用参数:
找到以GRUB_CMDLINE_LINUX=开头的行,在引号内添加dis_ucode_ldr参数:
GRUB_CMDLINE_LINUX="...原有参数... dis_ucode_ldr"示例(修改后可能类似这样):
GRUB_CMDLINE_LINUX="quiet splash dis_ucode_ldr"- 保存并更新 GRUB:
按Ctrl+X→ 输入Y→ 回车保存文件,然后执行:
sudo update-grub- 重启系统:
sudo reboot3.2 方法 2:禁止微代码集成到 initramfs(linuxmint 可行、Manjaro 不可行)
若降级无效,需彻底阻止微代码被加载到初始内存盘:
- 编辑微代码配置文件:
sudo nano /etc/default/intel-microcode- 修改为以下内容:
IUCODE_TOOL_INITRAMFS=no- 重新生成 initramfs:
sudo update-initramfs -u # Ubuntu/Debiansudo dracut -f # Fedora/openSUSE3.3 方法 3:降级 Intel 微代码(没试过)
- 进入 Recovery Mode 选择
resume进入系统。 - 执行以下命令安装旧版微代码包:
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+O→Enter→Ctrl+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 的依赖,并重新生成引导文件:
- 使用 Arch Linux 安装介质启动
从 USB 安装盘启动,选择 “Troubleshooting” → “Boot Arch Linux” 进入临时系统。 - 挂载原系统分区
假设根分区为/dev/nvme0n1p2,EFI 分区为/dev/nvme0n1p1:
mount /dev/nvme0n1p2 /mnt # 挂载根分区mount /dev/nvme0n1p1 /mnt/boot # 挂载 EFI 分区arch-chroot /mnt # 切换到原系统环境- 修改 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- 退出并重启
exitumount -R /mntreboot4.2 可能的正确删除方法
若你坚持卸载微码(一般不推荐,除非确定 CPU 无需更新),需确保彻底清理:
- 卸载包并清除残留
sudo pacman -Rns intel-ucode # 卸载并删除依赖配置sudo rm /boot/intel-ucode.img # 确保文件被删除- 重建 initramfs(部分内核需此步骤)
sudo mkinitcpio -P # 重新生成 initramfs,避免依赖微码 linux开机黑屏的一种解决方案
https://mizuki.mysqil.com/posts/linux/linux开机黑屏的一种解决方案微代码/ 部分信息可能已经过时