PackageLists array.
Package List Format
Package lists are simple JSON files with apackages array:
packagelist.json
Referencing Package Lists
Package lists are referenced in theSystemConfigs section:
Paths are relative to the image configuration file location.
Package List Processing
Package lists are processed in linear order:- Each file is scanned sequentially
- All packages are combined via union operation
- Dependencies are resolved automatically
- Final package list is installed
Kernel Packages
Correct Kernel Configuration
Built-in Package Lists
Azure Linux provides several standard package lists:Core Package Lists
core-packages-image.json
Essential packages for bootable images:
shim- Secure boot loadergrub2-efi-binary- GRUB bootloaderca-certificates- SSL certificatesinitramfs- Initial RAM filesystemdracut-hostonly- Initramfs generatorshadow-utils- User/group utilities
core-packages-image.json
core-packages-container.json
Minimal packages for container images (no boot components)
core-packages-image-aarch64.json
Core packages optimized for ARM64 architecture
Virtualization Packages
hyperv-packages.json
Hyper-V integration services
hyperv-packages.json
qemu-guest-packages.json
QEMU/KVM guest agent and tools
virt-guest-packages.json
Generic virtualization guest packages
virtualization-host-packages.json
Packages for running VMs (libvirt, qemu, etc.)
Cloud and Deployment
cloud-init-packages.json
Cloud-init for cloud environment initialization
azurevm-packages.json
Azure-specific VM packages (WALinuxAgent, etc.)
marketplace-tools-packages.json
Azure Marketplace image tools
Security Packages
selinux.json
Basic SELinux packages
selinux-full.json
Complete SELinux packages with all policies
fips-packages.json
FIPS 140-2 compliant cryptographic modules
cvm-packages.json
Confidential VM packages (attestation, etc.)
drtm.json
Dynamic Root of Trust Measurement packages
Development and Tools
developer-packages.json
Development tools (gcc, make, git, etc.)
core-tools-packages.json
Additional system utilities and tools
Specialized Images
minimal-os-packages.json
Minimal bootable OS (smallest footprint)
distroless-packages-container.json
Distroless container base packages
distroless-packages-container-minimal.json
Ultra-minimal distroless packages
distroless-packages-debug.json
Distroless with debugging tools
baremetal-packages.json
Bare metal hardware support
rt-packages.json
Real-time kernel packages
Utilities
ssh-server.json
OpenSSH server packages
grub2-mkconfig.json
GRUB2 mkconfig support packages
core-container-builder-packages.json
Container build tools (Docker, buildah, etc.)
Creating Custom Package Lists
Create your own package list for specific use cases:Example: Web Server Package List
packagelists/web-server.json
Example: Monitoring Package List
packagelists/monitoring.json
Using Custom Package Lists
Common Package Combinations
Virtual Machine Image
Azure Marketplace Image
Minimal Container Base
FIPS-Compliant Image
Developer Workstation
Package Dependencies
Azure Linux automatically resolves package dependencies:- Dependencies are pulled from configured repositories
- Transitive dependencies are included
- Conflicts are detected and reported
- Version requirements are satisfied
You only need to list direct packages - dependencies are handled automatically.
Package Repositories
Packages are installed from repositories defined in:- Default Azure Linux repositories
- Custom repositories (for ISO installers via
PackageRepos)
Using Custom Repositories
packagelists/custom-packages.json
Best Practices
Order Package Lists Strategically
- Place core/essential packages first
- Add feature-specific packages next
- Put
initramfslast for faster installation
Keep Lists Modular
- Create separate lists for different features
- Reuse lists across configurations
- Easier to maintain and understand
Document Package Purposes
- Add comments in configuration files
- Document why specific packages are included
- Note dependencies between packages
Test Package Combinations
- Verify packages work together
- Check for size constraints
- Test functionality after installation
Never Include Kernel in Lists
- Always use
KernelOptionsfor kernels - Check dependencies don’t pull in kernels
- Validate configuration before building
Troubleshooting
Package Not Found
If a package is not found during installation:- Verify package name is correct
- Check package exists in repository
- Ensure repository is accessible
- Check repository architecture matches
Dependency Conflicts
If dependency conflicts occur:- Review package versions
- Check for incompatible packages
- Verify repository priorities
- Consider alternative packages
Large Image Size
If your image is too large:- Remove unnecessary package lists
- Use
DisableRpmDocsoption - Set
OverrideRpmLocalestoNONE - Audit packages for alternatives
Example Configurations
Minimal VM
Full-Featured VM
Next Steps
System Configuration
Configure system settings and options
Examples
View complete configuration examples