Configurando o PlayOnLinux: Parte 1

Parte 1 de 2 deste grande tutorial, para todos aqueles que querem entender melhor como o PlayOnLinux (WINE) funciona, ajudando a solucionar os principais problemas de compatibilidade que encontrarem com aplicações e games.

| Se você apoia nosso site, desative o AdBlock quando visitá-lo, inclusive em Mobile!
Os anúncios são poucos e não invasivos. Se quiser contribuir com nosso trabalho, clique em qualquer banner de sua preferência, exceto dos Parceiros. 
Mais detalhes clicando aqui.

Parte 1

Dividido em 2 partes, nesta primeira parte vou introduzir o que é o Wine, quem é PlayOnLinux e como fazer boas configurações em ambos explicando detalhes de seus recursos atualmente disponíveis e como instalar um programa ou game. A parte 2 será focada no lado técnico, mostrando detalhes sobre DLL’s e bibliotecas para otimizar os games do Wine e explico como debugar um game que, uma vez instalado, está problemático.

Tudo que aqui for referenciado de configuração para PlayOnLinux poderá ser aplicado no PlayOnBSD e no PlayOnMac. Com as devidas adaptações, pode-se aplicar tais modificações no Wine puro sem PlayOnLinux usando o Winetricks.

Introdução

Hoje, eu quero ajudar vocês!
Apesar do tutorial ser para o PlayOnLinux, as regras, dicas, drivers e plugins são aplicáveis a qualquer sistema que ele rode, como o PlayOnBSD do FreeBSD ou mesmo o PlayOnMac do Apple macOS.

Aqui vou postar algumas dicas valiosas na hora de rodar aquele joguinho maroto ou aquele programa embaçado originalmente desenvolvido para Windows, no Linux. Dicas estas que coletei ao longo de meses e outras que eu aprendi na marra na hora de rodar os jogos e programas mais problemáticos do famigerado PlayOnLinux.

Para empolgá-los, segue o print do meu PlayOnLinux configurado com alguns games.

PlayOnLinux (POL) não é nenhum bicho de sete cabeças. Na verdade é um golden retriever bem manso se você souber usa-lo. Se você for usuário avançado, vá direto para o tópico 2.

0) O que é o WINE?

WINE é um acrônimo recursivo, significa WINE IS NOT EMULATOR. Portanto, Wine não é emulador!
Tampouco o Wine é um virtualizador como VirtualBox. O que o Wine faz, é ser um tradutor.

O Wine possui o kernel NT, do Windows, feito do zero por engenharia reversa, que permite executar programas do Windows; esse kernel NT possui passthrough com o kernel Linux, ou seja, o Wine traduz o que está nos programas em formato .exe, executa e passa o resultado para o Linux, exibindo interfaces gráficas, processando games, etc.

Para tirar a dúvida de muitos, um virtualizador ou emulador iria executar TODO O SISTEMA WINDOWS, como se fosse uma máquina virtual do VirtualBox ou VMWare Player, o que tornaria a execução de um simples programa como o Internet Explorer 6 num sofrimento de ver seu sistema pesado por rodar um outro sistema inteiro só para abrir 1 programa. Também iria exigir o Windows completo instalado, o que não é o caso.

  • Ah, o Wine é um pedaço de Windows, ele não deveria existir! Eu odeio o Windows!

Calma jovem. Como dito, o Wine foi criado com engenharia reversa e as poucas bibliotecas originais do Windows que o Wine possui são gratuitos mas licenciados disponíveis na internet. O Wine não é como se você tivesse um pedaço do Windows XP rodando no seu precioso Linux, veja-o como uma “extensão do kernel linux projetada para entender o que um programa de Windows faz”.

1) O que é o PlayOnLinux?

O PlayOnLinux (e seus irmãos PlayOnBSD e PlayOnMac) é uma interface para facilitar o gerenciamento do WINE (que pode ser bem confusa via terminal) alem de permitir algumas coisas que apenas o Wine não iria permitir, por exemplo, criar unidades virtuais isoladas para cada programa que você instalar, assim uns não entram em conflito com outros.

Como eu uso?

Na tela inicial, clicando em INSTALAR UM PROGRAMA, você verá uma bela tela cheia de abas em categorias. Escolha o programa de sua necessidade e instale-o no seu linux. O processo de instalação será simples, com um esquema de “avança, avança, ok” típico dos sistemas Windows. Se o game for gratuito, o próprio POL fornecerá o jogo. Mas se ele for pago, o programa vai solicitar o disco para instalá-lo.

Voce ainda pode filtrar pelos programas que estão em testes, os pagos e os que exigem mídia física para serem instalados. Vários do POL tambem rodam de instaladores do GOG.COM e Steam.

Games não nativos

Você pode instalar um programa não-listado na tela acima, clicando no rodapé, em “instalar um programa não listado”. Uma vez lá, clique em Avançar.

Selecione “Instalar em uma unidade virtual nova”

Dê um nome. Não pode conter espaços! Avance.
Se você estiver seguindo um tutorial da internet, é aqui que você seleciona para trocar a versão do Wine, configura o Wine trocando, por exemplo, a versão do Windows que ele vai imitar e instalar bibliotecas extras.
Se o game que você for instalar for á esmo, sem tutorial, não marque nada e avance!

OBS: É preferível NÃO TER algo instalado, e saciar as dependências aos poucos á medida que o jogo pedir. Como o Wine não permite remover alguma DLL instalada, se você instalar algo desnecessário e essa DLL bugar o jogo, você terá que reinstalar tudo de novo. Mesmo DLLs como DirectX e outras, evite, instale “cru” e depois adicione á medida que o jogo apresentar erros e for exigindo essas DLLs. A parte 2 dessa mini-série de postagens mostro como debugar um game que apresentar erros pela ausência de alguma DLL ou biblioteca, como .NET Framework.

Na próxima tela, marque 32Bits!
Mesmo que seu game seja x64, tente sempre forçar o uso de 32bits, pois ele possui melhor compatibilidade de DLLs. Só use uma unidade x64 se o jogo exigir terminantemente isso. Avance.

A unidade virtual será criada em /home/$USER/.playonlinux/wineprefix.
Clique em NAVEGAR e marque o DVD, .EXE ou .ISO do game que deseja instalar.

DICA:
Se o jogo já foi instalado e você vai apenas inseri-lo no Wine, não instale-o! Na tela que exibir o botão NAVEGAR, você fecha o instalador. Sua unidade foi criada.
Então pegue a pasta do jogo pré instalado e cole em:
/home/$USER/.playonlinux/wineprefix/sua_unidade_criada/drive_c/Program Files

Na tela principal do PlayOnLinux, clique em CONFIGURAÇÕES, e, nesta janela, marque a sua_unidade_criada á esquerda e depois clique em “Faça um novo atalho a partir da unidade virtual”

Nem todo game permite esse tipo de instalação crua, e exige registro no sistema. The Sims por exemplo exige uma instalação normal e vai quebrar dessa maneira. Atentos a isso.

2) DICAS!

Para os usuários mais avançados que ja estão familiarizados com a instalação avançada de programas não nativos do PlayOnLinux.

Normalmente um game rodando no PlayOnLinux não exige muita mudança, o wineprefix nativo do sistema e a versão XP (default) do Windows bastam. Alguns games exigem mais coisas.
E é nessa hora que entra a perseverança e a paciencia.
E claro, conhecimento e uma pitada de sorte. Alem de muito maracujá e camomila

Situação demonstrativa 1:

  • Executei o jogo e ele não abriu, vi uma tela de erro desconhecido na minha frente.

Primeiro Passo

Não instale NENHUM componente sem necessidade. É facil quebrar a unidade virtual te obrigando a reinstalar o programa a ser debugado. Use uma instalação limpa, sem corefonts nem nada e debugue o programa. É mais facil adicionar o que falta do que tirar o que causou o problema.

Segundo passo

Entenda o que o game exige!
Muitos games não apontam suas dependências diretamente na embalagem, mas pesquisando você descobre se o jogo exige .NET Framework ou mesmo DirectX e qual versão ideal do Windows para executá-lo.

Terceiro passo

Debugando!

  1. Execute o PlayOnLinux via terminal.
    CTRL-ALT-T e digite “playonlinux” sem aspas.
  2. Uma vez aberto, execute seu game com o botão “depurador” na barra lateral esquerda.
  3. Observe a listagem de execução do Terminal e do Depurador.
    Você não precisa entender o que está acontecendo.
    O segredo é ver alguns padrões dos erros, que ajudam a entender o que está acontecendo

Por experiência propria, percebi 2 coisas:
Se o programa abre dando uma enorme listagem de erros de DLL (São as dezenas de linhas que começam com FIXME), a causa é o .NET Framework e outros programas associados a essa biblioteca.

