请稍等片刻,然后再将其标记为离题。我不敢相信这与 Ubuntu 无关,因为这一切都是在我安装 Ubuntu 后发生的。
话虽如此,我将继续解释正在发生的事情:
我下载并安装了最新版本的 Ubuntu。我想要一个 BIOS 模式,因为我更喜欢这种方式,然后完成了安装过程。然后我安装了 GNOME 并重新启动。完成所有这些后,我无法访问我的 BIOS。
这不是第一次发生这种情况。以前也发生过这种情况,我使用辅助硬盘解决了引导修复中切换引导分区的问题,但现在我无法再这样做了,因为该驱动器上没有 Windows 分区。
这是我的驱动器:
Disk /dev/sdb: 119,2 GiB, 128035676160 bytes, 250069680 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xcaa3841c
Device Boot Start End Sectors Size Id Type
/dev/sdb1 * 2048 250068991 250066944 119,2G 83 Linux
当我尝试启动修复时,在过程结束时它说我必须在分区列表的开头创建一个 500mb 的分区,以便 grub 能够正常工作,但是,嘿,这里还有另一个问题:
GParted 停止工作。如果我尝试启动它,会出现以下错误:
Created symlink /run/systemd/system/-.mount → /dev/null.
Created symlink /run/systemd/system/mnt-Archive.mount → /dev/null.
Created symlink /run/systemd/system/mnt-Linux\x20Games.mount → /dev/null.
Created symlink /run/systemd/system/run-user-1000.mount → /dev/null.
Created symlink /run/systemd/system/tmp.mount → /dev/null.
/usr/sbin/gpartedbin: error while loading shared libraries: libgtkmm-2.4.so.1: cannot open shared object file: No such file or directory
Removed /run/systemd/system/-.mount.
Removed /run/systemd/system/mnt-Archive.mount.
Removed /run/systemd/system/mnt-Linux\x20Games.mount.
Removed /run/systemd/system/run-user-1000.mount.
Removed /run/systemd/system/tmp.mount.
我想提一下:
- 是的,我确定我使用正确的按钮进入 BIOS
- 没有 bios 启动画面
- 不,如果我按下DEL按键进入 BIOS,什么也不会发生
- 是的,钥匙很好用
- 是的,我尝试拔掉所有驱动器
- 是的,我尝试重置 CMOS
- 是的,我在 BIOS 模式下安装了操作系统,并通过终端进行了检查。
这是 boot-repair 的输出
这是消息警报,说我需要创建一个分区才能正确启动:
[当前正在使用的操作系统 - Ubuntu 17.04] 的启动文件距离磁盘的起始位置较远。您的 BIOS 可能无法检测到它们。您可能需要在创建分区
/boot
(EXT4,>200MB,磁盘的起始位置)后重试。这可以通过 gParted 等工具执行。然后通过 [Boot Repair] 的 [Separate /boot partion:] 选项选择此分区。(https://help.ubuntu.com/community/BootPartition)
答案1
自从从 BIOS 切换到 EFI 以来,我已经看到很多关于 EFI 拒绝启动其设置实用程序的报告。我还没有密切跟踪这些报告以识别模式(例如,特定固件供应商或主板/计算机品牌是否比其他品牌的问题更多?),但这绝对属于固件错误,而不是操作系统错误。也就是说,它可能是由操作系统对固件设置(例如启动顺序)所做的更改触发的。您的情况不同寻常之处在于您进行了 BIOS/CSM/传统模式安装,这意味着操作系统安装不应该进行此类更改。我猜是您在固件中从 EFI 模式更改为 BIOS 模式启动本身导致了该错误的出现;或者可能是更改了其他固件设置。
有多种方法可以解决此问题,例如:
- 您可以拔下硬盘并启动计算机。这通常会启动安装实用程序。
- 如果您以 EFI 模式启动 Ubuntu(例如,安装程序以这种方式启动),则输入
sudo systemctl reboot --firmware-setup
shell 应该会重新启动到固件设置实用程序。 - 一些 EFI 模式(但不是 BIOS 模式)启动管理器提供了启动到固件设置实用程序的选项。GRUB 具有此功能,但我不确定它是否在 Ubuntu 中默认启用,而且由于您使用的是 BIOS 模式版本,因此这一点毫无意义。您能,不过,用我的rEFInd 启动管理器在 USB 闪存驱动器或 CD-R 上(我刚刚链接到的页面上有两者的下载图像)。该选项应出现在第二行(较小)图标上。
systemctl
如果您愿意,您还可以使用 rEFInd 将常规安装引导至 EFI 模式以使用。
请注意,启动修复不太可能解决问题,因为它是由固件问题引起的前GRUB(或 Ubuntu 提供的任何其他程序)控制计算机。
进入设置实用程序后,使用将固件重置为默认值的选项可能会解决问题,但我不能保证这一点。考虑到您的配置,您需要重新打开 CSM 或将 EFI 模式引导加载程序添加到磁盘以再次启动,并且这两种方法都存在至少重新产生问题的风险。
由于这是一个固件错误,因此向制造商寻求更新是值得的。如果没有更新,我建议您报告该错误;如果制造商不知道错误存在,他们就无法修复错误。
请注意,此案例说明了在 EFI 模式下启动的一个优点:有多种方法可以从启动管理器或操作系统进入固件设置实用程序。EFI 模式启动通常也更快一些,对大型(超过 2TiB)磁盘的限制较少,支持安全启动,它是现代硬件上的本机启动模式(这意味着它不太可能造成混淆,如我的这个页面),并且它与 BIOS 模式启动相比还有一些其他小优势。出于这些原因,我通常建议在新硬件上进行 EFI 模式安装,除非有令人信服的理由进行 BIOS 模式安装。
您可以放心地忽略有关引导文件位于远离磁盘起始位置的投诉。这是 BIOS 中反复出现的问题,而“远”的定义会随着时间的推移而变化。您的磁盘只有 119.2 GiB,但需要注意的是,您显示了 的输出,/dev/sdb
但没有显示 的输出/dev/sda
,因此如果/dev/sda
更大并且引导加载程序安装在那里,则可能会出现问题。在大多数现代计算机上,我预计 BIOS(或 EFI 的 CSM)能够读取最多 2 TiB,因此任何小于该大小的磁盘都应该没问题。
我怀疑您的 GParted 问题与其他问题无关,但确实很麻烦。它们可能表示磁盘出现故障——但更可能是随机文件系统损坏,特别是当计算机在任何时候挂起或完全崩溃时。我强烈建议您调查这个问题,但由于我怀疑这是与您的主要问题无关的问题,因此我不会在此提供建议。
答案2
我是这样解决这个问题的:
- 关掉电脑。
- 拔下电源线。
- 拔下显卡和内存
- 拔主板电池
- 使用螺丝刀重置 CMOS
- 按下开机按钮给主板放电
- 重新插入主板电池、电源线和视频线(至主板)
- 插槽 1 中仅使用一根内存条
- 打开电脑并等待 BIOS 启动画面
- 如果出现 BIOS,请关闭电脑,重新插上所有东西,然后访问 BIOS
- 如果 BIOS 没有显示,请从 1 开始重复,并等待 15-20 分钟,然后再将所有东西插回去
当我第一次在 SSD 上安装 Linux 时,确实存在分区问题。不知何故,即使我在传统 (BIOS) 模式下安装它,Ubuntu 也认为它处于 UEFI 模式,因此它正在使用 grub 寻找启动分区。当我第一次安装 Linux 时单击“清除所有内容并安装”时,安装程序没有为 Ubuntu 创建额外的分区(这是因为我确实在传统模式下启动了安装驱动器!)。
我建议备份您的驱动器并进行全新安装。
为了防止将来出现错误,请使用自定义安装模式,无论您是在 UEFI 还是传统(BIOS)模式下安装:
- 创建一个新的分区表,删除所有以前的分区
- 创建一个额外的主分区(来自可用空间),大小为 500mb,标记为“EFI 分区”
- 将所有可用空间(如果您愿意,可以为交换空间留下更多的可用空间)分配给操作系统,将其格式化为 ext4 主分区并用作
/
挂载点。 - 将您创建 500mb efi 分区的驱动器设置为 Ubuntu 可以安装 grub 的路径(例如:如果您的驱动器是 /dev/sda 而您的 efi 分区是 /dev/sda2,则仍然选择 /dev/sda 作为分区!)
- 单击列表中您创建的最大分区,最后单击“安装”。