哪些命令可将Ubuntu BIOS安装转换为EFI / UEFI,而无需在单引导硬件上进行引导修复?


35

偶然的BIOS模式安装

我有带UEFI设置实用程序的Intel 64位硬件。Ubuntu 14.04.1 LTS被安装为唯一连接的驱动器上的唯一操作系统。偶然地,Ubuntu以BIOS / CSM /传统模式安装。

转换为UEFI

稍后了解UEFI时,目标是将现有的Ubuntu安装更改为通过EFI / UEFI引导(快速启动)。我仍然希望显示某种形式-2秒-引导菜单,允许我进入UEFI设置实用程序。因此,我认为我确实需要使用Grub(不能使用EFI引导存根),并且GOP支持需要Grub 1.99或更高版本。我已经使用Live CD对驱动器进行了重新分区,并在驱动器的开头插入了200 MiB EFI分区,并将fat16格式化的分区标记为id 0xEF。

之前:

# fdisk -l /dev/sda
...
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048   108478463    54238208   83  Linux
/dev/sda2       108480510   125044735     8282113    5  Extended
/dev/sda5       108480512   125044735     8282112   82  Linux swap / Solaris

后:

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *      411648   108478463    54033408   83  Linux
/dev/sda2       108480510   125044735     8282113    5  Extended
/dev/sda3            2048      411647      204800   ef  EFI (FAT-12/16/32)
/dev/sda5       108480512   125044735     8282112   82  Linux swap / Solaris

Partition table entries are not in disk order

请不进行引导修复

Ubuntu社区Wiki建议使用引导修复将Ubuntu转换为EFI模式。我不想使用GUI或安装任何额外的软件包,也不想将任何数据意外发送到pastebin.com,并且因为我确实想知道将要完全更改的内容,所以我不想使用Boot-repair

引擎盖下

为了弄清楚引导修复的实际作用,我发现了以下片段:

引导修复将通过卸载grub-pc并安装grub-efi(如果gpt已分区)将BIOS安装转换为UEFI。

来源:http : //ubuntuforums.org/showthread.php?t=2147295&p=12657352#post12657352

UEFI模式安装比较

在UEFI模式下进行的全新Ubuntu 14.04.1全新安装会创建512 MiB Fat32格式的EFI分区。该分区包含一个目录/EFI/ubuntu,包含4个文件:grub.cfggrubx64.efiMokManager.efishimx64.efi。grub.cfg包含:

search.fs_uuid 7d843e47-3917-4114-8725-55dfa1fbe002 root hd0,gpt2
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg

Search.fs_uuid指向Linux安装分区的UUID,在此比较中,UEFI安装Linux安装在分区/ dev / sda2 (与BIOS模式安装中的sda1相比)

找不到潜在的Asrock固件问题

仍在固件中禁用CSM并使用全新UEFI模式Ubuntu安装。使用Live CD将512 MiB EFI分区的大小调整为200 MiB,gparted结果是其格式从FAT32更改为FAT16。Asrock固件P1.50 (在启动消息“ BIOS date”中被AMI错误地称为BIOS)仍然能够启动到UEFI模式Ubuntu:UEFI + FAT16 = ok。使用相同的Live CD终端命令及其命令
将分区表从GPT转换为MBR(msdos)gdiskr g p w还会在MBR分区驱动器上生成UEFI可引导的Ubuntu:UEFI + MBR = ok

这是否意味着我只需要执行的命令(从旧版Ubuntu安装开始并按此顺序执行)是:

# apt-get install grub-efi
# apt-get remove grub-pc

?还是需要做更多的事情?


1
我仍然会使用启动修复。您认为您需要安装软件包...我认为您是错的。请参阅:askubuntu.com/questions/226061/...
Rinzwind

@Rinzwind我无法使用启动修复,因为当前的Ubuntu安装中没有GUI(仅适用于控制台),并且在Asrock的第一台USB UEFI启动设备中设置ubuntu-14.04.1-desktop-amd64.iso无法启动H81 Pro BTC P1.50 UEFI设置实用程序。
Pro Backup

1
Boot-Repair不是gui,而是带有使它更像gui的加载项之一的bash。随着新版本的Ubuntu软件包名称的改变,我认为现在是grub-efi-amd64或grub-efi-amd64-signed。可能是因为他们要释放名称更改的32位UEFI引导加载程序。Chroot版本,请注意您还安装了grub并创建grub.cfg。askubuntu.com/questions/53578/...
oldfred

@oldfred Boot-Repair取决于gui:apt-get install boot-repair在此Ubuntu服务器上执行安装,会导致245MB的GTK,如要安装的依赖项boot-repair。并且boot-repair向后执行命令失败。更新较新的grub-efi命名确实很有帮助。
Pro Backup

如果是Asrock,请确保您没有将驱动器或DVD驱动器连接到Asmedia端口。他们没有司机。如果在UEFI中启动,最好只将gpt分区驱动器。rodsbooks.com/gdisk/hybrid.html
oldfred 2014年

Answers:


40

在UEFI模式下启动Ubuntu Linux(14.04)Live CD。如果是USB启动设备,请在UEFI中禁用“快速启动”。

打开一个终端窗口(Ctrl+ Alt+ T

要验证您是否实际上在UEFI模式下运行,请使用以下bash命令:

$ [ -d /sys/firmware/efi ] && echo UEFI || echo BIOS

结果输出应为:

UEFI

如果显示BIOS,请重新引导至固件并更正引导设备首选项。

要执行BIOS到EFI / UEFI的转换,请输入以下命令:

$ sudo mount /dev/sda1 /mnt
$ sudo mkdir -p /mnt/boot/efi
$ sudo mount /dev/sda3 /mnt/boot/efi
$ sudo mount --bind /dev /mnt/dev
$ sudo mount --bind /proc /mnt/proc
$ sudo mount --bind /sys /mnt/sys
$ sudo mount --bind /run /mnt/run
$ modprobe efivars
$ sudo chroot /mnt
# apt-get install grub-efi-amd64

The following extra packages will be installed:
  efibootmgr grub-efi-amd64-bin
The following packages will be removed:
  grub-gfxpayload-lists grub-pc
...
After this operation, 2,399 kB of additional disk space will be used.

# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu --recheck --no-floppy --debug

尽管以错误消息结尾:

Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
Try 'modprobe efivars' as root.

下次重新引导已在固件的引导选项菜单中显示为“ ubuntu ”,并像以前一样引导至控制台,但现在以efi模式引导:

$ dmesg | grep EFI
efi: EFI v2.31 by American Megatrends
fb0: EFI VGA frame buffer device
EFI Variables Facility v0.08 2004-May-17
fb: switching to inteldrmfb from EFI VGA

万一出问题了,https://superuser.com/questions/376470/how-to-reinstall-grub2-efi可能会有所帮助。


这帮助我升级了硬盘驱动器,并无需重新安装即可转换为GPT / UEFI / SecureBoot。谢谢。注意事项:我需要使用该grub-efi-amd64-signed软件包,以避免在UEFI BIOS中禁用SecureBoot时遇到麻烦。
罗比·巴萨克

现在是2018年,EFI的问题仍然存在。甚至安装了efi引导程序,但最终出现在grub cli中。我放弃了Ubuntu。
Abhishek Dujari

这在Ubuntu 19.10下对我有用。我用EFI引导了实时USB,并在磁盘末尾添加了一个用于EFI的FAT32类型的200MB分区。
乔伊·亚当斯

1

只需稍作改动,这对我也起作用。即使网络正在运行,我也无法通过“ apt-get install grub-efi-amd64”找到任何软件包服务器。

我通过最后一次以BIOS模式启动并安装grub-efi-amd64来解决此问题。

然后,除了省略“ apt-get install grub-efi-amd64”之外,我可以按照此处的步骤进行操作。


1

小修正:

sudo apt-get install -y grub-efi-amd64
sudo mount /dev/sda1 /mnt
sudo mkdir -p /mnt/boot/efi
sudo mount /dev/sda3 /mnt/boot/efi
for d in dev sys proc usr run; do sudo mount -B /$d /mnt/$d; done
sudo modprobe efivars
sudo chroot /mnt
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu --recheck --no-floppy --debug

做完了


您能否解释一下为什么要从OP的答案中建议这些更改?………………请不要发表评论;编辑  您的答案,使其更清晰,更完整。
G-Man说“恢复莫妮卡”
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.