# Mortise **Repository Path**: haochencui/mortise ## Basic Information - **Project Name**: Mortise - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 6 - **Created**: 2024-07-19 - **Last Updated**: 2024-09-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Mortise:基于微库解耦架构的嵌入式虚拟化平台 ## 项目介绍 Mortise是一款基于LibOS架构的嵌入式虚拟化平台,旨在与TenonOS和其他通用OS组合成混合关键性系统的解决方案,并通过LibOS架构灵活生成与目标场景最契合的Hypervisor。 现阶段Mortise版本以[Bao v1.0][bao-hypervisor]作为项目原型,做微库化解耦和复用,并持续扩展其他嵌入式虚拟化功能。 随着项目演进,将继续提高与TenonOS微库复用的程度。 ### 支持的平台 | 平台 | CPU架构 | 状态 | | ---------------------------------- | ------- | ------ | | [qemu](platform/qemu-aarch64-virt) | arm64 | 已支持 | | rk3568 | arm64 | 开发中 | ### 示例应用 目前Mortise提供以下4个Demo供大家学习参考,为了展示配置的多样性,每个Demo打开的特性开关各不相同,如下表所示: | 序号 | Demo名称 | 实例 | 内存 | 物理内存映射 | 串口设备 | 网络功能 | |------|-----------------------------------|---------------|--------|--------------|----------|------------------| | 1 | [tenonos](examples/demos/tenonos) | 单实例 | 64MB | ✖️ | pl011 | ✖️ | | 2 | [linux](examples/demos/linux) | 单实例 | 1024MB | ✔️ | pl011 | ✔️ (ping、ssh) | | 3 | [linux+linux](examples/demos/linux+linux) | hvc0实例 | 512MB | ✔️ | virtio-console | ✔️ (ping、ssh) | | | | ttyAMA0实例 | 512MB | ✖️ | pl011 | ✖️ | | 4 | [tenonos+linux](examples/demos/tenonos+linux) | tenonos实例 | 64MB | ✖️ | pl011 | ✖️ | | | | linux实例 | 512MB | ✔️ | virtio-console | ✔️ (ping、ssh) | ## 如何使用 ### 代码结构 Mortise项目是基于Tenon框架API、微库和相关工具链构建而出的,代码按类似Tenon的组织方式。当前版本的Mortise主要支持静态配置能力,即虚拟化平台的配置和虚机配置均在构建阶段完成。 Mortise本身通过Kconfig来配置,Mortise运行的平台通过platform下板级支持包的[desc.c](platform/qemu-aarch64-virt/desc.c)配置,运行的虚机则通过独立[config.c](examples/demos/tenonos/configs/qemu-aarch64-virt.c)配置。 ``` . ├── arch /*架构相关的公共代码*/ ├── defconfigs /*存放一些支持平台的默认Kconfig*/ ├── doc /*存放一些指导文档*/ ├── drivers /*Mortise单独维护的驱动,一般不适用于TenonOS*/ ├── examples /*一些示例场景的配置、脚本和代码*/ ├── include /*架构无关的头文件*/ ├── lib /*Mortise项目的核心专用微库*/ ├── platform /*Mortise支持的平台和板级支持包*/ ├── tnplat /*用于将Mortise作为TenonOS平台构建的对接层*/ ├── tools /*项目的辅助工具代码*/ ``` ### 使用指导 Mortise基于Tenon的构建体系,使用make和Kconfig完成编译和配置工作,当前支持kvm平台,使用指导请参考[quick_start](doc/quick_start.md) 编译Mortise使用环境变量VM_CONFIG_FILE指定配置文件,示例如下: ``` make -j $(nproc) VM_CONFIG_FILE=/path/to/config.c ``` ## 参考资源 * [设计文档][tenon-design] * [Tenon](https://gitee.com/tenonos/tenon) * [Bao][bao-hypervisor] * [aVisor](https://gitee.com/yingyitech/mortise/tree/main/) * [RequestForComments](https://gitee.com/tenonos/request-for-comments) [bao-hypervisor]: https://github.com/bao-project/bao-hypervisor [tenon-design]: https://gitee.com/tenonos/documents/design