**Alternative: Build image using manual `dnf --installroot`**
```bash
```bash
img_name=xcache-$(date +%Y-%m-%d-%H%M)
img_name=xcache-$(date +%Y-%m-%d-%H%M)
build_image.sh /var/lib/machines/$img_name
build_image.sh /var/lib/machines/$img_name
```
```
**after building the image don't forget to [set the permissions for the image](#set-permissions-for-image)**
# Create xrootd user in host system
# Create xrootd user in host system
We will map the xrootd user id inside the container (typically 999) to one shifted by 65536 * 10 on the host system. This is an arbitrary choice and one should check this range of user ids is not used by anything else. Problem with this: what if we create a new image and for some reason xrootd ends up being a different user - then it won't be correct anymore for this image. One solution would be to force the user id inside the container to be a fixed one during image building ...
We will map the xrootd user id inside the container (typically 999) to one shifted by 65536 * 10 on the host system. This is an arbitrary choice and one should check this range of user ids is not used by anything else. Problem with this: what if we create a new image and for some reason xrootd ends up being a different user - then it won't be correct anymore for this image. One solution would be to force the user id inside the container to be a fixed one during image building ...
To be able to mount the image read-only the permissions need to be set correctly once. This can be achieved with the following command
```
systemd-nspawn --volatile=no --private-users-chown --private-users=655360 -D /var/lib/machines/$img_name ls -la /
```
# Directories for bind mounts
# Directories for bind mounts
Create directories for bind mounts and make them owned by xrootd where nescessary. Here one needs to check that the data directory is the correct path (e.g. the path where the raid system is mounted) and possibly adjust the bind mount in `/etc/systemd/nspawn/xcache.nspawn`
Create directories for bind mounts and make them owned by xrootd where nescessary. Here one needs to check that the data directory is the correct path (e.g. the path where the raid system is mounted) and possibly adjust the bind mount in `/etc/systemd/nspawn/xcache.nspawn`