Nesse caso você deve primeiro conferir 1 coisa:
Para qual versão do Windows seu programa foi desenvolvido e o que ele precisa para abrir?
Infelizmente nem sempre sabemos essa resposta, o ideal é usar uma maquina virtual do Windows, instalar e observar o que ele pede.
De forma genérica, ajudando muita gente, vou seguir a logica do “seu programa/jogo deveria rodar no Windows XP”. Nas configurações do WINE dentro do PlayOnLinux existe um campo onde você define qual a versão do Windows que o WINE vai imitar.

O default é o XP, porque é o mais antigo com maior índice de compatibilidade no momento. Não recomendo alterar aqui a menos que o programa a ser executado seja muito recente, projetado para Windows 7 ou 8 e que não rodaria jamais no XP.

O Wine de cada programa é um dos pontos mais delicados.
O POL traz o default do sistema (se nao me engano é o 1.9.7) mas você pode mudar para qualquer versão.
Alguns games como o The Sims 2 exigem um wine modificado, por exemplo, ‘1.9.6-sims2’, ja patcheado.
O proprio POL enumera as versões existentes; verifique se há alguma patcheada para seu jogo.
Paint Tool SAI é outro que exige um wine patcheado próprio, no caso o 1.5.5-SAI.

Outros programas se dão bem com wines atualizados, exemplo? O Internet Explorer 8 padrão do PlayOnLinux roda muito melhor se você instala ele automático pelo POL e depois altera o wine usado no programa para o mais atual 2.0. O desempenho e a compatibilidade geral são melhores.

Para quem utiliza programas que fazem conexões com servidores, vocês precisam montar a pasta remota em /etc/fstab, jogar ela para /mnt/PASTA e então nas configurações do WINE dentro do POL você direciona o diretório de uma unidade como a D:/ por exemplo para esse caminho /mnt/PASTA. Assim seu programa vai encontrar a letra correspondente e ir para a pasta remota.

Note aqui, a unidade C:/ está apontada no linux em …/drice_c dentro de ~/.playonlinux/wineprefix/PASTA

Qualquer pasta compartilhada montada em /mnt ou outra poderá ser apontada aqui. Quando o Wine executar, reconhecerá como uma mídia extra! Programas servidores Windows podem ser compartilhados dessa maneira.

Windows para Linux, o server linux deve ter o SAMBA rodando compartilhando a pasta.

Componentes – Depuração Genérica

Bom, você já possui uma boa base do que fazer no POL mas ainda faltaram os componentes que ele suporta e para que servem! EVITE instalar tudo, deixará a unidade virtual bizarramente pesada e seu aplicativo ficará lento. Instale a vá depurando para resolver os problemas que surgirem.

Os principais componentes são:

  • CoreFonts
    Tira erros de fontes que atrapalham na construção da interface de usuário no momento da execução.
    Ao lado do pacote TAHOMA e TAHOMA2, são fontes muito usadas em programas e jogos.
  • dotnet20, 30, 35 e 40
    São as versões do .NET Framework da Microsoft. Se o programa deveria rodar no XP, recomendo o dotnet35. Mas aqui no caso é tentativa e erro pois tem programas um pouco mais recentes que exigem o 40 e programas mais antigos que saciam com 20. Lembre-se: Os dotnet’s podem entrar em conflito! Se você instalou o dotnet20 e teve problemas, reinstale e ponha o dotnet40, por exemplo. E vice versa. Para não perder tempo, faça backup da sua unidade virtual antes de instalar o dotnet, assim é mais fácil restaurar o programa para um estado de antes de corrompê-lo por componente incorreto.
  • O DOTNET35 é particularmente problemático, você o encontra no site da Microsoft. São ~50Mb. Sua instalação dá um erro porém é normal, você reinicia a instalação e ele conclui com um segundo erro, porém ele termina a instalação.
  • vcrun2008
    São as dependências dos programas que exigem o Visual C++. Assim como os dotnet’s, os vcrun’s tem várias versões como o 2008, 2010 e 2012. Tentativa e erro até encontrar aquele que sacia as necessidades do seu programa. Sob a regra de rodar no Windows XP, o comum popular “roda tudo” é o vcrun2008, compatível com programas antigos e mais novos.
  • vbrun2006
    Fonte de dependências do Visual Basic, existem programas que só funcionam em sua plenitude com ele.
    Os pacotes vcrun e dotnet são frameworks usados pra quase tudo nos programas, até na composição de janelas. Se o programa nao abre dando erro desconhecido, verifique a versão deles.
  • Internet Explorer 8
    Por incrível que pareça ele traz muito conteúdo como o ActiveX, muito usado em alguns programas antigos.
  • MSXML3
    Um pequeno pacote decompilador para o .NET Framework. Normalmente o MSXML3 basta, porém como golpe de misericórdia no desespero de debugar, utilize o 4 e o 6. Mas deixe esses pro final, mesmo em programas atuais do Windows 7 e 8, somente o MSXML3 normalmente basta.
  • WININET
    Costuma vir com o IE ou .NET Framework. Ele compõe dados de interface de browser que alguns programas usam. Raramente necessário.

