Skip to content

Composing EMT3 Image for ARM#422

Open
srmungar wants to merge 12 commits intomainfrom
emt3enablingforarm
Open

Composing EMT3 Image for ARM#422
srmungar wants to merge 12 commits intomainfrom
emt3enablingforarm

Conversation

@srmungar
Copy link
Copy Markdown
Contributor

Merge Checklist

All boxes should be checked before merging the PR

  • [] The changes in the PR have been built and tested
  • [] Ready to merge

Description

Any Newly Introduced Dependencies

How Has This Been Tested?

Copilot AI review requested due to automatic review settings February 18, 2026 02:03
@srmungar srmungar requested a review from a team as a code owner February 18, 2026 02:03
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request adds ARM (aarch64) architecture support for building EMT3 (Edge Microvisor Toolkit 3) raw disk images. The changes enable cross-platform image composition by introducing ARM-specific configurations, build scripts, and CI/CD workflows alongside the existing x86_64 support.

Changes:

  • Added ARM build script and GitHub Actions workflow for automated EMT3 ARM image builds
  • Created ARM-specific configuration files including repository settings, chroot environment, and image templates
  • Extended architecture support in EMT3 config to include aarch64 alongside x86_64

Reviewed changes

Copilot reviewed 6 out of 7 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
scripts/build_emt3_arm_raw.sh New build script for EMT3 ARM raw images with QEMU boot testing support
.github/workflows/build-emt3-arm-raw.yml GitHub Actions workflow for automated ARM image builds and testing
image-templates/emt3-aarch64-minimal-raw.yml ARM-specific image template with minimal package set and ARM64 partition types
config/osv/edge-microvisor-toolkit/emt3/providerconfigs/aarch64_repo.yml ARM repository configuration for package sources
config/osv/edge-microvisor-toolkit/emt3/imageconfigs/defaultconfigs/default-raw-aarch64.yml Default ARM image configuration with package list adjustments
config/osv/edge-microvisor-toolkit/emt3/config.yml Added aarch64 architecture section to main configuration
config/osv/edge-microvisor-toolkit/emt3/chrootenvconfigs/chrootenv_aarch64.yml ARM chroot environment package specifications

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

- platform-telemetry-agent
- platform-update-agent
- in-band-manageability
- reporting-agent
Copy link

Copilot AI Feb 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The 'in-band-manageability' package is present in the x86_64 default configuration (default-raw-x86_64.yml line 89) but was removed from the ARM configuration. If this package is not available or not supported on ARM architecture, consider adding a comment explaining the removal. If the package should be included, add it back to maintain feature parity between architectures.

Copilot uses AI. Check for mistakes.
- name: Install system deps
run: |
sudo apt-get update
sudo apt-get install -y qemu-system-aarch64 ovmf tree jq systemd-ukify mmdebstrap systemd-boot
Copy link

Copilot AI Feb 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The qemu-efi-aarch64 package is missing from the system dependencies. Other ARM workflows (e.g., build-azl3-arm-raw.yml, build-elxr12-arm-raw.yml, build-ubuntu24-arm-raw.yml) include this package in their system dependencies. This package provides ARM-specific UEFI firmware files needed for QEMU ARM virtualization. Add qemu-efi-aarch64 to the package list to be consistent with other ARM workflows.

Suggested change
sudo apt-get install -y qemu-system-aarch64 ovmf tree jq systemd-ukify mmdebstrap systemd-boot
sudo apt-get install -y qemu-system-aarch64 qemu-efi-aarch64 ovmf tree jq systemd-ukify mmdebstrap systemd-boot

Copilot uses AI. Check for mistakes.
steps:
- name: Checkout code
uses: actions/checkout@v6.0.2
with:
Copy link

Copilot AI Feb 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The workflow defines a 'ref' input parameter but doesn't use it in the checkout step. Other ARM workflows (e.g., build-elxr12-arm-raw.yml line 34) pass this to the checkout action with 'ref: ${{ github.event.inputs.ref || github.ref }}'. This allows users to manually trigger the workflow on a specific branch or SHA. Either use the ref input in the checkout step or remove it from the workflow_dispatch inputs if it's not needed.

Suggested change
with:
with:
ref: ${{ github.event.inputs.ref || github.ref }}

