Skip to content

Commit 24be3b4

Browse files
authored
core: Fix VAAPI passthrough for unprivileged LXC containers via devX (#5875)
1 parent 54d534a commit 24be3b4

File tree

2 files changed

+26
-43
lines changed

2 files changed

+26
-43
lines changed

misc/build.func

Lines changed: 26 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1142,64 +1142,48 @@ EOF
11421142

11431143
echo ""
11441144
msg_custom "⚙️ " "\e[96m" "Configuring VAAPI passthrough for LXC container"
1145-
11461145
if [ "$CT_TYPE" != "0" ]; then
11471146
msg_custom "⚠️ " "\e[33m" "Container is unprivileged – VAAPI passthrough may not work without additional host configuration (e.g., idmap)."
11481147
fi
1149-
11501148
msg_custom "ℹ️ " "\e[96m" "VAAPI enables GPU hardware acceleration (e.g., for video transcoding in Jellyfin or Plex)."
1151-
11521149
echo ""
11531150
read -rp "➤ Automatically mount all available VAAPI devices? [Y/n]: " VAAPI_ALL
11541151

11551152
if [[ "$VAAPI_ALL" =~ ^[Yy]$|^$ ]]; then
1156-
# Mount all devices automatically
1157-
if [[ -e /dev/dri/renderD128 ]]; then
1158-
echo "lxc.cgroup2.devices.allow: c 226:128 rwm" >>"$LXC_CONFIG"
1159-
echo "lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file" >>"$LXC_CONFIG"
1160-
fi
1161-
if [[ -e /dev/dri/card0 ]]; then
1162-
echo "lxc.cgroup2.devices.allow: c 226:0 rwm" >>"$LXC_CONFIG"
1163-
1164-
echo "lxc.mount.entry: /dev/dri/card0 dev/dri/card0 none bind,optional,create=file" >>"$LXC_CONFIG"
1165-
fi
1166-
if [[ -e /dev/fb0 ]]; then
1167-
echo "lxc.cgroup2.devices.allow: c 29:0 rwm" >>"$LXC_CONFIG"
1168-
echo "lxc.mount.entry: /dev/fb0 dev/fb0 none bind,optional,create=file" >>"$LXC_CONFIG"
1169-
fi
1170-
if [[ -d /dev/dri ]]; then
1171-
echo "lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir" >>"$LXC_CONFIG"
1172-
fi
1173-
else
1174-
# Manual selection per device
1175-
if [[ -e /dev/dri/renderD128 ]]; then
1176-
read -rp "➤ Mount /dev/dri/renderD128 (GPU rendering)? [y/N]: " MOUNT_D128
1177-
if [[ "$MOUNT_D128" =~ ^[Yy]$ ]]; then
1153+
if [ "$CT_TYPE" == "0" ]; then
1154+
# PRV Container → alles zulässig
1155+
[[ -e /dev/dri/renderD128 ]] && {
11781156
echo "lxc.cgroup2.devices.allow: c 226:128 rwm" >>"$LXC_CONFIG"
11791157
echo "lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file" >>"$LXC_CONFIG"
1180-
fi
1181-
fi
1182-
1183-
if [[ -e /dev/dri/card0 ]]; then
1184-
read -rp "➤ Mount /dev/dri/card0 (GPU hardware interface)? [y/N]: " MOUNT_CARD0
1185-
if [[ "$MOUNT_CARD0" =~ ^[Yy]$ ]]; then
1158+
}
1159+
[[ -e /dev/dri/card0 ]] && {
11861160
echo "lxc.cgroup2.devices.allow: c 226:0 rwm" >>"$LXC_CONFIG"
11871161
echo "lxc.mount.entry: /dev/dri/card0 dev/dri/card0 none bind,optional,create=file" >>"$LXC_CONFIG"
1188-
1189-
fi
1190-
fi
1191-
1192-
if [[ -e /dev/fb0 ]]; then
1193-
read -rp "➤ Mount /dev/fb0 (Framebuffer, GUI)? [y/N]: " MOUNT_FB0
1194-
if [[ "$MOUNT_FB0" =~ ^[Yy]$ ]]; then
1162+
}
1163+
[[ -e /dev/fb0 ]] && {
11951164
echo "lxc.cgroup2.devices.allow: c 29:0 rwm" >>"$LXC_CONFIG"
11961165
echo "lxc.mount.entry: /dev/fb0 dev/fb0 none bind,optional,create=file" >>"$LXC_CONFIG"
1197-
fi
1166+
}
1167+
[[ -d /dev/dri ]] && {
1168+
echo "lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir" >>"$LXC_CONFIG"
1169+
}
1170+
else
1171+
# UNPRV Container → nur devX für UI
1172+
[[ -e /dev/dri/card0 ]] && echo "dev0: /dev/dri/card0,gid=44" >>"$LXC_CONFIG"
1173+
[[ -e /dev/dri/card1 ]] && echo "dev0: /dev/dri/card1,gid=44" >>"$LXC_CONFIG"
1174+
[[ -e /dev/dri/renderD128 ]] && echo "dev1: /dev/dri/renderD128,gid=104" >>"$LXC_CONFIG"
11981175
fi
1176+
fi
11991177

1200-
if [[ -d /dev/dri ]]; then
1201-
echo "lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir" >>"$LXC_CONFIG"
1202-
fi
1178+
fi
1179+
if [ "$CT_TYPE" == "1" ] && [ "$is_vaapi_app" == "true" ]; then
1180+
if [[ -e /dev/dri/card0 ]]; then
1181+
echo "dev0: /dev/dri/card0,gid=44" >>"$LXC_CONFIG"
1182+
elif [[ -e /dev/dri/card1 ]]; then
1183+
echo "dev0: /dev/dri/card1,gid=44" >>"$LXC_CONFIG"
1184+
fi
1185+
if [[ -e /dev/dri/renderD128 ]]; then
1186+
echo "dev1: /dev/dri/renderD128,gid=104" >>"$LXC_CONFIG"
12031187
fi
12041188
fi
12051189

misc/core.func

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -355,7 +355,6 @@ msg_custom() {
355355
[[ -z "$msg" ]] && return
356356
stop_spinner
357357
echo -e "${BFR:-} ${symbol} ${color}${msg}${CL:-\e[0m}"
358-
printf "\r\033[K\e[?25h\n"
359358
}
360359

361360
run_container_safe() {

0 commit comments

Comments
 (0)