可以虚拟化并运行Linux内核的最简单的架构
我受到Fabrice Bellard在Javascript中实现x86虚拟机的启发,我想尝试编写能够运行Linux内核的最简单的虚拟机。 这是纯粹的教育努力,除了理解和分享使之成为可能的代码之外,没有其他目的。
浏览过x86规范后,我怀疑我可能会尝试编写能够模拟完整x86指令集的虚拟机,从而陷入深层次。 相反,我正在寻找一种我可以尝试模拟的更简单的架构。
我已经阅读了这个问题,它询问如何模拟x86架构,答案建议从比较简单的东西开始,比如ARM架构。 我的问题更具体一些: 我可以尝试模拟哪种最简单的架构能够运行Linux内核?
我感兴趣的是完全模拟整个机器,而不是简单地将指令传递回主机(例如,如果我正在编写x86仿真器,这将是可能的)。 我拥有相当数量的16位装配知识,以及一些操作系统理论背景,所以这应该是足够的工作范围内。
最简单的架构将来自易于实施的角度。 由于您正在构建一个完全模拟机器的仿真器,所以最简单的指令集设计/架构将适用。 RISC架构无疑更好。 但是选择一个没有广泛使用的体系结构也不好,如果你需要支持,很少有人能够帮助你。 写一个模拟器并不是小菜一碟。 我会说要么去ARM或MIPS,都是受欢迎的:
您还必须知道,Fabrice Bellard的JavaScript虚拟机使用32位x86兼容CPU,这是Linux本身支持的。 您必须自己移植ARM或MIPS的Linux内核(使用工具链)。 查看关于如何使用Linux内核的链接
对于MIPS:
对于ARM:
Linux内核支持的体系结构列表:
http://en.wikipedia.org/wiki/List_of_Linux_supported_architectures
“尽可能最简单”有些主观,但我认为这些列表并不那么复杂:
正如我在评论中所说的,我将平衡三个方面:
最后,我会提出一些“古老”的建议:合理简单,特别是在特权模式下,经过充分研究和记录。 例如,最初的MIPS,摩托罗拉68k系列,或者接近原RISC(http://en.wikipedia.org/wiki/Berkeley_RISC)的东西,如果有Linux变种的话!
链接地址: http://www.djcxy.com/p/50561.html上一篇: Simplest possible architecture that can be virtualized and run the Linux kernel