News

Distrobuilder 3.1 has been released

2024/10/26

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

2023/11/11

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

2022/04/27

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

2021/10/18

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

Distrobuilder 1.3 has been released

2021/08/09

Introduction

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

The main highlights are:
- New systemd generator to dynamically apply needed tweaks in containers
- Support for AlmaLinux, SpringdaleLinux and RockyLinux (using shared CentOS logic)
- Support for busybox images

The full list of commits is available below:

Detailed changelog
  • sources/centos: Support patch releases
  • sources/centos: Fix CentOS 8-Stream
  • sources/centos: Only print error on patch releases
  • sources/centos: Fix CentOS 8 Stream
  • sources/centos: Fix centos-stream-repos package on 8-Stream
  • sources: Support OpenWrt on ARM
  • main: Fix systemd capabilities
  • sources/funtoo: Handle missing releases
  • sources/funtoo: Improve error handling
  • managers/zypper: Add --replacefiles flag to install
  • main: Consider the case of boot.wim and install.wim
  • systemd: Also disable ProtectKernelTunables=no
  • Adding AlmaLinux to build code
  • Adds almalinux-http to valid downloaders list
  • sources/funtoo: Add missing break
  • main: Skip overlay on xfs
  • main: Run systemd fix before post-files actions
  • main: Add --disable-overlay flag
  • main: Add systemd generator
  • sources: Add generic HTTP downloader
  • shared/definition: Support rootfs-http
  • sources: Add Rocky Linux
  • shared/definition: Support rockylinux-http downloader
  • sources: Add Springdale Linux
  • shared/definition: Support springdalelinux-http downloader
  • main: Support source.URL template
  • systemd: Refactor generator
  • systemd-generator: Some small fixes
  • main: Fix typos in systemd-generator
  • main: Refactor networkd/resolved fixes
  • main: Simplify sed call
  • main: s/which/type/ in systemd generator
  • main: Make sure to return 0
  • main: Add settings for privileged containers
  • main: Fix cloud-init and NetworkManager detection
  • main: Add more distros to NetworkManager fix
  • main: Fix calls to fix_ro_paths
  • main: Restrict networkd/resolved fix to unprivileged containers
  • main: Fix path of ip command
  • main: Add /lib/systemd to searchable paths
  • systemd: Make sure override runs last
  • systemd: Fix Oracle networking
  • systemd: Make network-connection-activate work on Oracle
  • systemd: Always apply NM fix on centos
  • almalinux: clean up downloader code and add beta/rc support
  • main: Fix typo in systemd generator
  • main: Add fix for systemd-udev-trigger.service
  • systemd: Mask more units
  • main: Add fix for systemd-sysctl
  • sources/opensuse: Fix path to non-x86_64 tarballs
  • sources/opensuse: Fix URL to tarballs
  • main: Replace Sanity Checks with Quick Checks
  • sources: Rework downloader
  • sources: s/docker/docker-http/
  • systemd: Mask systemd-pstore.service
  • sources/centos: Support CentOS 8 on armhf
  • sources/oracle: Fix ISO paths and support aarch64
  • main: Mask ua-messaging.service
  • sources: Remove duplicate code
  • sources/almalinux: Update errors
  • sources/alpine: Update errors
  • sources/alt: Update errors
  • sources/apertis: Update errors
  • sources/archlinux: Update errors
  • sources/centos: Update errors
  • sources/debootstrap: Update errors
  • sources/docker: Update errors
  • sources/fedora: Update errors
  • sources/funtoo: Update errors
  • sources/gentoo: Update errors
  • sources/opensuse: Update errors
  • sources/openwrt: Update errors
  • source/oraclelinux: Update errors
  • sources/plamolinux: Update errors
  • sources/rhel-common: Update errors
  • sources/rocky: Update errors
  • sources/rootfs: Update errors
  • sources/sabayon: Update errors
  • sources/springdalelinux: Update errors
  • sources/ubuntu: Update errors
  • sources/voidlinux: Update errors
  • sources/centos: Add more GPG keys
  • sources/oracle: Run yum with --skip-broken
  • managers: Refactor
  • main: Use refactored managers
  • Drop apt-transport-https (transitional since 18.04)
  • Revert "sources/oracle: Run yum with --skip-broken"
  • sources/oracle: Fix iso script
  • Avoid systemd generator to break systemd-networkd connections
  • sources/oracle: Fix OL7 base URL
  • sources/centos: Add GPG keys early
  • sources/centos: Fix CentOS repo names
  • sources/centos: Check repo before disabling it
  • sources/centos: Include more gpg keys
  • openwrt: Add ability to make 21.02 RC images
  • systemd: Mask hwdb-update
  • Drop Ubuntu 14.04 (EOL)
  • Drop Ubuntu 16.04 (EOL)
  • sources/gentoo: Support arm64
  • sources/gentoo: Support source variant
  • systemd: Fix typo in unit name
  • generators: Drop upstart-tty
  • generators: Refactor generators
  • main: Use refactored generators
  • main: Check filter before loading generator
  • main: Clean up properly on timeout/interrupt
  • main: Write to stderr if GetLogger fails
  • main: Extend logging
  • Wrap errors
  • sources: Fix gentoo regexes
  • main: Add NoNewPrivileges=no to systemd-generator
  • sources: Fix gentoo source variant check
  • Update go modules
  • sources: Pass cache directory
  • sources: Replace TempDir with cacheDir
  • sources: Fix unmount for rhel based distros
  • sources: Add busybox
  • systemd: Add systemd-sysusers workaround
  • archlinux: Switch test to official mirror
  • sources/centos: Fix error message
  • sources/centos: Unmount raw file
  • sources/openwrt: Fix directory name
  • vm: Check existance of loop device before detaching it
  • vm: Fix error message
  • sources/busybox: Fix mkdir call
  • sources/busybox: Fix build
  • sources/busybox: Remove test logging message
  • sources/busybox: Rename directories to make more sense
  • Update gomod
  • doc: Update build instructions
  • doc: Update usage
  • main: Add logging
  • sources: Add logging
  • main: Wrap overlay errors
  • doc/index: Drop internal command
  • Hide completion sub-command
  • Makefile: Set GO111MODULE
  • image: Fix LXD compression
  • image: Add compression flag for lxc images
  • image: Update tests
  • shared: Add zstd compression
  • main: Add type and compression to help message
  • sources/alt: Update tarball url (add arch subdir)
  • sources/alt: Update checksum and gpg file paths
  • main: Remove duplicate defer statement
  • main: Disable overlay on FUSE filesystems
  • image: Fix unified LXD tarballs
  • sources/openwrt: Remove verification
  • main: Support ISO generation with mkisofs

Downloads

Older news