News

Distrobuilder 3.2 has been released

4 Apr 2025

Introduction

The distrobuilder team is proud to announce the release of distrobuilder 3.2!

This is primarily a bugfix release, updating some necessary logic to handle newer versions of the various distributions that distrobuilder supports.

Highlights are:

  • Improve Windows driver handling
  • Support for newer NixOS releases
  • systemd generator handles newer Linux distributions
  • Support for Alpaquita

The full list of commits is available below:

Detailed changelog
  • distrobuilder: Adjust name of driver inf files
  • distrobuilder: Also install exes when injecting drivers
  • windows: Refactor code for injecting drivers into a library for easier shared use
  • fedora: Add support for OCI images
  • ubuntu.yaml: add Noble, Oracular, Plucky
  • Move to geaaru/docker-companion fork
  • gomod: Update dependencies
  • opensuse: Temporarily switch to mirrorcache-eu to fix downloads
  • nixos: correctly handle 24.11
  • Update README.md
  • lxc.generator: Workaround issue with nsresourced
  • lxc.generator: Fix systemd-networkd on recent distros
  • Makefile: Sync update-gomod with Incus
  • imports: replace gopkg.in/antchfx/htmlquery.v1
  • gomod: Update dependencies
  • systemd: Relax read-only path workaround
  • remove nixos 24.05
  • Update openwrt-http_test.go to support v24.10 (and drop v21.x)
  • Update openwrt-http.go to support v24.10 (and drop v21.x)
  • Update builds.yml to v4 artifact actions
  • Change naming of INF files
  • docs: update supported Windows versions list
  • doc: Add XP (for Windows XP) to wordlist
  • Makefile: Bump minimum Go to 1.23.0
  • gomod: Update dependencies
  • github: Update base Ubuntu version
  • github: Update to use Go oldstable/stable
  • github: Bump actions version
  • Makefile: Remove deprecated -d flag
  • Makefile: Remove GOCACHE
  • README: Fix badge
  • sources: Add Alpaquita downloader
  • managers/apk: Support packages.repositories[].key
  • Add user/group ID mapping from passwd and group files
  • README: Add missing packages
  • systemd: Remove unused logic
  • systemd: Cleanup generator script
  • systemd: Apply overrides even when nesting is enabled
  • Fix spelling errors found by codespell
  • Update README.md - replace libguestfs-tools with libwin-hivex-perl
  • lint: Run codespell automatically
  • lxc.generator Fixed typo in comments
  • doc: Document runtime deps for building VM images
  • Makefile: Bump Go to 1.23.7
  • Update dependencies
  • golang-ci: Upgrade to v2
  • Fix golang-ci reported issues
  • sources: Alpaquita - use source.variant not image.variant

Downloads

Distrobuilder 3.1 has been released

26 Okt 2024

Introduction

The distrobuilder team is proud to announce the release of distrobuilder 3.1!

This is primarily a bugfix release, fixing a lot of small issues for a number of distributions as well as cleaning up some of our systemd and SELinux handling logic. Highlights are:

  • Improvement to Windows ISO repacking logic (should support more .iso images)
  • Fully removed LXD support
  • Better support for running on Red Hat derivative distros

The full list of commits is available below:

