# 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](../environment/index.html.md)
* [Daemon behavior](../daemon-behavior/index.html.md)
* [UEFI variables for VMs](../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](../syscall-interception/index.html.md)
* [User namespace setup](../userns-idmap/index.html.md)

## Subsystem internals

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

## Related topics

How-to guides:

- [Troubleshooting](../howto/troubleshoot/index.html.md#troubleshoot)
- [Track a bugfix in the LXD snap](../howto/snap_track_fix/index.html.md#snap-track-bugfix)
