# Internals

These reference guides document the internal workings of LXD and are primarily intended for contributors and developers.

## Runtime behavior

The LXD client and daemon can use environment variables for paths, proxies, and advanced features. Daemon startup, shutdown, and signal handling are also documented here.

* [Environment variables](https://canonical.com/lxd/docs/latest/environment/index.html.md)
* [Daemon behavior](https://canonical.com/lxd/docs/latest/daemon-behavior/index.html.md)
* [UEFI variables for VMs](https://canonical.com/lxd/docs/latest/reference/uefi_variables/index.html.md)

## Security and isolation

Specific system calls from containers can be intercepted and handled safely by the LXD daemon. User namespaces use UID/GID idmaps to isolate containers from the host.

* [System call interception](https://canonical.com/lxd/docs/latest/syscall-interception/index.html.md)
* [User namespace setup](https://canonical.com/lxd/docs/latest/userns-idmap/index.html.md)

## Subsystem internals

* [OVN implementation](https://canonical.com/lxd/docs/latest/reference/ovn-internals/index.html.md)
* [VM live migration implementation](https://canonical.com/lxd/docs/latest/reference/vm_live_migration_internals/index.html.md)
* [Dqlite database for cluster state](https://canonical.com/lxd/docs/latest/reference/dqlite-internals/index.html.md)
* [ZFS storage driver](https://canonical.com/lxd/docs/latest/reference/storage_zfs_internals/index.html.md)

## Related topics

How-to guides:

- [Troubleshooting](https://canonical.com/lxd/docs/latest/howto/troubleshoot/index.html.md#troubleshoot)
- [Track a bugfix in the LXD snap](https://canonical.com/lxd/docs/latest/howto/snap_track_fix/index.html.md#snap-track-bugfix)
