From c8043eefe4f9267565481da1269a93d46ab56b72 Mon Sep 17 00:00:00 2001 From: Alexey Martemyanov Date: Sun, 7 Jun 2026 15:19:12 +0600 Subject: [PATCH] =?UTF-8?q?[2026-06-07]=20native=20non-Steam=20pitfalls=20?= =?UTF-8?q?=E2=80=94=20mount=20namespace,=20stderr,=20libmp3lame?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../how-to/htpc-steam-nonsteam-shortcuts.md | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/family/how-to/htpc-steam-nonsteam-shortcuts.md b/family/how-to/htpc-steam-nonsteam-shortcuts.md index dcc3bd2d..0a78c539 100644 --- a/family/how-to/htpc-steam-nonsteam-shortcuts.md +++ b/family/how-to/htpc-steam-nonsteam-shortcuts.md @@ -4,6 +4,59 @@ **Steam должен быть выключен** перед записью shortcuts.vdf. Если Steam работает — он перезапишет файл из памяти при следующем запуске. +## Подводные камни native Linux shortcut'ов (Worms W.M.D case) + +### Проблема: Steam не видит `/run/media/system/Data/` + +Steam, запущенный через `gamescope-session-plus`, работает в изолированном mount namespace. Путь `/run/media/system/Data/` (btrfs-подраздел) может быть **не виден** Steam-процессу. + +**Симптом:** нажимаешь Play → `chdir` в логах есть, `exit code 0` мгновенно, игра не стартует. `/tmp/worms_stderr.log` не создаётся — значит `run.sh` даже не запустился. + +**Причина:** Steam проверяет существование `exe` файла перед запуском native shortcut. Если файл не найден — `steam-launch-wrapper` завершается с кодом 0 без ошибки. Для Proton shortcut'ов эта проверка не делается — Steam передаёт путь внутрь Proton. + +**Решение:** не указывать `exe` на `/run/media/system/Data/...`. Вместо этого: +1. Создать symlink в `/home/bazzite/`: + ```bash + ln -sf /run/media/system/Data/Games/.../run.sh /home/bazzite/game_name.sh + ``` +2. В VDF прописать `exe = /home/bazzite/game_name.sh`, `StartDir = /home/bazzite/`. +3. `/home/bazzite/` виден из любого mount namespace. + +### Проблема: `run.sh` глушит stderr + +Многие native Linux игры (особенно старые MojoSetup-инсталляторы) имеют в `run.sh`: +```sh +exec ./binary 2>/dev/null "$@" +``` +`2>/dev/null` скрывает все ошибки. Steam логи не показывают stderr дочернего процесса. + +**Решение:** убрать `2>/dev/null` из `run.sh`. Если нужно дебажить — перенаправить в файл: +```sh +exec ./binary 2>/tmp/game_stderr.log "$@" +``` + +### Проблема: старая `libmp3lame.so.0` без нужного символа + +Старые native игры тащат свою `libmp3lame.so.0` (2019-2020), в которой нет символа `lame_encode_buffer_interleaved_int`. Системная `libsndfile.so.1` (Fedora 43) требует этот символ. + +**Симптом:** `symbol lookup error: /lib64/libsndfile.so.1: undefined symbol: lame_encode_buffer_interleaved_int` + +**Причина:** линковщик загружает игровую `libmp3lame.so.0` из `data/lib/` (старая, без символа), а `libsndfile.so.1` из `/lib64/` — и находит уже загруженную старую копию. + +**Решение:** заменить игровую `libmp3lame.so.0` на системную: +```bash +cp /lib64/libmp3lame.so.0 /run/media/system/Data/Games/.../data/lib/libmp3lame.so.0 +``` + +### Статус Worms W.M.D (native Linux) + +- **Версия:** MojoSetup-инсталлятор с rutracker (Worms W.M.D [239.583366] [Native]) +- **Путь:** `/run/media/system/Data/Games/Worms W.M.D Native/Worms W.M.D/` +- **Symlink:** `/home/bazzite/worms_wmd.sh → .../run.sh` +- **Steam shortcut:** entry 109, appid = -364361099 (unsigned: 3930606197) +- **LaunchOptions:** `%command%` +- **Статус:** ✅ запускается + ## Остановка Steam (Bazzite game session) ```bash