我最近升级了我的 PC,我的新主板 (ASUS M5A99X EVO) 使用 UEFi 而不是常规 MBR 选项。
我有一个 Ubuntu 11.10 安装,当我有我以前的硬件 (MSI MS 7267) 时,Ubuntu 单独启动很好,Windows 7 也是如此,但是 Windows 7 使用 UEFI (GPT) 启动,而 Ubuntu 使用 MBR。
我的操作系统位于不同的驱动器中,因此 GRUB2 不会被 Windows 引导加载程序替换,反之亦然,正如我所说的,两个操作系统都可以自行正常启动,但要做到这一点,我必须断开一个驱动器,在这种情况下,Ubuntu 驱动器作为它会阻止 Windows 加载。
现在我的问题是,如何更改/转换 Ubuntu 的驱动器,以便它使用 GPT 而不是使用 MBR 并允许 Windows 启动?。
最好不要重新安装整个系统或丢失任何数据。
如果我要擦除驱动器,如何在 GPT、UEFI 中安装 Ubuntu,无论它是什么模式?。
我已经使用 gdisk 从 MBR 转换为 GPT,但现在 Ubuntu 无法启动,好像 grub 无法启动。
我已经重新安装了操作系统,默认情况下驱动器现在是 GPT,但grup-pc
仍在使用而不是grub-efi
.
如何让 Ubuntu 从 EFI 启动?
如果您在 grub 菜单中按 Esc 键,您最终会进入 grub 命令提示符。
我的问题是,如何在不重新启动的情况下返回菜单?
我运行的是Ubuntu 20.04,我不小心删除了EFI分区(该死的GParted!)系统仍在运行。我可以在现在未使用的区域中创建一个新分区,设置 EFI 标志和引导标志,然后运行 update-grub 吗?update-grub 会重新填充 EFI 分区吗?我可以从另一个 Ubuntu 安装中 DD EFI 分区吗?
回复很快, 非常感谢!
我的 Ubuntu (20.04) 软件提示有新固件可用:( UEFI dbx 77--> 217
?),但是当我尝试更新时收到以下错误消息:
Impossible to update UEFI dbx.
Blocked executable in the ESP, ensure grub and shim are up to date:/boot/efi/EFI/Boot/shimx64.efi Authenticode checksum [_checksum code_] is presente in dbx.
Run Code Online (Sandbox Code Playgroud)
我不太确定这意味着什么,如果我理解正确的话,为什么它会从版本 77 跳到 217。有关系统的更多详细信息:
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
Address sizes: 39 bits physical, 48 bits virtual
CPU(s): 12
On-line CPU(s) list: 0-11
Thread(s) per core: 2
Core(s) per socket: 6
Socket(s): 1
NUMA node(s): 1
Vendor ID: …
Run Code Online (Sandbox Code Playgroud) 我在系统建议的 2021-05-02 上运行升级时遇到此错误:
grub-efi-amd64-signed:
Depends: grub2-common (>= 2.02~beta2-36ubuntu3.31) but 2.04-1ubuntu26.11 is to be installed
Run Code Online (Sandbox Code Playgroud) 我刚刚在 EFI 模式下在我的新笔记本电脑上安装了 Ubuntu 12(预装了 Win7 64 位),现在我无法再加载 Win7(Ubuntu 刚从 grub 加载得很好)。当我在 grub 菜单中选择 Windows 7 条目时,出现此错误:
Invalid EFI file path
Run Code Online (Sandbox Code Playgroud)
grub.cfg 条目(由 boot-repair 生成)是:
menuentry "Windows 7 (loader) (on /dev/sda3)" --class windows --class os {
insmod part_gpt
insmod ntfs
set root='(hd0,gpt3)'
search --no-floppy --fs-uuid --set=root B8449665449625E2
chainloader +1
}
Run Code Online (Sandbox Code Playgroud)
这是分开的输出:
GNU Parted 2.3
Viene usato /dev/sda
Benvenuti in GNU Parted. Digitare "help" per l'elenco dei comandi.
(parted) print list
Modello: ATA ST9500325AS (scsi)
Disco /dev/sda: 500GB
Dimensione del settore …
Run Code Online (Sandbox Code Playgroud) 我曾经通过软件 RAID1 安装带有 LVM 的服务器,并在两个驱动器的 MBR 上安装 grub。现在我有一个 UEFI 服务器,并且兼容性(BIOS)模式似乎不起作用。
所以我采用了 UEFI 安装的方式。
第一次测试,单驱动安装工作正常。
然后我尝试使用 RAID1 + LVM 进行安装。我以同样的方式对我的两个驱动器进行了分区:
然后我进行了设置: - 使用两个磁盘 RAID 分区的 RAID 1 - RAID 1 阵列上的 LVM 卷组 - 三个逻辑卷:/、/home 和交换
安装继续进行,但在重新启动时,我得到了一个 grub shell 并且卡住了。
那么,是否可以通过 RAID1 在 LVM 上使用 grub2-efi 工作?实现这一目标的方法是什么?是否有其他引导加载程序替代方案(从 EFI 直接加载 linux ??)?等等...
sudo do-release-upgrade
今天早上运行将我的系统从 Ubtunu 17.10 升级到 18.04 LTS 后,我在升级过程中遇到了错误。跟踪太长而无法完整发布,但这里是(对我来说)看起来像问题的部分:
Rebuilding /usr/share/applications/bamf-2.index...
Errors were encountered while processing:
shim-signed
grub-efi-amd64-signed
Exception during pm.DoInstall(): E:Sub-process /usr/bin/dpkg returned an error code (1)
Could not install the upgrades
The upgrade has aborted. Your system could be in an unusable state. A
recovery will run now (dpkg --configure -a).
Setting up shim-signed (1.34.9+13-0ubuntu2) ...
Installing for x86_64-efi platform.
Could not add entry to BootOrder: Interrupted system call
grub-install: error: efibootmgr failed to register the …
Run Code Online (Sandbox Code Playgroud) 我是新来的,所以如果我的问题不正式正确,我提前道歉。
\n我有一个双启动系统,位于两个不同的磁盘上。\nWindows 预安装在第一个驱动器 (500 Gb) 上,然后我按照本讨论双启动 win 10 和 Ubuntu中的答案在第二个 1 Tb 驱动器上安装了 ubuntu 20.04 18.04 在两个独立的物理 SSD 上(我发现它非常有用且清晰)。\n两个磁盘都是 SSD。系统是完整的 uefi。\n因为我想完全隔离两个不同的操作系统,所以我像这样配置了第二个驱动器:
\n在 ubuntu 安装过程中,我没有拔掉第一个驱动器(Windows 所在的位置),并且我难以置信地跳过了(我知道这是我的错)\xe2\x80\x9cworkaround\xe2\x80\x9d 步骤以避免安装第一个驱动器上的 ubuntu 引导加载程序(这种情况被称为错误,正如我在之前链接的讨论中读到的那样)。\n因此,即使我选择 \xe2\x80\x9csdb1\xe2\x80\x9d 分区(刚刚创建)在\xe2\x80\x9c用于引导加载程序安装的设备\xe2\x80\x9d菜单中,可能发生了该错误,或者只是我的选择被忽略了。\n现在我有两个问题,这对我来说代表了恢复这种情况的两种替代方法:
\n1 \xe2\x80\x93 我可以将 ubuntu 引导加载程序从第一个驱动器移动到第二个驱动器中的 Efi 分区吗?如果是,我该怎么做?我希望通过这种方式隔离两个OS。
\n如果没有,第二个问题是:
\n2 \xe2\x80\x93 由于 ubuntu bootloader 现在安装在第一个驱动器的 Efi 分区上,我可以删除在安装过程中创建的第二个驱动器的 Efi 分区吗?事实上我看到这个分区是空的并且未安装,所以基本上没有被利用。
\n出于安全原因,我想在使用 UEFI 的单硬盘计算机上安装一个辅助的完全独立的操作系统。两种安装都应该能够使用不同的 LUKS 加密分区作为根设备(加密之上的 LVM)并且需要能够使用自己的内核。
使用两个不同的操作系统进行双启动并不是什么大问题。Ubuntu 和 Fedora 不会干扰并且可以共享 EFI 系统分区,但是两个 Ubuntu 安装会相互竞争,因为它们都希望在同一个 EFI 位置安装它们的 Grub 实例。
有没有办法更改 Ubuntu 以将 Grub 安装在与安装/boot/efi/EFI/ubuntu
期间不同的位置?我需要一种持久的方式,以便软件包更新和内核/grub 更新仍然安装在该路径中。就像 Fedora 的 Grub 在/boot/efi/EFI/fedora
. 我在 Grub 中找不到那个配置选项。如果可以,我的戴尔 UEFI 启动菜单将允许我选择要加载的操作系统。也许我在这里缺少 efibootmgr 和 grub-efi 之间的一些胶水。
或者,是否可以从两个 Ubuntu 安装之一中使用单个 Grub 安装并让它自动检测正确的启动设置?我的意思是,我知道os-prober
会找到/boot
带有内核的另一个分区,但是它如何知道该操作系统的正确引导参数(例如,锁定加密卷中的 LVM 卷作为根文件系统)?我可以理解它可以与未加密的单分区安装一起使用,但它无法/boot
与其对应的根文件系统匹配,对吗?如果加密,这是完全不可能的。因此,这需要对 grub 配置文件进行大量手动调整。我也不喜欢这种单一共享引导加载程序配置的选项,这在某种程度上降低了两个操作系统的隔离度。
顺便说一下,我对基于服务器文本的专家安装很好。还有一些自定义配置,只要我不必为每个内核/Grub 更新重复这些步骤。