Detailed changelog
  • gomod: Bump to Go 1.20 minimum
  • Fix small logging issues
  • image: Use per-test temp dirs
  • README: Add note about minimum Go version
  • main: Fix VM builds when using build-lxd command
  • sources: Fix openeuler tests
  • nixos-http: support versioned releases
  • managers: Rebranding Macaroni OS Package Manager
  • Bump golang.org/x/crypto from v0.15.0 to v0.17.0
  • Bump github.com/containerd/containerd from v1.7.8 to v1.7.11
  • sources: Fix openEuler tests
  • main: Add missing --sources-dir to build-incus command
  • Update README.md Install Instructions
  • Update README.md
  • incus-agent: Refresh files
  • build(deps): bump github.com/opencontainers/runc from 1.1.10 to 1.1.12
  • incus-agent: Fix systemd unit name under LXD
  • Makefile: Bump minimum Go version to 1.21
  • README: Bump minimum Go version to 1.21
  • github: Replace Go 1.20 with 1.22 in tests
  • gomod: Update dependencies
  • Makefile: Bump golangci-lint to 1.56.0
  • A comment to describe the 4294967295 constant
  • Use indented heredoc syntax
  • Inject a comment into generated files
  • Expand grep -a to --text for readability
  • Make lxc.generator shellcheck clean
  • Break between systemd unit sections
  • incus-agent: Fix SELinux
  • Bump pongo2 to v4
  • Remove race in tests
  • debootstrap: Pass --no-merged-usr on noble
  • Debian sid no-merged-usr
  • Replace util.ValueInSlice with slices.Contains
  • Fixed hardcoded root partition device name sda2
  • Updated ubuntu example to use ROOTFS_DEVICE_UUID
  • gomod: Update dependencies
  • incus: Bump to 6.0
  • Make run-parts running compatible with different versions
  • Set repack-windows drivers default value
  • Clean up iso mount gen warnings
  • Refactory find boot.wim and install.wim logic
  • Refactor WIM info parsing
  • Support x86 architecture and refactor the detecting logic
  • gomod: Update dependencies
  • sphinx: Avoid myst-parser >=3.0.0
  • sources/funtoo: Use symlinks
  • archlinux: Move to zst
  • Repack windows bios boot support
  • Refactor copy driver files
  • Refactor parse inf driver class guid
  • Update actions.md
  • lxc.generator: Handle pre-release systemd
  • systemd v256 seems to require overriding ImportCredential= for all containers
  • Fixed duplicated umount action
  • Support http-proxy keyserver options for gpg recv-keys
  • Refactor import gpg public keys
  • distrobuilder: Remove LXD support
  • gomod: Update dependencies
  • gomod: Remove excludes
  • Fixed multiple sys files not copied issue
  • Update README.md
  • Update README.md
  • Fixed device major minor parse failure
  • vm: Fix lsblk parsing logic
  • Revert "vm: Fix lsblk parsing logic"
  • Revert "Fixed device major minor parse failure"
  • Fixed device major minor parse failure
  • Run unit tests via sudo
  • debootstrap: Remove no-merged-usr/merged-usr logic
  • debootstrap: Add workaround for devuan
  • sources: Fix openEuler tests
  • workflows/tests: drop 1.21, add 1.23
  • gomod: Update dependencies
  • Makefile: Align golangci-lint with Incus
  • global: Fix golangci-lint errors
  • nixos-http: use incus-specific image for unstable
  • Add handling of ESD files
  • Makefile: Bump to Go 1.22.7 base
  • gomod: Update dependencies
  • sources: Remove dead code
  • source: Add mkisofs support

Downloads

Distrobuilder 3.0 has been released

11 Nov 2023

Introduction

The distrobuilder team is proud to announce the release of distrobuilder 3.0!

Outside of the usual updates to account for changes made by various distributions, the main highlights are:

  • Incus is now used in place of LXD
  • Distributions
  • A lot of updates to handle newer distribution releases
  • Added support for VyOS
  • Added support for Slackware
  • Added support for NixOS
  • Several improvements to the systemd generator, which is also now shipped as a standalone file
  • Pongo templates can now be used in actions
  • Reworked documentation

The full list of commits is available below:

Detailed changelog
  • main: the systemd generator doesn't do anything on VMs
  • main: simplify NetworkManager and cloud-init handling
  • main: do distro ID comparison (quick) before grepping (slower)
  • main: add is_lxc_privileged_container function
  • main: Stop doing terrible things to NetworkManager
  • udev: Allow NetworkManager to manage veth interfaces
  • main: export LC_ALL=C
  • image/lxd: stop using qcow2 compat=0.10 (aka qcow2-v2)
  • sources/almalinux: Format isoRunner script
  • sources/almalinux: Drop hard-coded GPG key
  • doc/examples: Fix typos in examples
  • main: Reintroduce NetworkManager workaround
  • shared/util: Use multiple threads when compressing
  • main: Mask systemd-firstboot.service
  • sources/centos: Disable fastestmirror plugin
  • sources/centos: Use baseurl instead of metalink for repos
  • sources/gentoo: Download portage tree
  • managers/portage: Make refresh a no-op
  • sources/opensuse: Change URL path to Leap images
  • doc/generators: Fix link to LXD image format
  • sources/opensuse: Validate found tarball links
  • sources: Support Rocky Linux 9
  • sources/rhel: Check directory before listing its entries
  • sources/rocky: Fix gpg key and mirrorlist for v9
  • doc: mention that Windows Server 2022 is supported
  • Drop deprecated io/ioutil package
  • Update gomod
  • shared/archive: Fix call to RunCommandWithFds
  • shared/definition: Add Pongo support for actions
  • main,managers: Add Pongo support for actions
  • sources/alpine: Always download latest point release
  • source/alpine: Properly handle latest release when using edge
  • shared/logger: Set log output to stdout
  • shared/logger: Add padding to log level texts
  • sources/oracle: Find updates through iteration
  • sources/openwrt: Support OpenWrt 22.03
  • Add output note to image.md
  • Add rootfs-http to downloaders list
  • manages/{dnf,yum}: Use --nobest on package updates
  • managers/yum: Use --nobest only if available
  • Revert "managers: Drop luet"
  • sources: Support Springdale Linux 9
  • gomod: Exclude buggy dependency
  • Update gomod
  • systemd: Mask systemd-binfmt.service
  • source: add support for openeuler downloader
  • change release style to 22.03-LTS-SPx and try to select latest version
  • sources: Set user-agent for downloads
  • image,shared: Allow specifying compression level
  • image,shared: Allow use of lzo/lzop interchangeably
  • utils: Add missing user-agent string
  • sources: Increase TLS handshake timeout for downloads
  • sources: Pass client to downloadChecksum
  • main: Log error when main command fails
  • sources: Update openEuler tests
  • main: Ensure main error is logged
  • funtoo-http: Add support to next release
  • Update gomod
  • .github: Switch Go versions
  • doc: basic Sphinx setup
  • doc: apply Diataxis
  • doc: add GitHub action for automatic doc tests
  • doc: fix typos, linting and broken links
  • doc: add workflow to build documentation
  • doc: add link to snap
  • doc: remove version switcher (since we only have one version)
  • doc: only include GitHub link in the footer for actual pages
  • Fix broken link to use.md
  • doc/github workflows: cancel concurrent runs
  • doc: fix documentation warnings
  • doc: Update actions regards to the hook post-files
  • build(deps): bump github.com/opencontainers/runc from 1.1.4 to 1.1.5
  • Update CI test distros
  • Use LXD-style static analysis
  • Satisfy static analysis
  • build-dir: Add with-post-files flag
  • doc: Update build-dir usage
  • Fix remaining static analysis issues
  • main: Don't create cache directory if only validating
  • main: Check cmd in postRun function
  • shared/osarch: Use armv7 for alpine linux
  • main: Fix cache directory removal if it's a mountpoint
  • windows: Detect Windows architecture from filename
  • sources/rocky: Support Rocky Vault
  • sources: Add VyOS
  • *: Set fstype when mounting
  • sources/openwrt: Fix URL paths for arm builds
  • main: Allow masking units created by the lxc system-generator
  • github: Add DCO and target check
  • generators/lxd-agent: Use setup script for OpenRC
  • doc: add missing content for the tutorial
  • *: Drop support for upstart (no longer used)
  • Makefile: Add missing .PHONY for update-gomod
  • github: Align tests with LXD's tests
  • github: Run all doc tests in a single job
  • github: Move doc tests to the main tests.yml
  • github: Align builds with LXD's builds
  • github: Add dependency-review action to check for vulnerable deps
  • github: inclusive naming should fail on error
  • shared/util: Sort tar archives by name
  • image/lxd: Don't make rootfs.squashfs exportable via NFS
  • *: Update short description to mention VM images are supported
  • lxd-generator: Fix masking units created by generator
  • definition: Add Source.Components
  • doc/reference: add components field
  • source: Update openEuler test
  • Update gomod
  • Update imports to github.com/canonical/lxd
  • doc: Update index.md
  • sphinx: Update link to LXD docs
  • generators/lxd-agent: Update documentation in service file
  • Add CODE_OF_CONDUCT.md
  • main: Move VM check to global command
  • *: Apply filters on start
  • definition: Filter LXC targets
  • definition: Filter environment variables
  • Revert "definition: Filter environment variables"
  • Revert "definition: Filter LXC targets"
  • Revert "*: Apply filters on start"
  • Revert "main: Move VM check to global command"
  • main: Move VM check to global command
  • *: Apply filters on start
  • definition: Filter LXC targets
  • definition: Filter environment variables
  • Revert "definition: Filter environment variables"
  • Revert "definition: Filter LXC targets"
  • Revert "*: Apply filters on start"
  • Revert back to last working state
  • shared: Add filter to DefinitionTargetLXCConfig
  • image/lxc: Filter LXC metadata
  • Pass full definition to SetupChroot
  • shared: Add filter to DefinitionEnvVars
  • shared: Filter environment variables
  • github: Update branch target
  • windows: Mount Windows ISO as UDF instead of ISO9660
  • Fix troubleshoot link
  • Do not bring the networking down on container startup when using routed nic together with NetworkManager, as in this case networking is configured externally by lxd.
  • systemd: Tweak generator to handle systemd 254
  • systemd: Disable ImportCredentials when privileged on 254+
  • udev: Trigger lxd-agent even on change events
  • systemd: Make sure subshell returns success
  • github: replace golang 1.19 with 1.21
  • Add support for slackware - added http source (works with 15.0 and current) - added slackpkg manager (upgrade/clean fail if there are not any packages to upgrade/clean)
  • global: Use incus repository
  • Update gomod
  • global: Rename files lxd -> incus
  • main: Rename {build,pack}-lxd to {build,pack}-incus
  • generators,image: Rename LXD to Incus
  • definition: Rename targets.lxd to targets.incus
  • global: Rename lxd import to incus
  • sphinx: Change URL to Incus
  • README: Update for Incus
  • global: Rename output files
  • Rename lxd-agent to incus-agent
  • global: Rename build-lxd to build-incus
  • global: Rename pack-lxd to pack-incus
  • generators: Remove mentions of LXD
  • distrobuilder: Remove mentions of LXD
  • doc: Update for Incus
  • sphinx: Add Incus
  • sources: Fix slackware
  • Update gomod
  • dnf: Also use nobest for install
  • incus-agent: Fix lxd-agent fallback logic
  • Update gomod
  • shared: Update for Incus packages
  • Added rpmbootstrap source
  • global: Update to current incus/shared
  • Update openwrt-http.go for 23.05
  • sources: Add NixOS
  • Update openwrt-http.go for handling new 23.x release
  • Bugfix in openwrt-http.go to handle 23.x ARM release
  • Missing } in openwrt-http.go
  • Update openwrt-http_test.go for new versions (untested)
  • generator: Extract systemd generator from code
  • Support dnf in rpmbootstrap
  • main: Keep track of current subcommand
  • main_validate: Set SinceErrors to true
  • shared/osarch: Add x86_64 to Alpine architecture map
  • Update gomod
  • Update Vyos rolling update iso url

