Project ACRN™
1.6.1
Project ACRN
v: 1.6.1
Document Versions
latest
1.6
1.5
1.4
1.3
1.2
1.1
1.0
projectacrn.org links
Project Home
Wiki
Documentation Home
What is ACRN
Introduction to Project ACRN
ACRN Open Source Roadmap 2020
ACRN High-Level Architecture
Usage Scenarios
Automotive Application Scenarios
Industrial Workload Consolidation
Best Known Configurations
SDC scenario with two VMs
SDC scenario with four VMs
Industry scenario without a safety VM
Industry scenario with a safety VM
Logical Partitioning scenario
Licensing
ACRN Device Model, Service VM, and User VM
Boot Sequence
De-privilege boot mode
Direct boot mode
ACRN Hypervisor Architecture
ACRN Device Model Architecture
Device pass through
Hardware support for device passthrough
Hypervisor support for device passthrough
ACRN I/O mediator
Virtio framework architecture
Getting Started
Supported Hardware
Minimum System Requirements for Installing ACRN
Minimum Requirements for Processor
Known Limitations
Verified Platforms According to ACRN Usage
Verified Hardware Specifications Detail
Build ACRN from Source
Introduction
Install build tools and dependencies
Get the ACRN hypervisor source code
Build with the ACRN scenario
Build the hypervisor configuration
Modify the hypervisor configuration
Build the hypervisor, device model, and tools
Getting Started Guide for ACRN Industry Scenario
Verified version
Prerequisites
Hardware Setup
Set up the ACRN Hypervisor for industry scenario
Use the pre-installed industry ACRN hypervisor
Use the ACRN industry out-of-the-box image
Install and launch the Preempt-RT VM
RT Performance Test
Cyclictest introduction
Pre-Configurations
Run cyclictest
Launch additional User VMs
Prepare the launch scripts
Launch Windows VM
Launch other standard VMs
Troubleshooting
Use serial port on KBL NUC
EFI image doesn’t exist
Enabling the network on RTVM
Passthrough a hard disk to the RTVM
Getting Started Guide for ACRN hybrid mode
Prerequisites
Update Ubuntu GRUB
Hybrid Scenario Startup Checking
Getting Started Guide for ACRN logical partition mode
Validated Versions
Prerequisites
Update kernel image and modules of pre-launched VM
Update ACRN hypervisor image
Update Ubuntu GRUB to boot hypervisor and load kernel image
Logical partition scenario startup checking
Advanced Guides
Configuration and Tools
ACRN Configuration Tool
Introduction
ACRN configuration XMLs
Configuration tool workflow
Use the ACRN configuration app
Configuration Symbol Reference
Introduction
Supported Options
ACRN Kernel Parameters
Generic kernel parameters
Intel GVT-g (AcrnGT) Parameters
ACRN Shell Commands
Command examples
Device Model Parameters
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
Service VM Tutorials
Run Ubuntu as the Service VM
Install Ubuntu (natively)
Install ACRN
Install the Service VM kernel
Prepare the User VM
Start the User VM
Enable network sharing
Enable the USB keyboard and mouse
Run Debian as the Service VM
Prerequisites
Validated Versions
Install ACRN on the Debian VM
User VM Tutorials
Build a User VM from the Clear Linux OS
Build User VM image from Clear Linux OS
Start the User VM
Launch Windows as the Guest VM on ACRN
Verified version
Hardware setup
ACRN Service VM Setup
Setup for Using Windows as the Guest VM
ACRN Windows verified feature list
Known Limitations
Explanation for acrn-dm popular command lines
Secure boot enabling
Activate Windows 10
Run Ubuntu as the User VM
Prerequisites
Build the Ubuntu KVM Image
Launch the Ubuntu Image as the User VM
Enable the Ubuntu Console instead of the User Interface
Run Debian as the User VM
Prerequisites
Build the Debian KVM Image
Launch the Debian Image as the User VM
Enable the ttyS0 Console on the Debian VM
Run Xenomai as the User VM OS (Real-Time VM)
Build the Xenomai kernel
Launch the RTVM
Install the Xenomai libraries and tools
Run Celadon as the User VM
Prerequisites
Build Celadon from source
Steps for Using Celadon as the User VM
Run VxWorks as the User VM
Steps for Using VxWorks as User VM
Run Zephyr as the User VM
Introduction to Zephyr
Steps for Using Zephyr as User VM
Run two AGL images as User VMs
Hardware Setup
Software Setup
Enable ACRN Features
Enable QoS based on runC Containers
What is QoS
What is runC container
ACRN-DM QoS architecture
ACRN-QoS CPU utilization example
How to use ACRN-DM QoS
Enable OVS in ACRN
What is OVS
Why OVS
How to enable OVS in ACRN
How to use OVS bridge
Example for VLAN network based on OVS in ACRN
Enable SGX Virtualization
High Level ACRN SGX Virtualization Design
Enable SGX support for Guest
SGX Capability Exposure
Enclave System Function Handling
Other VMExit Control
Future Development
Enable vUART Configurations
Introduction
Console enable list
How to configure a console port
How to configure a communication port
Communication vUART enable list
Launch script
Test the communication port
vUART design
COM port configurations for Post-Launched VMs
Enable RDT Configuration
RDT detection and resource capabilities
Tuning RDT resources in HV debug shell
Configure RDT for VM using VM Configuration
Enable SBL on the UP2 Board
Prerequisites
Build SBL
Flash SBL on the UP2
Build ACRN for UP2
Download and install flash tool
Service VM and LaaG Installation
Boot to Service VM
Launch User VM
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
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 on the Skylake NUC
Hardware platform
Software Configuration
Software Setup
Run Kata Containers on a Service VM
Prerequisites
Install Docker
Install Kata Containers
Configure Kata on ACRN
Run a Kata Container with ACRN
Trusty and Security Services Reference
Trusty Architecture
Trusty Services
Trusty in 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)
Configure ACRN using OpenStack and libvirt
Introduction
Install ACRN
Set up and launch LXC/LXD
Set up ACRN prerequisites inside the container
Set up libvirt
Set up OpenStack
Final Steps
Debug
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
Additional Tutorials
Getting Started Guide for the UP2 Board
Hardware setup
Software setup
Running the hypervisor
Build ACRN in Docker
Install Docker
Get the Docker Image
Build ACRN from Source in Docker
Build the ACRN Service VM Kernel in Docker
Build the ACRN User VM PREEMPT_RT Kernel in Docker
Build the ACRN documentation
Install ACRN Out of the Box
Set up a Build Environment
Generate a Service VM image
Generate a User VM Preempt-RT image
Set Up a Static IP Address
ACRN Network Setup
Setting up the static IP address
Activate the new configuration
Increase the User VM Disk Size
Increase the virtual disk size
Resize the
rootfs
partition
Resize the filesystem
Sign Clear Linux Image Binaries
Prerequisites
Steps to sign the binaries of the Clear Linux image
Enable Secure Boot in the Clear Linux User VM
Prerequisites
Validated versions
Prepare keys (PK/KEK/DB)
Sign the Clear Linux image
Boot Clear Linux signed image
Use SDC Mode on the NUC
Validated Version
Software Setup
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
Virtual Bootloader
Security
Software Design Guidelines
Error Detection and Error Handling
Module Level Configuration Design Guidelines
References
GVT-g Enabling and Porting Guide
Introduction
Purpose of this document
Overall Components
Core scenario interaction sequences
API details
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
VBS-K Framework Virtualization Overhead Analysis
Introduction
Architecture of VIRTIO-ECHO
Virtualization Overhead Analysis
Conclusion
Contribute Guides
Contribution Guidelines
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
Internal Cross-Reference Linking
Non-ASCII Characters
Code and Command Examples
Images
Tabs, spaces, and indenting
Drawings
Alternative Tabbed Content
Instruction Steps
First instruction step
Second instruction step
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
Installing the documentation tools
Documentation presentation theme
Running the documentation processors
Publishing content
Document Versioning
Filtering expected warnings
API Documentation
API Documentation
Hypercall APIs
Device Model APIs
ACRN GVT-g APIs
Release Notes
ACRN v1.6.1 (May 2020)
Version 1.6.1 major features
What’s New in v1.6.1
Document updates
Fixed Issues Details
Known Issues
Change Log
ACRN v1.6 (Mar 2020)
Version 1.6 major features
What’s New in v1.6
Document updates
New Features Details
Fixed Issues Details
Known Issues
Change Log
ACRN v1.5 (Jan 2020)
Version 1.5 major features
What’s New in v1.5
Document updates
Fixed Issues Details
Known Issues
Change Log
ACRN v1.4 (Oct 2019)
Version 1.4 major features
What’s New in v1.4
Document updates
Security Vulnerabilities
New Features Details
Fixed Issues Details
Known Issues
Change Log
ACRN v1.3 (Sep 2019)
Version 1.3 major features
What’s New in v1.3
Document updates
New Features Details
Fixed Issues Details
Known Issues
Change Log
ACRN v1.2 (Aug 2019)
Version 1.2 major features
What’s New in v1.2
Document updates
New Features Details
Fixed Issues Details
Known Issues
Change Log
ACRN v1.1 (June 2019)
Version 1.1 major features
Hybrid Mode Introduced
Support for new guest Operating Systems
Document updates
New Features Details
Fixed Issues Details
Known Issues
Change Log
ACRN v1.0.2 (November 2019)
Change Log in v1.0.2 since v1.0.1
ACRN v1.0.1 (July 2019)
Change Log in version 1.0.1 since version 1.0
ACRN v1.0 (May 2019)
Version 1.0 major features
Hardware Support
APL UP2 board with SBL firmware
Enable post-launched RTVM support for real-time UOS in ACRN
Enable cache QOS with CAT
Enable QoS based on runC container
S5 support for RTVM
OVMF support initial patches merged in ACRN
Support ACPI power key mediator
VT-x, VT-d
PIC/IOAPIC/MSI/MSI-X/PCI/LAPIC
Ethernet
Mass Storage
USB (xDCI)
USB Mediator (xHCI)
Wi-Fi
IPU (MIPI CSI-2, HDMI-in)
Bluetooth
GVT-g for ACRN
GPU - Preemption
GPU - display surface sharing via Hyper DMA
Virtio standard is supported
Device pass-through support
GPIO virtualization
New ACRN tools
Document updates
New Features Details
Fixed Issues Details
Known Issues
Change Log
ACRN v0.8 (Apr 2019)
Version 0.8 new features
GPIO virtualization
Enable QoS based on runC container
S5 support for RTVM
Document updates
New Features Details
Fixed Issues Details
Known Issues
Change Log
ACRN v0.7 (Mar 2019)
Version 0.7 new features
Enable cache QOS with CAT
Support ACPI power key mediator
Document updates
New Features Details
Fixed Issues Details
Known Issues
Change Log
ACRN v0.6 (Feb 2019)
Version 0.6 new features
Fixed Issues
Known Issues
Change Log
ACRN v0.5 (Jan 2019)
Version 0.5 new features
Fixed Issues
Known Issues
Change Log
ACRN v0.4 (Dec 2018)
Version 0.4 new features
Fixed Issues
Known Issues
Change Log
ACRN v0.3 (Nov 2018)
Version 0.3 new features
Fixed Issues
Known Issues
Change Log
ACRN v0.2 (Sep 2018)
Version 0.2 new features
VT-x, VT-d
PIC/IOAPIC/MSI/MSI-X/PCI/LAPIC
Ethernet
Storage (eMMC)
USB (xDCI)
USB Mediator (xHCI and DRD)
CSME
WiFi
IPU (MIPI-CS2, HDMI-in)
Bluetooth
GPU - Preemption
GPU - display surface sharing via Hyper DMA
S3
Fixed Issues
Known Issues
Change Log
ACRN v0.1 (July 2018)
Version 0.1 new features
Hardware Support
GVT-g for ACRN
Virtio standard is supported
Device pass-through support
Hypervisor configuration
New ACRN tools
Known Issues
Change Log
Security Advisory
Addressed in ACRN v1.6.1
Addressed in ACRN v1.6
Addressed in ACRN v1.4
FAQ
What hardware does ACRN support?
Clear Linux* OS fails to boot on my NUC
How do I configure ACRN’s memory size?
How to modify the default display output for a User VM?
Why does ACRN need to know how much RAM the system has?
How to build ACRN on Fedora 29?
Glossary of Terms
Project ACRN™
Docs
»
Developer Reference
»
High-Level Design Guides
»
Virtual Slim-Bootloader high-level design
Virtual Slim-Bootloader high-level design
¶