Um resumo das instruções de compilação e uso do Darling...
Para instalar o Darling deve ter o Clang 3.8, ou superior, e ter uma distro Linux x86-64 de 64-bits. Programas de 32-bit são suportados, mas correr em sistemas Linux de 32-bit não é suportado, devido ao modo pouco convencional que o kernel do Mac OS X alocava a memória. Isto pode ser explicado na página:
https://wiki.darlinghq.org/documentation:commpage
(Além disso, a Apple já assume que 99% dos Macs e softwares são de 64-bits)
1º Instale as dependências (Ubuntu):
$ sudo apt-get install cmake clang bison flex xz-utils libfuse-dev libudev-dev pkg-config libc6-dev:i386 linux-headers-generic gcc-multilib libcap2-bin libcairo2-dev libgl1-mesa-dev libtiff5-dev libfreetype6-dev libfreetype6-dev:i386
(Debian):
$ sudo apt-get install cmake clang bison flex xz-utils libfuse-dev libudev-dev pkg-config libc6-dev-i386 linux-headers-amd64 libcap2-bin git libgcc-5-dev:i386 libcairo2-dev libgl1-mesa-dev libtiff5-dev libfreetype6-dev libfreetype6-dev:i386
2º clone o git oficial numa directoria à sua escolha...
git clone --recursive
https://github.com/darlinghq/darling.git
3º Compilação, que vai demorar um bom bocado !
$ cd darling
$ mkdir build
$ cd build
$ cmake .. -DCMAKE_TOOLCHAIN_FILE=../Toolchain.cmake
$ make
$ sudo make install
4º Instalação do módulo do kernel, que por fim já funciona direito!
$ make lkm
$ sudo make lkm_install
5º Se tive problemas na instalação após a compilação (versões alfa do Darling), apague a seguinte directoria antes de continuar a instalação:
$ sudo rm -rf /usr/local/libexec/darling
Para usar o ambiente Darling, basta invocar o comando no Terminal:
$ darling shell
Que carrega os ficheiros do emulador, cria o DPREFIX caso não exista (o valor padrão é ~/.darling) que contêm os ficheiros do fake-chroot do Mac OS X, e depois carrega uma série de binários Mach-O nativos (compilados durante a instalação, usando o Clang nativo) como o launchd, e a versão Mac OS X do bash 3.2, que é o ambiente virtual do Darling.
Podemos ver que a versão emulada do Mac OS X é a versão 10.12 (Sierra), ou Darwin 16.0:
# uname -a
Darwin hellsing 16.0.0 Darwin Kernel Version 16.0.0 x86_64
Também é possível correr binários ELF Linux nativos dentro do emulador (!):
# /Volumes/SystemRoot/bin/uname -a
Linux hellsing 4.10.0-32-generic #36-Ubuntu SMP Tue Aug 8 12:10:06 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
Por agora é seguro usar o Rudix para instalar pacotes binários, para isso basta aplicar a sequência de comandos:
# curl -s
https://raw.githubusercontent.com/rudix-mac/rpm/2016.12.13/rudix.py | sudo python - install rudix
Resultando...
Código:
Downloading rudix-2016.12.13-0.pkg...
######################################################################## 100,0%
installer: Package name is Rudix Package Manager 2016.12.13
installer: Installing selected choice rudix-install
installer: Installing package org.rudix.pkg.rudix version 2016.12.13-0 (100 KB)
installer: Extracting files
installer: Installation complete
Para instalar o p7zip para Mac OS X. basta aplicar o comando:
# sudo rudix install p7zip
Outros utilitários como o compressor RAR para Mac OS X, pode ser transferido do site:
http://www.rarlab.com/rar/rarosx-5.5.0.tar.gz
E descompactado para a directoria /usr/local/bin dentro do DPREFIX, ficando igualmente disponível.
Por agora, o suporte para programas com GUI não são suportados (Estão ocupados com várias frameworks), ou são ainda stubs (O Metal API compila, mas não é usável, exigindo uma layer de compatibilidade entre o Vulkan e o Metal, que falta implementar), mas sem isso, o interesse neste projecto fica um bocado aquém das espectativas. De facto, em muitos programas é necessário o Carbon, noutros o Security do Cocoa somente para funcionar!
De qualquer forma, o projecto já inclui o TextEdit como programa de teste, mas ainda não se revelou a funcionar...