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

Ric*_*ler 26 x86 arm emulation virtual-machine

我受到了Fabrice Bellard 在Javascript中实现x86虚拟机的启发,我想尝试编写能够运行Linux内核的最简单的虚拟机.这是纯粹的教育努力,除了理解和分享使这成为可能的代码之外没有其他目的.

浏览了x86规范后,我怀疑通过尝试编写能够模拟完整x86指令集的虚拟机,我可能会把自己投入到深层.相反,我正在寻找一种可以尝试模拟的更简单的架构.

我已经阅读了这个询问如何模拟x86架构的问题,答案建议从更简单的东西开始,比如ARM架构.我的问题更具体:我可以尝试模拟哪种最简单的架构能够运行Linux内核?

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

use*_*109 6

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

此外,您必须知道Fabrice Bellard的javascript虚拟机使用32位x86兼容CPU,这本身就是Linux支持的.你必须自己为Linux或MIPS移植linux内核(使用工具链).请参阅有关如何使用Linux内核的链接

对于MIPS:

对于ARM: