Como resolver o problema de perda de persistência do CUDA no Distrobox

Alguns usuários têm enfrentado um bug no Distrobox que faz com que os links simbólicos do CUDA dentro do contêiner desapareçam após uma reinicialização do sistema. Isso quebra aplicações que dependem do CUDA — como o Davinci Resolve 20.x.x instalado via Davincibox — até que os links sejam recriados manualmente.

Esse bug ainda não foi corrigido oficialmente e afeta diferentes distros e setups. No meu caso, ocorreu tanto no Bazzite quanto no KDE Linux (beta) usando o Davincibox.

Embora não exista uma solução definitiva, há um workaround funcional criado pelo autor da issue original no repositório do Distrobox. Ele recria automaticamente os links do CUDA sempre que um terminal é aberto dentro do contêiner.

Para tornar o uso da solução totalmente transparente, é possível adicionar o parâmetro “bash -ic” ao .desktop que abre o DaVinci Resolve, tornando todo processo automático.


:test_tube: Ambiente onde o problema foi reproduzido

  • Distrobox: 1.8.2.4
  • Driver NVIDIA: 590.48.01
  • CUDA: 13.1
  • Kernel: 6.18.9-zen1-2-zen
  • Distro: KDE Linux (beta)

Observação: o problema parece ocorrer com mais frequência ao instalar o Davinci Resolve 20.x.x via Davincibox.


ATUALIZAÇÃO 11/03/2026: adicionando um parâmetro na atalho de inicialização do Davinci Resolve é possível forçar a execucação do .bashrc tornando a correção dos links “automática”.


:hammer_and_wrench: Como contornar o problema de persistência do CUDA

A solução temporária consiste em adicionar um script ao .bashrc do usuário dentro do contêiner. Assim, sempre que um terminal for aberto, o script verifica e recria os links do CUDA automaticamente.

:check_mark: Passo a passo

  1. Abra o contêiner afetado:

    distrobox enter nome-do-container
    
  2. Edite o arquivo .bashrc do usuário dentro do contêiner:

    nano ~/.bashrc
    
  3. Adicione o script fornecido na issue.

# --- Distrobox NVIDIA Library Fix (for .bashrc) ---
NEEDS_LDCONFIG_CHECK=0

fix_nvidia_symlink() {
    local link_name="$1"    # e.g., /usr/lib64/libcuda.so
    local target_name="$2"  # e.g., /usr/lib64/libcuda.so.1

    if [ ! -e "${target_name}" ]; then
        return 1 
    fi

    if { [ -L "${link_name}" ] && [ ! -e "${link_name}" ]; } || \
       { [ -f "${link_name}" ] && [ ! -s "${link_name}" ]; } || \
       [ ! -e "${link_name}" ]; then
        if [ -L "${link_name}" ] && [ ! -e "${link_name}" ]; then
            echo "NVIDIA FIX: Fixing broken ${link_name} symlink..."
        elif [ -f "${link_name}" ] && [ ! -s "${link_name}" ]; then
            echo "NVIDIA FIX: Fixing empty ${link_name}..."
        elif [ ! -e "${link_name}" ]; then
            echo "NVIDIA FIX: Creating missing ${link_name} symlink..."
        fi
        sudo rm -f "${link_name}" 
        sudo ln -sf "${target_name}" "${link_name}" && NEEDS_LDCONFIG_CHECK=1
    fi
}

fix_nvidia_symlink "/usr/lib64/libcuda.so" "/usr/lib64/libcuda.so.1"
fix_nvidia_symlink "/usr/lib64/libnvcuvid.so" "/usr/lib64/libnvcuvid.so.1"

if [ "$NEEDS_LDCONFIG_CHECK" -eq 1 ]; then
    echo "NVIDIA FIX: Running sudo ldconfig due to library fixes..."
    sudo ldconfig
fi
unset NEEDS_LDCONFIG_CHECK
# --- End Distrobox NVIDIA Library Fix ---
  1. Salve o arquivo e feche.

  2. Altere o atalho que inicia o Davinci Resolve adicionando o parâmetro “bash -ic” que força o carregamento do .bashrc sempre que atalho for usado. No Plasma, usando o editor menus o atalho fica como no exemplo abaixo. Você pode alterar manualmente o .desktop se preferir.


Nota: este método foi testado apenas com bash. Outros shells (como ZSH) podem exigir ajustes.

:vulcan_salute:

2 curtidas