#!/bin/bash configure_modprobe() { local sysext_name="${1}" shift local module_directories=(./usr/lib/modules/*-flatcar/) mkdir -p ./usr/lib/modprobe.d/ for module_name in $(find "${module_directories[@]}" -type f \( -name "*.ko" -o -name "*.ko.*" \) -printf "%f\n" | sed -E 's/\.ko(\.\w+)?$//'); do cat <> "./usr/lib/modprobe.d/10-${sysext_name}-kmod-sysext.conf" install $module_name /usr/libexec/_${sysext_name}_modprobe_helper $module_name remove $module_name /usr/libexec/_${sysext_name}_modprobe_helper -r $module_name EOF done mkdir -p ./usr/libexec/ install -m0755 -D /dev/stdin "./usr/libexec/_${sysext_name}_modprobe_helper" <<'EOF' #!/bin/bash set -euo pipefail action="Loading" for arg in "$@"; do if [[ $arg == "-r" ]]; then action="Unloading" fi done echo "$action kernel module from a sysext..." KMOD_PATH=/usr/lib/modules/$(uname -r) TMP_DIR=$(mktemp -d) trap "rm -rf -- '${TMP_DIR}'" EXIT mkdir "${TMP_DIR}"/{upper,work} unshare -m bash -s -- "${@}" <