在单引导硬件上没有启动修复的情况下,将Ubuntu BIOS安装转换为EFI / UEFI的命令是什么?
意外BIOS模式安装
我有英特尔64位硬件和UEFI设置实用程序。 Ubuntu 14.04.1 LTS作为唯一的操作系统安装在唯一的驱动器上。 无意中Ubuntu安装在BIOS / CSM / legacy模式下。
转换为UEFI
在稍后了解UEFI时,目标是通过EFI / UEFI将现有的Ubuntu安装更改为(更快)启动。 我仍然想要某种 – 显示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建议使用boot-repair 将Ubuntu转换为EFI模式 。 我不想使用GUI,或安装任何额外的软件包,我不希望任何数据被意外发送到pastebin.com,因为我想知道将要更改的内容,我不想使用Boot-repair 。
在引擎盖下
试图弄清楚启动修复实际上做了什么,我找到了这个片段:
如果gpt已分区,Boot-Repair将通过卸载grub-pc并安装grub-efi将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.cfg
, grubx64.efi
, MokManager.efi
和shimx64.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和gparted
将512 MiB EFI分区的大小调整为200 MiB会导致其格式从FAT32更改为FAT16。 Asrock固件P1.50 (在引导消息“BIOS date”中由AMI错误地称为BIOS)仍然能够启动到UEFI模式Ubuntu: UEFI + FAT16 = ok 。
使用相同的Live CD终端命令gdisk
及其命令r
g
p
w
将分区表从GPT转换为MBR (msdos)也会导致MBR分区驱动器上的UEFI可引导Ubuntu: UEFI + MBR = ok 。
题
这是否意味着我需要执行的唯一命令 – 从传统的Ubuntu安装和按此顺序执行 – 是:
# apt-get install grub-efi # apt-get remove grub-pc
? 还是更需要做?
在UEFI模式下启动Ubuntu Linux(14.04)Live CD。 如果是USB启动设备,请在UEFI中禁用“快速启动”。
打开终端窗口( Ctrl + Alt + T )
要validation您实际上是否在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可能会有所帮助。