文章

老平台安装Linux卡死问题

记录困惑已久的linux内核卡死问题,简述UEFI历史

老平台安装Linux卡死问题

老平台安装Linux卡死问题

不想看废话可以直接跳转这里

前言

一年以前,我有了装一台NAS的需求,考虑到电费和价格,遂购入了J1900平台

因为J1900刚好支持虚拟化,所以一开始想装OpenMediaVault

但是在安装过程中,遇到了一个少有的问题:

在插入安装盘,从grub中选择完启动项后,电脑像被限速了一样慢,具体表现为:

  • 内核日志每条都需要等几分钟才能加载
  • 日志时不时报错”无法跟上”
  • 等待一个小时才能进入文本安装界面,并且每个文本都是一秒一个地刷新,按下方向键要等半分钟才有反应

感觉就好像我在用i8086运行当代操作系统一样

在网上搜索问题,查询日志无果后我怀疑是live环境的问题

所以我换了主力机向硬盘里写入镜像,插入NAS开机,问题依旧

于是开始觉得是不是主板的问题,抱着试试看的心态,插入了WindowsPE,开机

没有任何问题

于是尝试Windows7,Windows8,Windows10,均无上述问题,最终由于实在没有精力和时间了,将系统稳定在了Windows Server 2012

发现问题

就这样使用了一年,能用好用,自己写的各类备份脚本也能正常运行,但是在这上面安装图形界面总感觉不爽

现在高考考完了,分数下来了,录取通知书到手了,休学在家无所事事了,干脆就来看看如何把Linux灌进去

一开始我怀疑是硬件问题,但是考虑到一年7*24小时不关机也没有事故发生,也不像

于是我重置了BIOS,尝试在里面接着调调改改,看看有没有改进

这时我发现这个主板的BIOS很多选项都是废的,Smart Fan不管怎么改总是满速运转

最后我改到了Launch CSM这一选项,我发现只要强制使用EFI就可以解决卡死的问题

然而在安装GRUB时总是失败,更换多个发行版也无果

最后找到了解决方法:

解决问题

  1. 使用Rufus刷写Linux安装镜像,勾选高级设备选项中的添加对旧BIOS修正(额外的分区、校准等)

  2. 在BIOS中关闭EFI/UEFI,仅使用Legacy(BIOS)进行传统启动

困扰了我一年的问题就这样解决了

原因

事实证明原来BIOS开发人员也偷懒,在GRUB的报错信息中赫然写道:

1
您的电脑似乎是由EFI引导,但是该配置可能无法从硬盘驱动器启动。一些EFI固件实现不符合EFI规范(也就是说很容易出错),并且即使引导选项配置正确,仍然不支持从系统硬盘启动

由于真的没有搜到原因,以下是个人的推断:

  • 早期的UEFI固件有兼容性问题,虽然名义上支持UEFI但实际上不完全遵守UEFI规范

EFI、UEFI历史

EFI (Extensible Firmware Interface)是由 Intel 公司在 1990 年代提出的一个新型固件接口标准,用来替代传统的 BIOS

最初用于 Intel 的 Itanium 平台,作为一种更现代的启动方式,解决 BIOS 在现代硬件上面临的局限性(例如无法支持超过 2TB 的硬盘等)

随着 EFI 的发展,UEFI(Unified Extensible Firmware Interface,统一可扩展固件接口)在 EFI 的基础上进行了标准化和改进,其中包括了:

  • 更好的跨平台支持
  • 安全启动
  • 支持GUI
  • 支持64位固件
  • 提供更广泛的驱动程序和应用扩展能力

所以在日常生活中UEFI已经成为行业标准,我们常说的EFI固件很大程度上指代的其实是UEFI固件

EFI Boot 或 UEFI Boot,它们本质上指的是 UEFI 启动

这个标准居然那么早就推出了

本文由作者按照 CC BY 4.0 进行授权