Load loop module before starting the container (#824)

This makes sure that the kernel module loop is loaded, the loop devices
under /dev have been created before the container starts. Docker uses
the current /dev as template for the container /dev. If the loop entries
are missing, loop devices can't be used inside the container. Use
losetup which does not make assumption weather loop support is built-in.

This fixes issues seen on my machine when entering the build environment
the first time after build:
  mount: /mnt/data: failed to setup loop device for /export/data.ext4.
  make[2]: *** [package/pkg-generic.mk:364: /build/buildroot/output_rpi4/build/hassio-1.0.0/.stamp_target_installed] Error 32
This commit is contained in:
Stefan Agner 2020-08-18 10:46:28 +02:00 committed by GitHub
parent b19f83d74d
commit c6a1e668f4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -9,6 +9,9 @@ sudo mkdir -p "${CACHE_DIR}"
sudo chown -R "${BUILDER_UID}:${BUILDER_GID}" "${CACHE_DIR}" sudo chown -R "${BUILDER_UID}:${BUILDER_GID}" "${CACHE_DIR}"
sudo docker build -t hassos:local . sudo docker build -t hassos:local .
# Make sure loop devices are present before starting the container
sudo losetup -f > /dev/null
# shellcheck disable=SC2086 # shellcheck disable=SC2086
sudo docker run -it --rm --privileged \ sudo docker run -it --rm --privileged \
-v "$(pwd):/build" -v "${CACHE_DIR}:/cache" \ -v "$(pwd):/build" -v "${CACHE_DIR}:/cache" \