Downloads

Distrobuilder 2.1 has been released

27 Apr 2022

Introduction

The distrobuilder team is proud to announce the release of distrobuilder 2.1!

Outside of the usual updates to account for changes made by various distributions, the main highlights are:

  • Removal of Ubuntu Core support
  • Validation of YAML configuration
  • Support for local files in the rootfs source
  • Support for native Windows 11 drivers when available
  • Addition of virtiostor driver on Windows
  • New --sources-dir and --keep-sources command line arguments
  • Update to LXD's new cloud-init configuration keys
  • Change of logging framework (logrus)

The full list of commits is available below:

Detailed changelog
  • sources/oracle: Run yum with --skip-broken
  • ubuntu.yaml: add releases hirsute, impish, jammy
  • sources: Fix Oracle 7 for aarch64
  • sources: Fix Oracle install script
  • sources/rootfs: Support local files
  • doc: Mention local image files for rootfs downloader
  • main: Add --sources-dir and --keep-sources
  • sources: Pass sourcesDir to downloaders
  • shared,sources: Reorganize code
  • sources: Drop arguments on VerifyFile
  • sources: Drop arguments on GetSignedContent
  • sources: Drop arguments on CreateGPGKeyring
  • main: Change directory of virtioISOPath
  • doc: Add --sources-dir and --keep-sources
  • sources: Fix RHEL common build directories
  • main: Fix timeout handler
  • generators: Use new cloud-init config keys
  • main: Handle interrupt and timeout with context
  • *: Add context to RunCommand
  • *: Add stdin and stdout to RunCommand
  • : Replace lxd.RunCommand with shared.RunCommand
  • sources: Add context to recvGPGKeys
  • generators: Fix cloud-init network config
  • generators: Add trailing newline to cloud-init files
  • managers: Add missing context to struct
  • Update gomod
  • *: Allow cancelling downloads using context
  • *: Clean up failed downloads
  • .github/workflows: Drop Go 1.13
  • sources: Fix downloads with multiple hashes
  • sources: Drop Sabayon
  • managers: Drop luet
  • Update gomod
  • *: Switch from zap to logrus
  • sources/alt: Support armhf
  • gomod: Update dependencies
  • systemd: Use absolute path to udevadm
  • generators/cloud-init: Fix network-config
  • systemd-generator: Handle /bin/udevadm
  • generators/cloud-init: Fix content override
  • Add compatibility with CentOS 9 stream.
  • systemd: Add override for ProcSubset
  • Fixed typo
  • lxd-agent: cleaner shutdown sequence
  • windows: Use available w11 and 2k22 drivers
  • sources: Switch to own Unpack function
  • Update gomod
  • Revert "lxd-agent: cleaner shutdown sequence"
  • vm: Use discard mount option
  • Update gomod
  • github: Drop go 1.16.x and 1.17.x
  • Makefile: Update for go 1.18
  • vm: Optimise mount options for speed
  • Satisfy staticcheck
  • Update gomod
  • Makefile: Switch to staticcheck
  • main: Fix image targets for LXD
  • lxd-agent: Sync with upstream LXD
  • main: override systemd features only when security.nesting=false
  • source: Return error correctly
  • sources/ubuntu: Drop Ubuntu Core
  • Remove data directory
  • shared/definition: Add DefinitionFilterType
  • main: Use UnmarshalStrict
  • main: Add validate sub-command
  • main: Use DefinitionFilterType
  • shared/definition: Fix unmarshalling of DefinitionFilterType
  • test: Add TestDefinitionFilterTypeUnmarshalYAML
  • main: systemd's ReadWritePaths came with version 231
  • windows: Add viostor driver

Downloads

Distrobuilder 2.0 has been released

18 Okt 2021

Introduction

The distrobuilder team is proud to announce its initial release, distrobuilder 2.0!

As usual, this release fixes a variety of issues as Linux distributions evolve and change the way they're built. Additionally, it also improves the Windows ISO repack feature quite a bit and introduces support for directly importing an image into LXD

The main highlights are:

  • windows: Support for Windows 11 and Windows Server 2022 ISO images
  • windows: Addition of virtio GPU driver
  • gentoo: Support for custom variants
  • New --import-into-lxd command line option

The full list of commits is available below:

Detailed changelog
  • Makefile: Tweak generation of dist tarball
  • sources/plamolinux: Support new pkgtools8
  • main: Check systemd-sysctl path
  • systemd: Properly check for instance type
  • windows: Add Windows 11 support
  • sources/plamolinux: Fix a process related to pkgtools8
  • sources/plamolinux: more fix related to pkgtools8
  • Update gomod
  • main: Skip overlay on zfs
  • *: Replace Wrap with WithMessage
  • windows: Fix pongo variable name in balloon driver
  • *: Replace RunCommand with RsyncLocal
  • utils: Fix error handling in RsyncLocal
  • windows: Add driver viogpudo
  • Update mkdocs.yml
  • main: Add support for Windows Server 2022
  • *: Switch to errors without stack traces
  • Update go modules
  • sources/openwrt: Drop lxd-openwrt repo and SDK
  • main: Log image creation
  • sources/gentoo: Allow custom source variants
  • *: Record created filenames
  • main: Add --import-into-lxd flag
  • Update go mod
  • doc: Update packages.md
  • doc: Update building.md
  • main: Fix post-files actions for lxc
  • main: Check for snap when importing LXD image
  • shared/definition: s/-/_/
  • generators: Add definition to generator init
  • generators: Drop template rendering in cloud-init and dump
  • doc: Update renamend key values
  • doc/generators: Add missing source field
  • doc: Mention general pongo support
  • shared/util: Add Retry function
  • shared/net: Use Retry for downloads
  • sources: Use Retry for networking
  • Update go.mod
  • sources/debootstrap: Handle merged /usr
  • systemd: drop unused variable
  • systemd: double quote to prevent globbing and word splitting
  • systemd: generate zzz-lxc-service.conf in one go
  • main: remove NoNewPrivileges=no from systemd-generator
  • Revert "main: remove NoNewPrivileges=no from systemd-generator"
  • github: Bump Go versions
  • sources/oracle: Fix rpm/yum issue
  • Update gomod

Downloads

Older news