这是nerasezi在Ubuntu论坛上修改过的帖子
UEFI的主要来源是Ubuntu UEFI指南
他所做的步骤如下:
使用与UEFI架构相匹配的Live CD。大多数是x86-64。
启动Live CD(xubuntu或lubuntu。这些都是轻量级桌面环境,但也可以使用Ubuntu和kubuntu)。
确保您的Live系统以UEFI模式启动。您可以在UEFI设置中检查它,可能在“引导选项”或类似位置。在我的情况下,它只是在设备名称前加上了“UEFI”前缀。
一旦Live系统运行起来,在终端中通过输入以下命令设置root密码:
sudo passwd root
然后退出默认的Live CD用户,并以root身份登录到图形界面。
插入硬盘。我使用的是USB3便携式硬盘,但在大多数情况下,硬盘是SATA内部硬盘。无论如何,请确保您已备份所有数据,因为该过程将清除驱动器上的所有内容。
启动Gparted(图形界面工具比文本工具更容易操作),并选择要安装系统的驱动器。(务必选择正确的驱动器!)
指向顶部菜单,选择“设备”>“创建分区表”...会弹出一个警告消息。点击“高级”并选择“gpt”。点击“确定”。
新的GPT磁盘布局已创建。
现在您需要在其上创建分区。非常重要的是,您需要创建一个FAT32卷作为第一个主分区,并将其标记为EFI。创建分区后,右键单击它并选择“管理标志”。勾选“引导”标志,然后点击“确定”。
继续创建/分区(您可能希望将/home和/boot分开。按照您通常的做法进行操作。在我的情况下,我只创建了/分区)和交换区域。始终首选主分区,因为使用GPT,4个主分区的限制已被移除。
关闭Gparted。
将系统安装到硬盘的“/”分区,并记得将引导加载程序(GRUB 1.99)安装到此处。如果您创建了单独的“/boot”分区,则必须选择该分区进行引导加载程序的安装。
接下来是UEFI引导指南的部分:
构建GRUB2 (U)EFI
下载最新的grub2源代码ZIP文件。ftp://ftp.gnu.org/gnu/grub/
构建grub2需要安装以下程序(构建依赖项):
bison
autoconf
automake
flex
autogen
python(2.x系列)(用于从bzr存储库构建时的autogen.sh)
texinfo
help2man
gettext(NLS支持)
device-mapper
freetype2(libs)
sudo apt-get install bison libopts25 libselinux1-dev autogen m4 autoconf help2man libopts25-dev flex libfont-freetype-perl automake autotools-dev freetype2-demos texinfo efibootmgr
添加了efibootmgr到您需要安装的软件中,因为您以后会需要它。
对于64位(U)EFI:
export EFI_ARCH=x86_64
./configure --with-platform=efi --target=${EFI_ARCH} --program-prefix=""
make
如果您使用的是32位架构,请查看我在顶部提供的链接上的在线文档。
在(U)EFI系统中安装GRUB2
确定您的EFI系统分区。(如果设置在第二个硬盘上,它应该是/dev/sda1或/dev/sdb1)
然后将分区挂载到/mnt/EFISYS(或任何您希望的挂载点)。以下代码假设/dev/sda1是EFISYS分区。
sudo mkdir -p /mnt/EFISYS
sudo modprobe dm-mod
sudo mount -t vfat -o rw,users /dev/sda1 /mnt/EFISYS
sudo mkdir -p /mnt/EFISYS/efi/grub
然后,为GRUB构建一个EFI应用程序,并复制它和其他模块:
进入“grub2编译源代码/grub-core”目录 - 默认:/usr/lib/grub/{EFI_ARCH}
grub-mkimage -O ${EFI_ARCH}-efi -d . -o grub.efi -p "" part_gpt part_msdos ntfs ntfscomp hfsplus fat ext2 normal chain boot configfile linux multiboot
sudo cp grub.efi *.mod *.lst /mnt/EFISYS/efi/grub
注意:-p ""选项对于创建可移植的grub.efi应用程序很重要。现在在/mnt/EFISYS/efi/grub中创建一个grub.cfg:
sudo touch /mnt/EFISYS/efi/grub/grub.cfg
将固件设置为默认启动GRUB2 (U)EFI
对于非Mac UEFI系统,使用efibootmgr来修改UEFI固件引导管理器。这需要在UEFI模式下启动内核,并且内核处理器架构应与固件架构匹配(并且未使用'noefi'),以便加载'efivars'内核模块并让efibootmgr访问引导管理器变量。最初,如果在BIOS模式下安装了grub2-efi,则需要手动从固件控制台启动"efi/grub/grub.efi"。然后运行efibootmgr来创建引导项。
sudo modprobe efivars
进入"grub2编译源码/grub-core"目录
grub-probe --target=device /boot/efi/efi/grub/grub.efi
假设grub-probe的输出为/dev/sda1
sudo efibootmgr --create --gpt --disk /dev/sda --part 1 --write-signature --label "GRUB2" --loader "\\EFI\\grub\\grub.efi"
在上述命令中,/boot/efi/efi/grub/grub/efi 可以分解为 /boot/efi 和 /efi/grub/grub.efi,对应的是 (/dev/sda) -> 分区1 -> \EFI\grub\grub.efi。
1. 打开Synaptic并删除所有的grub软件包,只安装grub-efi软件包(对于我来说是amd64),以及所有必要的依赖项。
安装完成后,在终端中运行sudo update-grub。您应该编辑/boot/grub下的"grub.cfg"文件,并检查磁盘UUID是否与您的磁盘和分区匹配,"insmod part_"和"set root='(hd0,"这两个地方是否有"gpt"文本行。如果一切正常,将"grub.cfg"复制到EFI系统分区下的"efi/grub"目录中。
如果之前提到的任何内容不匹配,只需编辑grub.cfg并手动更改相应的值。然后将该文件复制到Efi系统分区下的"efi/grub"目录中(应仍然挂载在/mnt下)。
然后当我重新启动系统时,在UEFI设置的引导选项卡下出现了一个名为GRUB2的新条目,并将其设置为默认引导选项。