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
tobuild-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¶
- Main release tarball: distrobuilder-3.1.tar.gz
- GPG signature: distrobuilder-3.1.tar.gz.asc
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¶
- Main release tarball: distrobuilder-3.0.tar.gz
- GPG signature: distrobuilder-3.0.tar.gz.asc
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¶
- Main release tarball: distrobuilder-2.1.tar.gz
- GPG signature: distrobuilder-2.1.tar.gz.asc
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¶
- Main release tarball: distrobuilder-2.0.tar.gz
- GPG signature: distrobuilder-2.0.tar.gz.asc
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¶
- Main release tarball: distrobuilder-1.3.tar.gz
- GPG signature: distrobuilder-1.3.tar.gz.asc