No caso dos games, temos:

  • D3DCompiler_43
    Importante para processos 3D, essencial para games.
  • D3dx9
    Essepacote que instala todas as dependências do DirectX9; normalmente resolve para a maioria dos games. Idem para o pacote especifico Directx9, DirectX10 e 11 para games recentes. Normalmente o pacote componente “directx” basta, mas caso ele traga problemas, pode-se usar versões especificas como o “d3dx9_43” por exemplo, usando apenas o essencial que seu game e sua GPU exigem.
  • VideoDriver
    Componente de video que faz parte do DirectX, normalmente essencial para bom desempenho.

Outras dicas curiosas

Se o programa exige o .NET Framework, instale o msxml do 1 ao 4, depois os pacotes VCRUN do 2006 ao 2012… todos em ordem. E então você vai instalar o DOTNET porém instalando os originais dos sites da Microsoft; As versões do POL costumam ser problemáticas e/ou obsoletas.

E outra é que você pode instalar o programa no Windows via VirtualMachine, exportar o registro do sistema (regedit) e depois importa-lo dentro do POL, para ter maior compatibilidade com os programas e games!

Dica de Ouro!

Beleza, fiz tudo acima mas agora eu debugando o programa/game me deparo com 1 novo erro!
Ou se voce ja der de cara com esse erro antes mesmo de ver erros de DLL
Vejo inúmeras linhas dizendo erro de “timezone”, “modules time”, “hour”, “date”, coisas do tipo.

Como citei acima, é um erro de timezone que alguns games podem apresentar como o The Sims 3.
Essas linhas são um erro do PlayOnLinux em não informar devidamente ao seu programa a região do mundo em que você está. Isso curiosamente causa esse tipo de bug que tambem impede games e programas de abrirem.
Para corrigi-lo, você deve criar um atalho do seu programa, la no POL, para a area de trabalho. Então você clica direito nele e abre Propriedades. O atalho terá, no exemplo do The Sims, esse código:

/usr/share/playonlinux/playonlinux --run "The Sims 3" %F

Lá, você edita o atalho do seu programa ou game e adiciona isso antes:

env WINEPREFIX="/home/nathandrake/.playonlinux" TZ="America/Bahia" 
/usr/share/playonlinux/playonlinux --run "The Sims 3" %F.

Explicando:

env WINEPREFIX=”/home/nathandrake/.playonlinux”
Esse trecho força a utilização do programa PlayOnLinux e não WINE;
TZ=”America/Bahia”

Este código corrige o erro! Ele define a TIMEZONE para “America/Bahia” (não me perguntem porquê Bahia, deu certo no The Sims e isso que eu moro em Minas Gerais) A dica vale pra qualquer estado brasileiro.
Curiosamente foi uma dica sugerida la no forum WINEHQ norte americano.

E o restante do código é para que o POL saiba aonde o programa está e inicie sua execução ja com essa variável timezone definida como America/Bahia ativada.

Conclusão

Essa foi uma introdução ao PlayOnLinux/WINE para execução de programas do Windows no Linux/BSD/macOS. Claro, faltaram mais informações e detalhes. É dificil abranger tudo, para dominar o WINE você tem que infelizmente dominar de como o programa executava no Windows e isso 90% das pessoas, usuários comuns, não sabem e não precisam saber.

Parte 2

Na parte 2 dessa mini-série de posts dei detalhes de como debugar mais profundamente o programa que der problema, aplicando a substituição de DLL’s (inclusive como usar DLL’s extraídas do Windows) e explorando o conteúdo do atalho .exe para verificar quais as DLL’s que o programa exige. Não ensinei isso aqui pois já é uma informação avançada demais para o nível desse post, vocês vão lidar com um editor hexadecimal e verão muitos códigos das entranhas do programa!

Parte 2: Clique aqui!

#UrbanCompassPony

9 comentários em “Configurando o PlayOnLinux: Parte 1”

  1. Bom dia! estou tentando instalar o GTA Vice City no ubuntu 19.10 mas o mouse sempre fica atrasado, de carro os gráficos ficam perfeitos só trava se usar o mouse. já tentei intalar o D3DCompiler_43 e o D3dx9 e o erro continuou. alguém sabe o que posso fazer?

    Responder

Deixe um comentário