Copilot uses AI. Check for mistakes.
Comment on lines +87 to +103
- name: Notify on failure
if: ${{ failure() && github.event_name == 'pull_request' }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
REVIEWER_ID: srmungar
run: |
PR_AUTHOR=$(jq --raw-output 'try .pull_request.user.login // empty' "$GITHUB_EVENT_PATH")
if [ -z "$PR_AUTHOR" ]; then
echo "PR_AUTHOR not found in event payload. Skipping notification."
exit 0
fi
COMMENT_BODY="Hey @$PR_AUTHOR and @$REVIEWER_ID — the EMT3 raw image build has failed. Please check the logs."
curl -s -X POST \
-H "Authorization: Bearer $GITHUB_TOKEN" \
-H "Accept: application/vnd.github.v3+json" \
--data "{\"body\": \"$COMMENT_BODY\"}" \
"https://api.github.com/repos/${{ github.repository }}/issues/${{ github.event.pull_request.number }}/comments"
Copy link

Copilot AI Feb 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The workflow is missing artifact upload steps that are present in other ARM workflows. For example, build-azl3-arm-raw.yml (lines 85-95) and build-elxr12-arm-raw.yml (lines 91-102) include steps to set file permissions and upload build artifacts. Without these steps, the built image files won't be available as GitHub Actions artifacts. Add the missing artifact upload steps after the build step to preserve the build outputs.

Copilot uses AI. Check for mistakes.
component: "emt3.0-base-arm" # Repository component/section identifier
gpgCheck: false # Enabled with Intel GPG key
repoGPGCheck: false # Enabled with Intel GPG key
enabled: false
Copy link

Copilot AI Feb 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The repository configuration has 'enabled: false' which means the repository won't be used during the build process. This differs from the x86_64 configuration (x86_64_repo.yml line 9) which has 'enabled: true'. If this repository is needed for the ARM build, this should be set to 'true'. If the repository is intentionally disabled for testing or other reasons, consider adding a comment explaining why.

Suggested change
enabled: false
enabled: false # Intentionally disabled for ARM builds; x86_64 uses this repo, ARM does not currently require it

Copilot uses AI. Check for mistakes.
Comment on lines +8 to +11
gpgCheck: false # Enabled with Intel GPG key
repoGPGCheck: false # Enabled with Intel GPG key
enabled: false
#gpgKey: "https://raw.githubusercontent.com/open-edge-platform/edge-microvisor-toolkit/refs/heads/3.0/SPECS/edge-repos/INTEL-RPM-GPG-KEY"
Copy link

Copilot AI Feb 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The GPG check settings differ between ARM and x86_64 configurations. The ARM config has 'gpgCheck: false' and 'repoGPGCheck: false' (lines 8-9), while the x86_64 config (x86_64_repo.yml lines 7-8) has both set to 'true' with a configured GPG key. This inconsistency could indicate a security concern or an incomplete configuration. If GPG checking should be disabled for ARM builds, add a comment explaining why. Otherwise, enable GPG checks and configure the appropriate GPG key.

Suggested change
gpgCheck: false # Enabled with Intel GPG key
repoGPGCheck: false # Enabled with Intel GPG key
enabled: false
#gpgKey: "https://raw.githubusercontent.com/open-edge-platform/edge-microvisor-toolkit/refs/heads/3.0/SPECS/edge-repos/INTEL-RPM-GPG-KEY"
gpgCheck: true # Enabled with Intel GPG key
repoGPGCheck: true # Enabled with Intel GPG key
enabled: false
gpgKey: "https://raw.githubusercontent.com/open-edge-platform/edge-microvisor-toolkit/refs/heads/3.0/SPECS/edge-repos/INTEL-RPM-GPG-KEY"

Copilot uses AI. Check for mistakes.
- "false"
push:
branches:
- emt3enablingforarm
Copy link

Copilot AI Feb 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The workflow is configured to trigger on pushes to 'emt3enablingforarm' branch instead of 'main'. Other similar workflows (e.g., build-emt3-raw.yml lines 16-21, build-elxr12-arm-raw.yml lines 16-21) trigger on 'main' branch for both push and pull_request events. This custom branch trigger suggests this is a development/testing workflow that may need to be updated before merging to production. Consider updating the trigger to use 'main' branch and adding pull_request triggers for consistency with other workflows.

Suggested change
- emt3enablingforarm
- main
pull_request:
branches:
- main

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants