Skip to content

Instantly share code, notes, and snippets.

@jepio
Created March 3, 2022 10:26
Show Gist options
  • Select an option

  • Save jepio/ee301a76b437c80f5533588172bc790e to your computer and use it in GitHub Desktop.

Select an option

Save jepio/ee301a76b437c80f5533588172bc790e to your computer and use it in GitHub Desktop.
Script to create an overlay that can be used when building falco dkms module on Flatcar
#!/bin/bash
rm -rf /tmp/overlay
mkdir -p /tmp/overlay/.hidden
pushd /tmp/overlay
# this wrapper ensures that we use our dynamic linker and preload our libc version
cat >.hidden/wrapper.sh <<'EOF'
#!/bin/bash
prefix="$(dirname "$(dirname "$(realpath $0)")")/"
prog="$(realpath "$(dirname "$0")")/$(basename "$0")"
prog="${prog#${prefix}}"
prefix="${prefix%/}/.hidden"
exec "${prefix}"/ld-linux-x86-64.so.2 --library-path "${prefix}" "${prefix}/${prog}" "${@}"
EOF
chmod +x .hidden/wrapper.sh
cp /lib/ld-linux-*.so.* .hidden/
cp /lib/libc.so.* .hidden/
kdir="/lib/modules/$(uname -r)"
find "${kdir}/build" -type f -executable | while read prog; do
relprog="${prog#*/*/*/*/*/}"
dir="$(dirname "${relprog}")"
mkdir -p ".hidden/${dir}" "${dir}"
cp "${prog}" ".hidden/${dir}/"
target="$(sed -e 's|[^/]\+/|../|g' <<<"${dir}/").hidden/wrapper.sh"
ln -sf "${target}" "${relprog}"
done
popd
echo "done; to mount:"
echo ""
echo " mount -t overlay -o lowerdir=/tmp/overlay:${kdir}/build overlay ${kdir}/build"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment