Project ACRN™
3.0
Project ACRN
v: 3.0
Document Versions
latest
2.7
2.6
2.5
2.0
1.6.1
1.0
projectacrn.org links
Project Home
Wiki
Documentation Home
What Is ACRN
Introduction
Licensing
Key Capabilities
Community Support
Resources
Background
High-Level Architecture
Static Configuration Based on Scenarios
Scenario Types
ACRN Device Model Architecture
Device Passthrough
Hardware Support for Device Passthrough
Hypervisor Support for Device Passthrough
Boot Sequence
Learn More
Getting Started
Supported Hardware
Selecting Hardware
Configuration and Development Overview
Development Environment
General Process for Building an ACRN Hypervisor
Step 1: Select Hardware and Scenario
Select Your Hardware
Select Your Scenario
Step 2: Prepare the Development Computer
Step 3: Generate a Board Configuration File
Configure BIOS Settings
Use the Board Inspector to Generate a Board Configuration File
Step 4: Generate a Scenario Configuration File and Launch Scripts
Step 5: Build ACRN
Step 6: Install and Run ACRN
Learn More
Getting Started Guide
Prerequisites
Prepare the Development Computer
Prepare the Target and Generate a Board Configuration File
Set Up the Target Hardware
Install OS on the Target
Configure Target BIOS Settings
Generate a Board Configuration File
Generate a Scenario Configuration File and Launch Script
Build ACRN
Install ACRN
Run ACRN and the Service VM
Launch the User VM
Next Steps
Advanced Guides
Advanced Scenario Tutorials
Getting Started Guide for ACRN Hybrid Mode
Set-up base installation
Prepare the Zephyr image
Set-up ACRN on your device
Update Ubuntu GRUB
Hybrid Scenario Startup Check
User VM Tutorials
User VM Guide
User VM OS Choices
Configuration Overview
User VM Persistence
Standard VM OS Considerations
Real-time VM OS Considerations
Run Ubuntu as the User VM OS
Prerequisites
Build the Ubuntu KVM Image
Launch the Ubuntu Image as the User VM
Run Windows as the User VM OS
ACRN Service VM Setup
Setup for Using Windows as the Guest VM
ACRN Windows Verified Feature List
Explanation for acrn-dm Popular Command Lines
Secure Boot Enabling
Activate Windows 10
Run Xenomai as the User RTVM OS
Build the Xenomai Kernel
Launch the RTVM
Install the Xenomai Libraries and Tools
Run VxWorks as the User RTVM OS
Steps for Using VxWorks as User VM
Run Zephyr as the User RTVM OS
Introduction to Zephyr
Steps for Using Zephyr as User VM
Configuration Tutorials
Introduction to ACRN Configuration
Types of Configurations
Using ACRN Configuration Toolset
Board Inspector Tool
About the Board Inspector Tool
Prerequisites
Generate a Board Configuration File
Command-Line Options
ACRN Configurator Tool
About the ACRN Configurator Tool
Prerequisites
Scenario Error Checking
Start with a New or Existing Configuration
Navigate the Configuration Screen
Import a Board Configuration File
Create New or Import an Existing Scenario
Configure Settings for Scenario and Launch Scripts
Build ACRN Configurator From Source Code
Upgrading ACRN Configurations to Recent Releases
Board XML
Scenario XML
Launch XML
Scenario Configuration Options
Common Option Value Types
Hypervisor Options
Inter-VM virtual UART connection
Debug options
Memory options
Hypervisor capacities
CACHE_REGION
Virtual Machine Options
Physical CPU affinity
SGX Enclave Page Cache
OS Configuration
MMIO Resources
Virtio console device
Virtio network device
Virtio input device
Hypervisor Makefile Options
Build Options and Targets
Makefile Targets for Configuration
ACRN Hypervisor Parameters
Generic Hypervisor Parameters
ACRN Kernel Parameters
Generic Kernel Parameters
Device Model Parameters and Launch Script
Device Model Parameters
Emulated PCI Device Types
Launch Script
ACRN Installation via Debian Packages
ACRN Installation via Tar Files
Prerequisites
Build the Tar Files
Install and Run ACRN
Advanced Features
Enable vUART Configurations
About vUART
Dependencies and Constraints
Configuration Overview
Example Configuration
Learn More
Enable Intel Resource Director Technology (RDT) Configurations
About Intel Resource Director Technology (RDT)
Dependencies and Constraints
Configuration Overview
Learn More
Enable Secure Boot in Windows
Generate Platform Key (PK)
Download KEK and DB From Microsoft
Compile OVMF With Secure Boot Support
Use QEMU to Inject Secure Boot Keys Into OVMF
Enable S5 in ACRN
Introduction
S5 Architecture
Enable S5
How to Test
System Shutdown
Enable CPU Sharing in ACRN
Introduction
Scheduling Framework
CPU Affinity
Thread Object State
Scheduler
Example
Enable SR-IOV Virtualization
SR-IOV Architectural Overview
Enable GPU Passthrough (GVT-d)
About GVT-d
Dependencies and Constraints
Configuration Overview
Example Configuration
Troubleshooting
Run Kata Containers on a Service VM
Prerequisites
Install Docker
Install Kata Containers
Run a Kata Container With ACRN
Real-Time VM Application Design Guidelines
Run RTVM With Dedicated Resources/Devices
RTVM With Virtio PMD (Polling Mode Driver) for I/O Sharing
RTVM With HV Emulated Device
DM Emulated Device (Except PMD)
Enable ACRN Over QEMU/KVM
Prerequisites
Prepare Service VM (L1 Guest)
Install ACRN Hypervisor
Bring Up User VM (L2 Guest)
Using GRUB to Boot ACRN
Using Pre-Installed GRUB
Installing Self-Built GRUB
Enable ACRN Secure Boot With GRUB
ACRN Secure Boot Sequence
Generate GPG Key
Setup Standalone GRUB EFI Binary
Enable UEFI Secure Boot
Enable ACRN Secure Boot With EFI-Stub
Introduction
Verified Configurations
Building
Installing (without SB for testing)
Signing
Enable Inter-VM Shared Memory Communication (IVSHMEM)
About Inter-VM Shared Memory Communication (IVSHMEM)
Dependencies and Constraints
Configuration Overview
Learn More
ACRN Inter-VM Communication
Inter-VM vUART
Inter-VM network communication
Inter-VM shared memory communication (ivshmem)
How to implement an Ivshmem application on ACRN
Debug
Enable Serial Port on NUC
Option 1: Using the Serial Port on TGL Intel NUC
Option 2: Enabling PCIe Serial Port on TGL Intel NUC
ACRN Debugging Tools
ACRN Console Command
An Example
ACRN Log
ACRN Trace
ACRN Real-Time (RT) Performance Analysis
vmexit Analysis for ACRN RT Performance
Collecting Performance Monitoring Counters Data
ACRN Real-Time VM Performance Tips
Background
Mandatory Options for an RTVM
Avoid VM-exit Latency
Isolating the Impact of Neighbor VMs
Miscellaneous
ACRN Shell Commands
Command Examples
ACRN-Crashlog
Introduction
Building
Installing
Enabling/Disabling
Usage
Source Code
Acrnprobe
Description
Usage
Architecture
Source Files
Configuration Files
Acrnprobe Configuration
Description
Layout
Properties of Group Members
Crash Tree in Acrnprobe
Sections
Usercrash
Description
Design
Usage
Source Code
Acrnlog
Description
Usage
Build and Install
Acrntrace
Description
Usage
Build and Install
Acrnctl and Acrnd
Description
Acrnd
Build and Install
Developer Reference
Design Guides
ACRN Hypervisor: Modular Design
Overview
Principles
Architecture
References
High-Level Design Guides
Overview
Hypervisor
Device Model
Emulated Devices
Virtio Devices
Power Management
Tracing and Logging
Security
Software Design Guidelines
Error Detection and Error Handling
Module Level Configuration Design Guidelines
References
Trusty TEE
Introduction
Trusty Architecture
Trusty Specific Hypercalls
Trusty Boot Flow
EPT Hierarchy
L1 Terminal Fault Mitigation
Overview
L1TF Problem in ACRN
L1TF Mitigation in ACRN
Mitigation Recommendations
Mitigation Status
Contribute Guides
Contribution Guidelines
Technical Steering Committee (TSC)
Licensing
Developer Certification of Origin (DCO)
Prerequisites
Repository Layout
Submitting Issues
Contribution Tools and Git Setup
Coding Style
Contribution Workflow
Commit Guidelines
Coding Guidelines
C Programming Language Coding Guidelines
Assembly Language Coding Guidelines
Documentation Guidelines
Headings
Content Highlighting
Lists
Multi-Column Lists
Tables
File Names and Commands
Branch-Specific File Links
Internal Cross-Reference Linking
Non-ASCII Characters
Code and Command Examples
Images
Tabs, Spaces, and Indenting
Background Colors
Drawings
Alternative Tabbed Content
Instruction Steps
First Instruction Step
Second Instruction Step
Configuration Option Documentation
Documentation Generation
Drawings Using Graphviz
Simple Directed Graph
Adding Edge Labels
Tables
Finite-State Machine
ACRN Documentation Generation
Documentation Overview
Set Up the Documentation Working Folders
Install the Documentation Tools
Documentation Presentation Theme
Run the Documentation Processors
Publish Content
Document Versioning
Filter Expected Warnings
API Documentation
API Documentation
Hypercall APIs
Device Model APIs
Release Notes
ACRN v3.0.2 (Nov 2022)
What’s New in v3.0.2
ACRN v3.0.1 (Jul 2022)
What’s New in v3.0.1
ACRN v3.0 (Jun 2022)
What’s New in v3.0
Upgrading to v3.0 from Previous Releases
Generate New Board XML
Update Configuration Options
Document Updates
Fixed Issues Details
Known Issues
Release Notes Archive
Security Advisory
Addressed in ACRN v3.0.2
Addressed in ACRN v3.0.1
Addressed in ACRN v2.7
Addressed in ACRN v2.6
Addressed in ACRN v2.5
Addressed in ACRN v2.3
Addressed in ACRN v2.1
Addressed in ACRN v1.6.1
Addressed in ACRN v1.6
Addressed in ACRN v1.4
Glossary of Terms
Index
Project ACRN™
3.0
»
Search
Please activate JavaScript to enable the search functionality.