修复 Ubuntu 在启动时冻结

本分步教程向您展示了如何通过安装专有的 NVIDIA 驱动程序来处理 Ubuntu 在启动时冻结的问题。 本教程是在新安装的 Ubuntu 系统上执行的,但它也应该适用于其他系统。

前几天我买了一个 宏碁捕食者笔记本电脑 (附属链接)测试各种 Linux 发行版。 这是一款笨重的笔记本电脑,与我喜欢的更小、更轻的笔记本电脑(如出色的戴尔 XPS)形成鲜明对比。

即使我不在PC上玩游戏,我也选择这款游戏笔记本电脑的原因是 英伟达显卡. 宏碁 Predator Helios 300 配备 英伟达 Geforce GTX 1050Ti。

NVIDIA 以与 Linux 的兼容性差而闻名。 许多 It’s FOSS 读者在他们的 NVIDIA 笔记本电脑上寻求我的帮助,但我无能为力,因为我没有配备 NVIDIA 显卡的系统。

因此,当我决定购买新的专用设备来测试 Linux 发行版时,我选择了配备 NVIDIA 显卡的笔记本电脑。

这款笔记本电脑配备了 Windows 10,安装在 120 GB SSD 和 1 TB HDD 上用于存储数据。 我使用 Ubuntu 18.04 双启动 Windows 10。 安装快速、简单且无痛。

我启动了 Ubuntu. 它正在显示熟悉的紫色屏幕,然后我注意到它冻结在那里。 鼠标不会移动,我无法输入任何内容,除了按住电源按钮关闭设备外,我什么也做不了。

在下一次登录尝试时也是如此。 甚至在到达登录屏幕之前,Ubuntu 就卡在了紫色屏幕上。

听起来很熟悉? 让我向您展示如何解决 Ubuntu 在登录时冻结的问题。

不使用 Ubuntu?

请注意,虽然本教程是使用 Ubuntu 18.04 执行的,但它也适用于其他基于 Ubuntu 的发行版,例如 Linux Mint、elementary OS 等。我已经使用 Zorin OS 确认了这一点。

修复 Ubuntu 由于图形驱动程序而在启动时冻结的问题

您可以在以下视频中观看如何解决此问题。

我用两种解决方案更新了本教程:一种适用于 Intel 和 NVIDIA/AMD,另一种专用于配备 AMD/NVIDIA 显卡的系统。 请检查您在 Linux 系统上使用的显卡。

事不宜迟,让我们看看如何解决这个问题。

第 1 步:编辑 Grub

当您启动系统时,只需在 Grub 屏幕上停止,如下图所示。 如果您没有看到此屏幕,请在启动时按住 Shift 键。

在此屏幕上,按“E”键进入编辑模式。

您应该会看到如下所示的某种代码。 您应该专注于以 Linux 开头的那一行。

第 2 步:在 Grub 中临时修改 Linux 内核参数

请记住,我们的问题在于 NVIDIA 显卡驱动程序。 与开源版本的 NVIDIA 驱动程序不兼容导致了这个问题,所以我们可以在这里做的是禁用这些驱动程序。

现在,您可以通过多种方式尝试禁用这些驱动程序。 我最喜欢的方法是使用 nomodeset 禁用所有视频/图形卡。

只需在以 Linux 开头的行的末尾添加以下文本。 你应该可以正常打字了。 只需确保将其添加到行尾即可。

nomodeset

现在你的屏幕应该是这样的:

按 Ctrl+X 或 F10 保存并退出。 现在您将在此处使用新修改的内核参数进行引导。

解释我们在这里所做的事情(点击展开)

那么,我们刚刚在这里做了什么? 什么是 nomodeset 的东西? 让我简单地给你解释一下。

通常,在启动 X 或任何其他显示服务器后使用视频/图形卡。 换句话说,当您登录到您的系统并查看图形用户界面时。

但最近,视频模式设置已移至内核。 除了其他好处之外,它还使您能够拥有漂亮的高分辨率启动闪屏。

如果将 nomodeset 参数添加到内核,它会指示内核在显示服务器启动后加载视频/图形驱动程序。

换句话说,您此时禁用了加载图形驱动程序,并且它引起的冲突消失了。 在您登录系统并查看所有内容后,因为图形卡再次加载。

疑难解答:即使使用 nomodeset 后也无法启动?

如果在 grub 中使用 nomodeset 不起作用并且您仍然无法启动,请尝试使用其他一些参数来代替 nomodeset。

按照与上述相同的步骤进行操作。 在编辑 grub 时,添加 新的.noaccel=1 代替 无模式集. Save 并退出 grub 看看你现在是否可以启动。

如果这不起作用,请尝试添加 noapic noacpi nosplash irqpoll 代替 安静的飞溅 在蛴螬中。

第 3 步:在 Grub 中进行永久性更改(如果您可以启动并且图形没有问题)

警告!

在某些情况下,根本不使用图形驱动程序或切换到开源驱动程序可能会导致分辨率不佳。 如果您遇到这种情况,请尝试按照备用步骤 3(下一节)中的说明切换到专有驱动程序。

