无论目标的 CPU 架构是什么,创建 Live Medias 的软件都能工作吗?

无论目标的 CPU 架构是什么,创建 Live Medias 的软件都能工作吗?

假设使用软件,您将特定 CPU 架构(例如 x86-32)的 Linux 发行版映像刷入 USB 驱动器,并且已知它工作得很好。那么使用相同发行版、相同版本但不同 CPU 架构(例如 powerpc)的映像,我们如何知道该软件将创建可以启动的 Live Media?

就我所知,存储分区之所以可引导,不仅仅是因为在正确的物理偏移量、文件结构或纯文本文件中包含正确的 ID,还因为其中有小型二进制程序(引导加载程序)。毫无疑问,这些二进制程序此时在 CPU 上以原始方式运行。因此,软件添加正确的 CPU 版本的二进制文件确实很重要。

那么,在这方面,我们是否必须留意所使用的闪存器?我一直使用 Rufus 为 x86 闪存 Live CD。然而,人们似乎也用它来为他们的 Raspberry Pi(一种 ARM 机器)闪存 Raspbian 的 USB 或 SD。

答案1

我是 Rufus 开发人员。我想您以为 Rufus 之类的实用程序会添加很多额外的启动文件,但事实并非如此。特别是,Raspbian 映像将以 DD 模式写入,这意味着内容是逐位写入的,不会对目标介质进行任何更改,尤其是创建驱动器的实用程序不会添加或删除任何内容。这意味着,在这种情况下,整个启动过程由映像(以及创建映像的人)控制,而可启动驱动器是否在使用与要启动映像的架构完全不同的 CPU 上创建并不重要。

现在,在某些情况下,Rufus 可能会添加额外的引导加载程序组件。例如,如果您正在为 ARM64 计算机创建 Windows 可启动驱动器,并且您使用的 ISO 包含install.wim大于 4 GB 的 ISO,那么 Rufus 将添加其UEFI:NTFS引导加载程序以启用从 NTFS 启动(因为 FAT32 不能用于写入大于 4 GB 的文件)。

在这种情况下,额外的引导加载程序组件需要采用目标 CPU 可以理解的二进制可执行格式。但这仍然不是问题,因为在 UEFI:NTFS 的情况下,我们预计 Rufus 可以并且确实为当前与 UEFI 兼容的所有 CPU 架构提供引导加载程序(这意味着 x86_32、x86_64、ARM 和 ARM64——如果 UEFI 添加了 MIPS 或其他架构,我们当然也会为这些架构添加引导加载程序),因此您可以为这些架构创建可启动驱动器而不必担心。我们可能添加的 Syslinux 或 GRUB 组件也是如此,因为它们仅针对 x86_32(是的,即使 GRUB 可以在 ARM 上使用,因为我们需要添加额外 GRUB 组件的唯一情况是用于 BIOS 启动,它已经绝不已在 x86 之外实现)。

希望这能回答你的问题。

相关内容