Mr.*_*nce 10 debian system-installation uefi
我即将购买带有 EFI 固件的 Asus 主板,并希望在硬件到货后为自己安装 Windows 和 Debian 做好准备。我希望走过这条路的人能给我一些指点。
在尝试在基于 UEFI 的新系统上安装 Windows 7 和 Debian 之前,我应该做哪些准备工作?
编辑:当我写这个答案时,很少有发行版带有 EFI_STUB 配置的内核,所以必须构建一个自定义的内核。如今,大多数发行版都提供了适当配置的内核,不再需要自定义构建。在这种情况下,“设置分区”和“设置”部分是有趣的部分,可以跳过“要求”和“编译内核”。
我不知道 Windows 是如何处理 UEFI 的,但从 Debian 方面来看,它非常简单。
使用 GPT 分区方案,而不是 MBR。
要从带有 UEFI 的 GPT 分区引导,需要一个专用的引导分区,称为EFI 系统分区(ESP)。这不是强制性的,但最兼容的方法是使用 FAT32 分区。大多数情况下,200 MiB 的大小应该没问题。
要将分区注册为 ESP,必须对其进行标记boot
。与 MBR 方案相反,引导标志仅用于指示 ESP,而不是能够从中引导的分区。
UEFI 使用目录结构\EFI\<vendor>\<application>.efi
来存储 UEFI 应用程序。目录分隔符由反斜杠表示,即使在 Linux 上也是如此。 可能是分发名称,实际值与 UEFI 无关。
应用程序可以是系统实用程序,如内存检查器或 UEFI shell。它也可以是操作系统加载程序或操作系统本身。这些应用程序需要在 UEFI 中注册才能在启动时启动。
Linux内核版本>=3.3可以通过UEFI直接加载。内核可以充当它自己的加载器。这称为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 克隆 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
查看一个特定版本
git 结帐 v3.6
配置内核
制作菜单配置
进行系统所需的设置,或者如果您没有要自定义的内容,则保持原样。这会将内核配置写入文件.config
。
确保设置了上一段中的设置。选择CONFIG_INPUT_EVBUG=n
. 否则您的日志将充满垃圾 GiB。
构建内核
INSTALL_MOD_STRIP=1 make-kpkg --uc --us binary-arch
包在父目录中创建。
安装内核
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
为此使用该工具。
echo "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 \ --磁盘 /dev/sda \ --第 4 部分 \ --label "Debian Linux 内核 3.6.0" \ --loader "\\EFI\\debian\\vmlinuz-3.6.0" \ --写签名\ --append-binary-args-
of 的参数--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需要什么。
确保 UEFI 不会将 Linux 锁定在您的计算机之外;BIOS 中可能有一个设置可以达到此效果。检查并确认确定。如果需要的话,我会通过手册和制造商仔细检查这一点。
对此进行了一些广泛的讨论;ZDNet 有几篇文章。这是2011 年 9 月 21 日的一篇文章和9 月 23 日的一篇文章。
其次,根据历史数据,您可能需要先安装Windows。传统上,Windows 只是假设它是计算机上唯一的操作系统 - 因此,它会清除与 Linux 相关的所有启动数据。UEFI 可能会有所不同,我不知道。
归档时间: |
|
查看次数: |
8172 次 |
最近记录: |