不要因为您现在可以登录系统而太高兴了。 您所做的只是暂时的,下次启动系统时,您的系统仍将冻结,因为它仍会尝试加载图形驱动程序。

这是否意味着您总是必须从 grub 屏幕编辑内核? 值得庆幸的是,答案是否定的。

您可以在此处更改 grub 配置,以便 Linux 内核不会尝试在显示服务器之前加载图形驱动程序。

为此,请打开终端(使用 Ctrl+Alt+T 快捷键),然后使用以下命令在 Gedit 编辑器中打开 grub 配置文件:

sudo gedit /etc/default/grub 

您必须使用密码才能打开此文件。 打开文本文件后,查找包含以下内容的行: GRUB_CMDLINE_LINUX_DEFAULT="quiet splash".

将此行更改为: GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset"

它应该看起来像这样:

Save 文件并更新 grub 以使更改生效。 使用这个命令:

sudo update-grub

完成后,重新启动系统,它不应再冻结。

备用步骤 3:您可以启动但图形看起来很奇怪? 更新您的系统并安装专有图形驱动程序

如果您不想像上一步中提到的那样更改 Grub 配置,或者,您可以在 Ubuntu 中为 NVIDIA 和 AMD 安装额外的驱动程序。 使用这些专有驱动程序时,Ubuntu 不会在启动时冻结。

在 Ubuntu 和许多其他发行版中,您可以轻松地安装专有驱动程序。 在 Ubuntu 菜单中搜索“其他驱动程序”。 在这里,您可以找到适用于您系统的其他图形驱动程序。

单击以展开下一部分以查看安装附加驱动程序的详细步骤。

安装专有 NVIDIA 驱动程序(详细步骤)

我假设这是您第一次登录新安装的系统。 这意味着您必须先更新 Ubuntu,然后再执行其他任何操作。 在 Ubuntu 中使用 Ctrl+Alt+T 键盘快捷键打开终端并使用以下命令:

sudo apt update && sudo apt upgrade -y

您可以尝试在完成上述命令后立即在 Ubuntu 中安装其他驱动程序,但根据我的经验,您必须重新启动系统才能成功安装新驱动程序。 当您重新启动时,您将不得不再次更改内核参数,就像我们之前所做的那样。

更新并重新启动系统后,按 Windows 键进入菜单并搜索软件和更新。

现在转到附加驱动程序选项卡并等待几秒钟。 在这里,您将看到可用于您的系统的专有驱动程序。 您应该在此处的列表中看到 NVIDIA。

选择专有驱动程序并单击应用更改。

安装新驱动程序需要一些时间。 如果您在系统上启用了 UEFI 安全启动,系统还会要求您设置密码。 您可以将其设置为易于记忆的任何内容。 我将在后面的第 4 步中向您展示它的含义。

您可能需要设置安全启动密码

安装完成后,系统会要求您重新启动系统以使更改生效。

处理 MOK(仅适用于启用 UEFI 安全启动的设备)

如果您被要求设置安全启动密码,您会看到一个蓝屏,上面写着“MOK 管理”。 这是一个复杂的话题,我将尝试用更简单的术语来解释它。

马克杯 (机器所有者密钥) 是必需的,因为安全启动功能需要对所有内核模块进行签名。 Ubuntu 对它在 ISO 中提供的所有内核模块执行此操作。 因为您安装了新模块(附加驱动程序)或对内核模块进行了更改,您的安全系统可能会将其视为系统中的无根据/外来更改,并可能拒绝启动。

因此,您可以自行对内核模块进行签名(告诉您的 UEFI 系统不要因为您进行了这些更改而恐慌),或者您只需禁用安全启动。

既然你知道一点 安全启动和 MOK,我们来看看下次开机看到蓝屏的时候怎么办。

如果您选择“继续启动”,您的系统很可能会正常启动,而您根本不需要做任何事情。 但可能并非新驱动程序的所有功能都能正常工作。

这就是为什么,你应该 选择注册 MOK.

它将要求您在下一个屏幕中继续,然后询问密码。 使用您在上一步中安装附加驱动程序时设置的密码。 您将被要求立即重新启动。

别担心!

如果您错过了 MOK 的这个蓝屏或不小心点击了继续启动而不是 Enroll MOK,请不要惊慌。 您的主要目标是能够启动到您的系统,并且您已通过禁用 Nouveau 图形驱动程序成功完成了该部分。

最坏的情况是您的系统切换到集成 Intel 显卡而不是 NVIDIA 显卡。 您可以稍后随时安装 NVIDIA 图形驱动程序。 您的首要任务是启动系统。

安装新驱动程序后,您必须再次重新启动系统。 别担心! 现在情况应该会好一些,您将不再需要编辑内核参数。 您将立即启动进入 Ubuntu。

第 4 步:享受 Ubuntu Linux

我希望本教程可以帮助您解决 Ubuntu 在启动时冻结的问题,并且您能够启动到您的 Ubuntu 系统。

如果您有任何问题或建议,请在下面的评论部分告诉我。