From c1550bb154cde5cb975ff879cf60c7b75ae2d025 Mon Sep 17 00:00:00 2001 From: aptalca <541623+aptalca@users.noreply.github.com> Date: Fri, 21 Apr 2023 16:38:54 -0400 Subject: [PATCH] Fix perms for /dev/kfd --- .../init-mod-jellyfin-amd-add-package/run | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/root/etc/s6-overlay/s6-rc.d/init-mod-jellyfin-amd-add-package/run b/root/etc/s6-overlay/s6-rc.d/init-mod-jellyfin-amd-add-package/run index 9c68ccf..b6aad2c 100755 --- a/root/etc/s6-overlay/s6-rc.d/init-mod-jellyfin-amd-add-package/run +++ b/root/etc/s6-overlay/s6-rc.d/init-mod-jellyfin-amd-add-package/run @@ -41,3 +41,37 @@ if "$install"; then echo "**** Adding mesa and rocm-opencl-runtime to package install list ****" echo "$pkgs" >> /mod-repo-packages-to-install.list fi + +FILES=$(find /dev/kfd -type c -print 2>/dev/null) + +for i in $FILES +do + VIDEO_GID=$(stat -c '%g' "${i}") + VIDEO_UID=$(stat -c '%u' "${i}") + # check if user matches device + if id -u abc | grep -qw "${VIDEO_UID}"; then + echo "**** permissions for ${i} are good ****" + else + # check if group matches and that device has group rw + if id -G abc | grep -qw "${VIDEO_GID}" && [ $(stat -c '%A' "${i}" | cut -b 5,6) = "rw" ]; then + echo "**** permissions for ${i} are good ****" + # check if device needs to be added to video group + elif ! id -G abc | grep -qw "${VIDEO_GID}"; then + # check if video group needs to be created + VIDEO_NAME=$(getent group "${VIDEO_GID}" | awk -F: '{print $1}') + if [ -z "${VIDEO_NAME}" ]; then + VIDEO_NAME="video$(head /dev/urandom | tr -dc 'a-z0-9' | head -c4)" + groupadd "${VIDEO_NAME}" + groupmod -g "${VIDEO_GID}" "${VIDEO_NAME}" + echo "**** creating video group ${VIDEO_NAME} with id ${VIDEO_GID} ****" + fi + echo "**** adding ${i} to video group ${VIDEO_NAME} with id ${VIDEO_GID} ****" + usermod -a -G "${VIDEO_NAME}" abc + fi + # check if device has group rw + if [ $(stat -c '%A' "${i}" | cut -b 5,6) != "rw" ]; then + echo -e "**** The device ${i} does not have group read/write permissions, attempting to fix inside the container. ****" + chmod g+rw "${i}" + fi + fi +done