-
Couldn't load subscription status.
- Fork 5
engineering: Installer ISO definition #270
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this 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 PR introduces the infrastructure for creating an Azure Linux installer ISO for attended installations. It includes the MOS (Mariner Operating System) configuration for the installer environment, getty service customization for root autologin, installation scripts that mount and execute the installer from the ISO, and a comprehensive Makefile to orchestrate the build process.
Key changes:
- MOS configuration defining the installer environment with necessary packages and filesystem layout
- Shell scripts to automate the installation flow
- Makefile targets to build the installer VHDX and generate the final ISO
Reviewed Changes
Copilot reviewed 9 out of 9 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/images/azl-installer/mos/mos.yaml | Defines the storage, OS, and package configuration for the installer environment |
| tests/images/azl-installer/mos/files/[email protected] | Systemd service file for serial console with root autologin |
| tests/images/azl-installer/mos/files/[email protected] | Systemd service file for virtual terminal with root autologin |
| tests/images/azl-installer/iso/scripts/startup-command.sh | Script to configure root's shell to run the installation script |
| tests/images/azl-installer/iso/scripts/installation.sh | Main installation script that mounts the ISO and executes liveinstaller |
| tests/images/azl-installer/iso/mos-iso.yaml | ISO-specific configuration including kernel command line parameters |
| tests/images/azl-installer/iso/files/EULA.txt | Microsoft software license agreement for Azure Linux ISO |
| tests/images/azl-installer/iso/.gitignore | Excludes generated images and binaries from version control |
| Makefile | Build targets for creating the installer VHDX and final ISO |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
| $(eval TEMP_DIR := $(shell mktemp -d)) | ||
| tar -xf bin/trident-rpms-azl3.tar.gz -C $(TEMP_DIR) | ||
| cp $(TEMP_DIR)/RPMS/*/*.rpm bin/trident_rpms/ | ||
| rm -rf $(TEMP_DIR) |
Copilot
AI
Oct 22, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The temporary directory cleanup should happen even if the previous commands fail. Consider using a trap or ensure this cleanup occurs in all code paths to prevent temporary directory accumulation.
| $(eval TEMP_DIR := $(shell mktemp -d)) | |
| tar -xf bin/trident-rpms-azl3.tar.gz -C $(TEMP_DIR) | |
| cp $(TEMP_DIR)/RPMS/*/*.rpm bin/trident_rpms/ | |
| rm -rf $(TEMP_DIR) | |
| @TEMP_DIR=$$(mktemp -d) ; \ | |
| trap 'rm -rf "$$TEMP_DIR"' EXIT ; \ | |
| tar -xf bin/trident-rpms-azl3.tar.gz -C "$$TEMP_DIR" && \ | |
| cp "$$TEMP_DIR"/RPMS/*/*.rpm bin/trident_rpms/ |
| - pcaudiolib | ||
| # Debug accessibility packages. | ||
| # Successfully installed, but failed to create ISO. | ||
| # - alsa-lib |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are these packages intentionally commented out?
| mkdir -p $(AZL_INSTALLER_BIN_PATH) | ||
| cp bin/liveinstaller $(AZL_INSTALLER_BIN_PATH)/ | ||
|
|
||
| mkdir -p artifacts/test-image/ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: ./artifacts/test-image/
| @mkdir -p artifacts/test-image/ | ||
| sudo rm -rf bin/trident_rpms | ||
| mkdir -p bin/trident_rpms | ||
| $(eval TEMP_DIR := $(shell mktemp -d)) | ||
| tar -xf bin/trident-rpms-azl3.tar.gz -C $(TEMP_DIR) | ||
| cp $(TEMP_DIR)/RPMS/*/*.rpm bin/trident_rpms/ | ||
| rm -rf $(TEMP_DIR) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why do we need to manually unpack bin/trident-rpms-azl3.tar.gz? I think the make target for this already places the RPMs at /bin/RPMS so we can just copy those over to bin/trident_rpms/?
🔍 Description