1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
|
# distrobuilder
System container and VM image builder for Incus and LXC.
## Status
Type | Service | Status
--- | --- | ---
CI | GitHub | [](https://github.com/lxc/distrobuilder/actions)
Project status | CII Best Practices | [](https://bestpractices.coreinfrastructure.org/projects/1728)
## Command line options
<!-- Include start CLI -->
The following are the command line options of `distrobuilder`. You can use `distrobuilder` to create container images for both Incus and LXC.
```bash
$ distrobuilder
System container and VM image builder for Incus and LXC
Usage:
distrobuilder [command]
Available Commands:
build-dir Build plain rootfs
build-incus Build Incus image from scratch
build-lxc Build LXC image from scratch
help Help about any command
pack-incus Create Incus image from existing rootfs
pack-lxc Create LXC image from existing rootfs
repack-windows Repack Windows ISO with drivers included
Flags:
--cache-dir Cache directory
--cleanup Clean up cache directory (default true)
--debug Enable debug output
--disable-overlay Disable the use of filesystem overlays
-h, --help help for distrobuilder
-o, --options Override options (list of key=value)
-t, --timeout Timeout in seconds
--version Print version number
Use "distrobuilder [command] --help" for more information about a command.
```
<!-- Include end CLI -->
<!-- Include start installing -->
## Installing from package
`distrobuilder` is available from the [Snap Store](https://snapcraft.io/distrobuilder).
```
sudo snap install distrobuilder --classic
```
## Installing from source
To compile `distrobuilder` from source, first install the Go programming language, and some other dependencies.
- Debian-based:
```
sudo apt update
sudo apt install -y golang-go gcc debootstrap rsync gpg squashfs-tools git make build-essential libwin-hivex-perl wimtools genisoimage
```
- ArchLinux-based:
```
sudo pacman -Syu
sudo pacman -S go gcc debootstrap rsync gnupg squashfs-tools git make hivex cdrtools wimlib --needed
```
- Red Hat-based:
```
sudo dnf check-update
sudo dnf install golang gcc debootstrap rsync gnupg2 squashfs-tools git make hivex genisoimage
```
NOTE: Distrobuilder requires Go 1.21 or higher, if your distribution doesn't have a recent enough version available, [get it from upstream](https://go.dev/doc/install).
Second, download the source code of the `distrobuilder` repository (this repository).
```
mkdir -p $HOME/go/src/github.com/lxc/
cd $HOME/go/src/github.com/lxc/
git clone https://github.com/lxc/distrobuilder
```
Third, enter the directory with the source code of `distrobuilder` and run `make` to compile the source code. This will generate the executable program `distrobuilder`, and it will be located at `$HOME/go/bin/distrobuilder`.
```
cd ./distrobuilder
make
```
Finally, you can run `distrobuilder` as follows.
```
$HOME/go/bin/distrobuilder
```
You may also add the directory `$HOME/go/bin/` to your $PATH so that you do not need to run the command with the full path.
## Runtime dependencies for building VM images
If you intend to build Incus VM images (via `distrobuilder build-incus --vm`),
your system will need certain tools installed:
- Debian-based:
```
sudo apt update
sudo apt install -y btrfs-progs dosfstools qemu-kvm
```
<!-- Include end installing -->
## How to use
See [How to use `distrobuilder`](doc/howto/build.md) for instructions.
## Troubleshooting
See [Troubleshoot `distrobuilder`](doc/howto/troubleshoot.md).
|