Rodando Jogos Steam no Linux com nVidia Optimus
Se você tem um computador com Linux (Ubuntu e assemelhados) e placa de vídeo nVidia Optimus alternando com vídeo Intel e está tentando rodar o Steam e os jogos não abrem, ao experimentar rodar o Steam via linha de comando (rodando o comando steam num terminal) você observa mensagens de erro do tipo
malloc: unknown:0: assertion botched
free: called with unallocated block argument
last command: (null)
Aborting...Aborted (core dumped)
ou
Game removed: AppID 400 "Portal", ProcID 18446
então você precisa rodar os programas (ou todo o steam) com a variável LD_PRELOAD com o seguinte comando num terminal:
LD_PRELOAD="libpthread.so.0 libGL.so.1" __GL_THREADED_OPTIMIZATIONS=1 optirun steam
Alternativamente, é possível editar os ícones de atalhos no desktop, mudando o campo "aplicativo" para, por exemplo:
LD_PRELOAD="libpthread.so.0 libGL.so.1" __GL_THREADED_OPTIMIZATIONS=1 optirun steam steam://rungameid/400
Isto vai lançar o jogo. Para tanto, use o próprio Steam para criar um atalho diretamente para um determinado jogo, depois clique no atalho com o botão direito, dê propriedades e altere o comando a ser executado adicionando o LD_PRELOAD com os parâmetros, de forma semelhante à acima. A vantagem é poder rodar somente os jogos mais pesados usando a GPU nVIdia.
O nVidia Optimus permite rodar aplicações menos pesadas na GPU Intel e chavear para a GPU nVidia quando há necessidade, economizando energia (especialmente útil em notebooks).