我准备购买配备EFI固件的华硕主板,并准备为硬件到来后安装Windows和Debian做准备。我希望走这条路的人能给我一些指导。
在尝试在新的基于UEFI的系统上安装Windows 7和Debian之前,我应该做哪些准备工作?
我准备购买配备EFI固件的华硕主板,并准备为硬件到来后安装Windows和Debian做准备。我希望走这条路的人能给我一些指导。
在尝试在新的基于UEFI的系统上安装Windows 7和Debian之前,我应该做哪些准备工作?
Answers:
编辑:当我写这个答案时,很少有EFI_STUB配置内核附带的发行版,因此必须构建一个自定义版本。如今,大多数发行版都附带了适当配置的内核,并且不再需要自定义版本。在这种情况下,“设置分区”和“设置内容”部分是有趣的部分,可以跳过“需求”和“编译内核”。
我不知道Windows如何处理UEFI,但从Debian角度来看,这非常简单。
使用GPT分区方案,而不是MBR。
要使用UEFI从GPT分区启动,必须使用专用的启动分区,称为EFI SYSTEM PARTITION(ESP)。这不是强制性的,但最兼容的方法是使用FAT32分区。在大多数情况下,200 MiB的大小应该可以。
要将分区注册为ESP,必须使用该boot
标志对其进行标记。与MBR方案相比,引导标志仅用于指示ESP,而不用于指示要从中引导的分区。
UEFI使用目录结构\EFI\<vendor>\<application>.efi
来存储UEFI应用程序。即使在Linux上,目录分隔符也用反斜杠表示。 可能是分配名称,实际值与UEFI不相关。
应用程序可以是系统实用程序,例如内存检查器或UEFI Shell。它也可以是OS加载程序或操作系统本身。这些应用程序需要在UEFI中注册才能在启动时启动。
UEFI可以直接加载Linux内核版本> = 3.3。内核可以充当自己的加载器。这称为EFISTUB。需要以下内核配置。
CONFIG_EFI = y CONFIG_EFI_PARTITION = y CONFIG_EFI_STUB = y CONFIG_RELOCATABLE = y CONFIG_FB_EFI = y CONFIG_FRAMEBUFFER_CONSOLE = y CONFIG_EFI_VARS = m
具有此配置的内核目前尚未在Debian中稳定。您可以烘烤自己的内核,也可以使用实验树中的内核,在这种情况下,可以跳过下一段。
(可能不再需要,请参见编辑)
如果您决定编译内核,这里有简短的说明。如果您遇到问题,则有很多有关如何编译内核的信息。
获取来源
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
签出一个特定的版本
git checkout v3.6
配置内核
制作menuconfig
进行系统上所需的设置,或者如果您无需自定义,则将其保留不变。这会将内核配置写入文件.config
。
确保已设置上一段中的设置。选择也很有意义CONFIG_INPUT_EVBUG=n
。否则,您的日志将充满GiB的垃圾邮件。
构建内核
INSTALL_MOD_STRIP = 1 make-kpkg --uc --us二进制文件
软件包在父目录中创建。
安装内核
dpkg -i linux-image-3.5.0_Custom.deb linux-headers-3.5.0_Custom.deb
构建initramfs
mkinitramfs -o /boot/initrd.img-3.6.0-amd64 3.6.0
3.6.0是内核版本。它默认为正在运行的内核,这不是一个好选择,因为您仍在运行旧内核。
为了能够启动Linux内核,必须将它与initramfs一起复制到ESP。鉴于ESP安装在/boot/efi
/boot/efi/EFI/debian/vmlinuz-3.6.0.efi /boot/efi/EFI/debian/initrd.img-3.6.0
注意:为了确保与大多数系统兼容,efi
必须将扩展添加到内核。
现在可以在UEFI中注册内核。我们efibootmgr
为此使用工具。
回声“ root = UUID = 3a4287b6-b3a7-4721-da38-acc38a928278 ro rootfstype = ext4 add_efi_memmap initrd = \\ EFI \\ debian \\ initrd.img-3.6.0” | iconv -f ascii -t ucs2 | efibootmgr \ - 创建 \ --gpt \ --disk / dev / sda \ -第4部分 --label“ Debian Linux内核3.6.0” --loader“ \\ EFI \\ debian \\ vmlinuz-3.6.0” \ --write-signature \ --append-binary-args-
的参数--disk
是内核所在的设备,而不是ESP。
--part
是内核所在的分区号。--label
是UEFI引导菜单中的条目。
要查看可用条目的列表,只需在efibootmgr
不带参数的情况下启动即可。删除特定条目的语法
efibootmgr -b条目(十六进制)-B
例如:
efibootmgr -b 001a -B
这些说明不适用于内核更新的情况。内核和initramfs不会自动复制到ESP。这可以使用简短的脚本来完成,该脚本将内核和initramfs复制到ESP并运行efibootmgr
。该脚本可以放置在/etc/kernel/postinst.d
内核更新后自动启动。
注意: 不需要GRUB之类的启动管理器,UEFI本身充当启动管理器。
从Linux方面来说,这就是您所需要的,我不知道添加Windows需要什么。
我可以衷心推荐Rod Smith撰写的UEFI文章系列。他特别提到,由于不同步的危害,“混合” GPT-MBR是“危险的黑客”。