Mathias' Blog

Occasional musings and technical posts…

01 Apr 2022

LXD Packaging Report, 5.0 LTS edition

Progress on getting LXD packaged for Debian continues, although at a bit slower rate the past couple of months due to real life being pretty busy.

LXD 5.0 LTS was just released, and now that the new LTS version is out, Debian packaging will switch to tracking the LTS releases as that better aligns with Debian’s concept of a longer term “stable” release. For those interested, you can track any changes in the salsa.d.o git repo.

At this point, I’m basically waiting for a couple more packages to get uploaded to/updated in unstable before LXD is ready to submit to NEW. I think the work is pretty much done and I’m actually running the resulting packaged version of LXD locally with great success. If anyone else is interested in “beta testing” the LXD packaging, you can visit for details on how to add my repository to your system. LXD is packaged and available for both bullseye and bookworm, for the amd64 and i386 architectures.

LXD getting into Debian is very close to happening! :)

Update notes if you had previously been using my “ugly” LXD packages:

I know some people had previously installed my “ugly” LXD packages for LXD 4.x, which I was running prior to beginning proper LXD packaging work for Debian. There’s not a direct upgrade path from the “ugly” to proper LXD packages, but here’s the basics of how I updated one of my servers.

First, remove the old LXD and its dependencies. Note that you probably don’t want to purge the lxd install, as that will wipe out /var/lib/lxd/ which is the default location for containers that LXD creates with the directory storage backend.

gibmat@narya:~$ lxc stop <all running containers>
gibmat@narya:~$ sudo apt remove lxd lxd-client
gibmat@narya:~$ sudo apt remove --purge liblxc1 lxc
gibmat@narya:~$ sudo apt autoremove --purge

Then, modify the existing lxd user to reflect what the updated packaging is expecting. On my system, the lxd user was

gibmat@narya:~$ id lxd
uid=110(lxd) gid=65534(nogroup) groups=65534(nogroup)

and I changed it to

gibmat@narya:~$ id _lxd
uid=110(_lxd) gid=114(lxd) groups=114(lxd)

(The lxd group had previously existed.)

Then, I extended the sub[u|g]id ranges for the _lxd and root users to include the recommended range of 100,000,000 IDs.


gibmat@narya:~$ sudo apt update
gibmat@narya:~$ sudo apt install lxd

gibmat@narya:~$ dpkg -l | grep lx
ii  liblxc-common    1:4.0.11-1~bpo11+1   amd64   Linux Containers userspace tools (library)
ii  liblxc1:amd64    1:4.0.11-1~bpo11+1   amd64   Linux Containers userspace tools (library)
ii  lxcfs            4.0.7-1              amd64   FUSE based filesystem for LXC
ii  lxd              5.0.0-1~bpo11+1      amd64   Powerful system container and virtual machine manager - daemon
ii  lxd-client       5.0.0-1~bpo11+1      amd64   Powerful system container and virtual machine manager - client

gibmat@narya:~$ lxc version
Client version: 5.0.0
Server version: 5.0.0

I haven’t had any issues with previously existing containers starting up with the new LXD packaging, but of course your mileage may vary. The safest course of action would be to export your containers, then start completely fresh with the new LXD packages and re-import your containers.