Jak cross-kompilować dla AROS

w Windows 10 / 11 z WSL2

Read it in 🇬🇧

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 hosted 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 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