Skip to main content
 首页 » 编程设计

x86之可以虚拟化并运行 Linux 内核的最简单的架构

2024年11月01日21zfyouxi

我受到 Fabrice Bellard 实现 x86 virtual machine in Javascript 的启发。 ,我想尝试编写能够运行 Linux 内核的最简单的虚拟机。这纯粹是一种教育性的努力,除了理解和共享使这成为可能的代码之外别无其他目的。

浏览了x86 specification ,我怀疑我可能会尝试编写一个能够模拟完整 x86 指令集的虚拟机,从而将自己陷入深渊。相反,我正在寻找一种可以尝试模仿的更简单的架构。

我已通读 this question其中询问如何模拟 x86 架构,答案建议从更简单的东西开始,例如 ARM 架构。我的问题更具体:我可以尝试模拟的最简单的架构是什么,它可以运行 Linux 内核?

我对完全模拟整个机器感兴趣,而不是简单地将指令传递回主机(例如,如果我正在编写 x86 模拟器,这将是可能的)。我有相当数量的 16 位汇编知识和一些操作系统理论背景,所以只要有足够的工作,这应该是可以实现的。

请您参考如下方法:

最简单的架构将是从易于实现的角度来看。由于您正在构建一个完全模拟机器的模拟器,因此具有最简单的指令集设计/体系结构的模拟器将是合适的。 RISC 架构无疑更好。但是选择一个没有广泛使用的架构也不好,如果你需要支持,很少有人能够帮助你。编写模拟器不是小菜一碟。我会说要么选择 ARM 要么 MIPS,两者都很受欢迎:

  • ARM Instruction Set
  • MIPS Instruction Set

  • 此外,您必须知道 Fabrice Bellard 的 javascript 虚拟机使用 32 位 x86 兼容 CPU,Linux 原生支持这种功能。您必须自己为 ARM 或 MIPS 移植 linux 内核(使用工具链)。请参阅有关如何使用 linux 内核的链接

    对于 MIPS:
  • http://www.linux-mips.org/wiki/Main_Page
  • Porting Linux kernel 2.6 to new MIPS board
  • http://developer.mips.com/linux/

  • 对于 ARM :
  • http://www.arm.com/community/software-enablement/linux.php
  • http://www.arm.linux.org.uk/docs/kerncomp.php