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

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

浏览过x86规范后,我怀疑我可能会尝试编写能够模拟完整x86指令集的虚拟机,从而陷入深层次。 相反,我正在寻找一种我可以尝试模拟的更简单的架构。

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

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


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

  • ARM指令集
  • MIPS指令集
  • 您还必须知道,Fabrice Bellard的JavaScript虚拟机使用32位x86兼容CPU,这是Linux本身支持的。 您必须自己移植ARM或MIPS的Linux内核(使用工具链)。 查看关于如何使用Linux内核的链接

    对于MIPS:

  • http://www.linux-mips.org/wiki/Main_Page
  • 将Linux内核2.6移植到新的MIPS板上
  • http://developer.mips.com/linux/
  • 对于ARM:

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

  • Linux内核支持的体系结构列表:

    http://en.wikipedia.org/wiki/List_of_Linux_supported_architectures

    “尽可能最简单”有些主观,但我认为这些列表并不那么复杂:

  • MIPS
  • H8(μClinux)
  • 68k / Coldfire(μClinux)

  • 正如我在评论中所说的,我将平衡三个方面:

  • 简单的指令集(几个指令格式,很少的操作码:任何不像x86)
  • 文档:广泛可用。 这意味着可能会放弃一些简单的体系结构以专注于广泛支持的体系结构(例如,x86获胜,但您也可以在RISC上找到大量材料,尤其是来自学术界的MIPS)。 或者打开OpenRisc之类的东西
  • 易于在“内核模式”下使用。 在特权内核模式下,需要考虑一个全新的寄存器,指令和内部世界。 不要忘记,处理器也带有总线,简单的处理器可能会有非常复杂的总线! 你也需要模拟它。 或者,如果您对此感到满意,您可以使用用户模式Linux。
  • 最后,我会提出一些“古老”的建议:合理简单,特别是在特权模式下,经过充分研究和记录。 例如,最初的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

    下一篇: How do browser emulators work?