Como diz a Wikipédia: link
" Wine é uma camada de compatibilidade. Ele duplica as funções do Windows, fornecendo implementações alternativas das DLLs chamadas pelos programas do Windows, [4] e um processo para substituir o kernel do Windows NT. "
Então, WINE é um conjunto de bibliotecas desenvolvidas internamente, um lado do qual (visível para programas) é a API do Windows, e o outro lado (visível para bibliotecas Linux e Linux, como glibc e libX11) é POSIX, API Linux e X11. Além disso, há um carregador especial de programas do Windows que pode ler o arquivo EXE, carregá-lo e todas as bibliotecas de DLL necessárias para a memória, conectar tudo com bibliotecas internas do Wine e bibliotecas do sistema e executá-lo. Pode haver vários programas auxiliares dentro do WINE também.
Como há duas janelas de sistema operacional diferentes (código fechado) e Ubuntu (código-fonte aberto Linux)
O Wine fornece suas próprias versões de várias DLLs do sistema Windows. Wine também tem a capacidade de carregar DLLs nativas do Windows. A tentativa de chamar diretamente o kernel do Windows não é suportada. Se o seu programa do Windows faz chamadas que o Linux pode manipular, então o Wine passa para o kernel do Linux. Se o programa quer fazer algo que o Linux não pode fazer, então o Wine traduz a chamada para algo que o Linux pode lidar primeiro.
Ambos os sistemas operacionais (Windows e Ubuntu) possuem diferentes APIs (e ABIs (Application Binary Interface)). O Windows possui o WinAPI e o Linux possui a API POSIX, com algumas APIs adicionais específicas do Linux, APIs gráficas (como o X11) e com sua própria ABI do Linux. APIs diferentes não permitem, por exemplo, abrir o arquivo e ler a partir dele, se você estiver usando uma API incorreta. Essa diferença não é sobre o gerenciamento de pacotes, mas sobre a interface entre programas, bibliotecas e kernels do SO.
Então porque o vinho é importante e o que significa "vinho não é um emulador"?
O emulador deve carregar as instruções do programa, analisá-las e imitar suas ações. Assim, emuladores de ARM são possíveis em x86 (Intel), por exemplo, o grande qemu
(nome decodificado como "Quick" EMUlator "), ou emulador x86 mais antigo escrito em C - o bochs
. Os emuladores geralmente emulam o PC inteiro, a partir do BIOS, processadores e HDDs, eles são inicializados no sistema operacional que você instala neste PC virtual.
E o WINE não é emulador porque não interpreta as instruções do binário alvo e não simula o processador. Ele apenas carrega o programa na memória e fornece a tradução da API do WinAPI para as APIs POSIX / Linux do host (e o Xlib para gráficos e mouse, e alguma outra API para som, etc).
por que é projetado (ou o que é necessário / por que deveria permitir) executar programas do Windows no Ubuntu?
O WINE foi projetado muito antes de o Ubuntu ser criado, o projeto foi iniciado em 1993, após o similar do Solaris projeto "Wabi" . É útil ter capacidade de iniciar aplicativos de outros sistemas operacionais, especialmente se esse outro sistema operacional for usado muito amplamente, e houver muitos softwares (e jogos) criados exclusivamente para ele, que não podem ser iniciados diretamente em nenhum outro sistema operacional como Unix, Solaris ou Linux.
No entanto, não é totalmente compatível com vários softwares de janelas e gráficos.
O WINE não pode ter a implementação exata de todo o WinAPI (algumas partes dele não estão documentadas) e todas as bibliotecas necessárias. Alguns programas do Windows estão usando APIs ou bibliotecas que não estão implementadas, portanto, não podem funcionar com o WINE.
E o que são pacotes paralelos como cross-over, jogar no linux?
Crossover é uma variante comercial do WINE com melhor suporte, algumas ferramentas GUI auxiliares (para facilitar a instalação de alguns softwares ) e verificou a lista de compatibilidade dos programas e jogos do Windows em funcionamento. Normalmente você deve pagar algum dinheiro (40 US $) para a CodeWeavers, desenvolvedores do CrossOver, para usar o pacote por muito tempo e ter suporte. A CodeWeavers (pequena empresa) apóia o projeto de vinhos, reenviando todos os patches para ele e pagando a vários desenvolvedores de vinhos. Segundo a wikipedia:
" CrossOver é desenvolvido pela CodeWeavers, baseado no Wine, uma camada de código aberto do Windows. O CodeWeavers modifica o código fonte do Wine, aplica patches de compatibilidade, adiciona ferramentas de configuração mais fáceis de usar e fornece suporte técnico A CodeWeavers emprega vários desenvolvedores de software Wine e contribui com código-fonte para o Wine. "