Cross-kompilowanie to proces tworzenia oprogramowania na jednym systemie, które jest przeznaczone do uruchamiania na innym systemie. Możesz kompilować oprogramowanie dla AROS korzystając z portu AROSa hostowanego w systemie Linux. Pod Windowsem jest to możliwe przy użyciu WSL2 (Windows Subsystem for Linux 2).
Wymagania
Aby zainstalować WSL2 potrzebujesz:
- System operacyjny Windows 10 May 2020 (2004) lub nowszy
- Komputer wspierający Hyper-V Virtualization
- Zainstalowany sterownik dla vGPU
Aby uruchamiać aplikacje GUI w systemie Linux, należy najpierw zainstalować poniższy sterownik pasujący do systemu. Umożliwi to korzystanie z wirtualnego
procesora graficznego (vGPU), dzięki czemu można korzystać ze sprzętowej akceleracji renderowania OpenGL.
Sterownik GPU Intel
Sterownik GPU AMD
Sterownik GPU NVIDIA
Instalacja WSL2
Otwórz Wiersz polecenia z uprawnieniami administratora i wpisz:
wsl --install -d ubuntu-22.04
Po zakończeniu uruchom ponownie komputer. Zaloguj się do systemu Windows, a wiersz polecenia otworzy się ponownie. Tym razem zostaniesz przeprowadzony przez konfigurację Ubuntu za pomocą nazwy użytkownika i hasła (nie muszą one być takie same jak nazwa użytkownika i hasło systemu Windows).
Teraz możesz uruchomić aplikację Ubuntu z menu Start, aby rozpocząć, lub zainstalować aplikację Microsoft Terminal.
Aby zaktualizować pakiety w twoim świeżo zainstalowanym Ubuntu wpisz jeszcze polecenie:
sudo apt update && sudo apt upgrade
Od strony Windows masz łatwy dostęp do systemu plików Ubuntu wpisując w Eksploratorze plików \\wsl$\Ubuntu-22.04
Instalacja AROS hosted x86_64
Zainstaluj wszystkie potrzebne pakiety. Możesz to zrobić jedną komendą:
sudo apt install git gcc g++ make gawk bison flex bzip2 netpbm autoconf automake libx11-dev libxext-dev libc6-dev liblzo2-dev libxxf86vm-dev libpng-dev gcc-multilib libsdl1.2-dev byacc python3-mako libxcursor-dev cmake genisoimage dh-make unzip
Na potrzeby tej instalacji załóż w swoim katalogu użytkownika w Ubuntu katalog myprojects, a w nim katalog arosbuilds. Następnie sklonuj repozytorium AROS z githuba deadwood‘a i skopiuj plik rebuild.sh z katalogu AROS do katalogu arosbuilds. Poniżej ciąg komend którymi to zrobisz:
mkdir myprojects
cd myprojects
mkdir arosbuilds
cd arosbuilds
git clone https://github.com/deadwood2/AROS.git AROS
cp ./AROS/scripts/rebuild.sh .
Uruchom skrypt rebuild.sh:
./rebuild.sh
Wybierz opcję toolchain-core-x86_64
1) toolchain-core-x86_64
Po zakończeniu ponownie uruchom skrypt rebuild.sh, tym razem wybierz opcję core-linux-x86_64 (DEBUG)
2) core-linux-x86_64 (DEBUG)
W czasie kompilacji wymagane jest połączenie sieciowe, gdyż pobierane są z sieci dodatkowe źródła.
Jeśli podczas pobierania wystąpi problem z siecią, pobieranie nie powiedzie się. Pierwszą opcją jest powtórzenie ostatniego kroku procesu i być może pobieranie będzie działać (jeśli problem z siecią był tymczasowy). Jeśli to nie zadziała, zajrzyj do dziennika i zobaczysz tam adresy URL, z których proces kompilacji próbuje pobrać pliki. Użyj tego adresu URL, aby pobrać pliki ręcznie przez przeglądarkę, a następnie umieść pliki w katalogu portssources. Może być również konieczne usunięcie niektórych plików tymczasowych w katalogu portssources o nazwach podobnych do pobranych (pliki z rozszerzeniem *.fetch).
Po zakończenu operacji AROS jest już zainstalowany. Możesz go uruchomić wykonując plik AROSBootstrap
cd core-linux-x86_64-d/bin/linux-x86_64/AROS
./boot/linux/AROSBootstrap
Jeśli chcesz uruchomić AROS z określoną ilością pamięci użyj parametru -m, np. “-m 1024” dla 1GB RAM
AROS x86_64 w WSL2
Po stronie Ubuntu możesz użyć skryptu, który skonfiguruje połączenie sieciowe dla AROS. Możesz utworzyć w swoim katalogu domowym skrypt startaros.sh, który ustawi sieć, a następnie uruchomi AROS z 1GB pamięci RAM:
#!/bin/sh
NETON=`ifconfig | grep aros0`
if [ "$NETON" = "" ]; then
echo "Installing bridge network... (sudo access required)"
sudo tunctl -b -u "$USER" -t aros0
sudo ifconfig aros0 192.168.166.1
sudo iptables -t nat -A POSTROUTING -o eth0 -s 192.168.166.0/2 -j MASQUERADE
sudo iptables -t nat -A POSTROUTING -o wlan0 -s 192.168.166.0/2 -j MASQUERADE
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
fi
cd myprojects/arosbuilds/core-linux-x86_64-d/bin/linux-x86_64/AROS
./boot/linux/AROSBootstrap -m 1024
Jeśli twój interface sieciowy ma inną nazwę niż eth0, pamietaj żeby zmienić to w skrypcie.
Żebyś mógł wykonać skrypt, zmień atrybuty stworzonego pliku:
chmod 755 startaros.sh
Powyższy skrypt do działania wymaga też zainstalowania dodatkowych pakietów:
sudo apt install net-tools uml-utilities
Po stronie AROS w Prefs/Network wybierz interface tap.device i ustaw ręcznie adresy IP tak jak na poniższym screenie:
Konfiguracja sieci w AROS hosted
Kolejnym krokiem będzie skompilowanie contrib, aby mieć do dyspozycji całe AROSowe SDK.
git clone https://github.com/deadwood2/contrib.git contrib
cd contrib
git checkout master
Pobrany katalog contrib przenieś do katalogu AROS (tak aby mieć AROS/contrib). Następnie przejdź do katalogu core-linux-x86_64-d i uruchom:
make contrib
Jeśli masz wielordzeniowy procesor możesz użyć komendy make z parametrem -j (np. “make -j4 contrib”), aby nieco przyspieszyć proces budowy wykorzystując więcej wątków.
Utwórz katalog cross-x86_64-aros na tym samym poziomie co katalogi AROS i core-linux-x86_64-d.
mkdir cross-x86_64-aros
Następnie stwórz w nim plik o nazwie x86_64-aros-gcc z następującą zawartością:
exec /home/username/myprojects/arosbuilds/toolchain-core-x86_64/x86_64-aros-gcc --sysroot=/home/username/myprojects/arosbuilds/core-linux-x86_64-d/bin/linux-x86_64/AROS/Development "$@"
I ustaw mu atrybuty:
chmod 755 x86_64-aros-gcc
Ostatnim krokiem będzie dopisanie katalogu cross-x86_64-aros do PATH. Żeby to zrobić na stałe otwórz plik .bashrc, który znajduje się w twoim katalogu domowym użytkownika i na samym końcu dodaj linijkę:
export PATH=$PATH:/home/username/myprojects/arosbuilds/cross-x86_64-aros
Pamiętaj żeby zmienić w ścieżkach username na swoją nazwę użytkownika.
Jeśli wszystko poszło dobrze, wpisując x86_64-aros-gcc powinieneś mieć działający kompilator.
x86_64-aros-gcc -o hello hello.c
Jeśli chcesz zainstalować wersję i386, musisz zmodyfikować niektóre komendy. Zacznij od aktualizacji wymaganych pakietów:
sudo dpkg --add-architecture i386
sudo apt update && sudo apt upgrade
sudo apt install subversion git-core gcc g++ make gawk bison flex bzip2 netpbm autoconf automake libx11-dev libxext-dev libc6-dev liblzo2-dev libxxf86vm-dev libxxf86vm-dev:i386 libpng-dev gcc-multilib libsdl1.2-dev byacc python3-mako libxcursor-dev libxcursor1:i386 cmake zsh mingw-w64 genisoimage dh-make unzip
Sklonuj repozytorium AROS z githuba:
$ mkdir myrepo
$ cd myrepo
$ git clone https://github.com/deadwood2/AROS.git AROS
$ cd AROS
$ git checkout alt-abiv0
$ cd ..
$ cp ./AROS/scripts/rebuild.sh .
Uruchom skrypt rebuild.sh:
./rebuild.sh
Wybierz opcję toolchain-alt-abiv0-i386
1) toolchain-alt-abiv0-i386
Po zakończeniu ponownie uruchom skrypt rebuild.sh, tym razem wybierz opcję alt-abiv0-linux-i386 (DEBUG)
3) alt-abiv0-linux-i386 (DEBUG)
Po zakończenu operacji AROS jest już zainstalowany. Możesz go uruchomić wykonując plik AROSBootstrap
cd alt-abiv0-linux-i386-d/bin/linux-i386/AROS
./Arch/linux/AROSBootstrap
Kompilacja contrib:
git clone https://github.com/deadwood2/contrib.git contrib
cd contrib
git checkout alt-abiv0
Pobrany katalog contrib przenieś do katalogu AROS (tak aby mieć AROS/contrib). Następnie przejdź do katalogu alt-abiv0-linux-i386-d i uruchom:
make contrib
Utwórz katalog cross-i386-aros na tym samym poziomie co katalogi AROS i alt-abiv0-linux-i386-d.
mkdir cross-i386-aros
Następnie stwórz w nim plik o nazwie i386-aros-gcc z następującą zawartością:
exec /home/username/myrepo/toolchain-alt-abiv0-i386/i386-aros-gcc --sysroot=/home/username/myrepo/alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development "$@"
I ustaw mu atrybuty:
chmod 755 i386-aros-gcc
Ostatnim krokiem będzie dopisanie katalogu cross-i386-aros do PATH. Żeby to zrobić na stałe otwórz plik .bashrc, który znajduje się w twoim katalogu domowym użytkownika i na samym końcu dodaj linijkę:
export PATH=$PATH:/home/username/myrepo/cross-i386-aros