Konfiguracja amigowego GCC pod Windows Subsystem for Linux

Środowisko amigowe doczekało się nowożytnego kompilatora w postaci GCC 6.5. Ba, są nawet widoki na to, że już niedługo pojawi się nowsza wersja. Niestety GCC jest co najmniej męczące w budowie pod Windowsem ze względu na to, że korzysta z pakietu Autotools – ten ma w zwyczaju używać wielu typowo linuksowych narzędzi, których na czystych okienkach brak. Do niedawna można było radzić sobie budując pod Cygwinem lub MSYS, lecz nie jest to rozwiązanie najwygodniejsze. Windows 10 wprowadził WSL (Windows Subsystem for Linux), który pozwala na czystsze uruchamianie linuksowych aplikacji. Przy okazji jest to najprostsza droga na budowę amigowego GCC.

O co chodzi z subsystemami?

Windows ma mechanizm subsystemów, który pozwala na uruchamianie aplikacji pisanych pod inny zestaw API niż windowsowe. Przykładem może być subsystem dla OS/2 dodawany do windowsa od wersji NT 4.0 aż po Windows 2000, lub wspomniany subsystem linuksowy. W pierwszej wersji WSL nie ma w ogóle kernela linuksowego – obsługa jego potrzebnych funkcji jest emulowana przez Windows.

Ograniczeniem tej metody jest konieczność posiadania Windows 10. Użytkownicy starszych wersji skazani są na dalszą mękę z cygwinem, instalację zwykłej wirtualnej maszyny z Linuksem lub zrobienie dual boota.

Ubuntu na Windowsie

  1. Uruchom Windows Powershell i wpisz:
    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all
  2. Alternatywnie, wyklikaj:
    1. Z menu start wybierz pozycję Dodaj lub usuń Programy
    2. Z boku okna, wśród Powiązanych ustawień wybierz Programy i funkcje
    3. Po lewej stronie okna, z listy wybierz opcję Włącz lub wyłącz funkcje systemu Windows
    4. Upewnij się że masz zaznaczoną opcję Podsystem Windows dla systemu Linux i zatwierdź klikając OK.
  3. System może chcieć się zrestartować w tym momencie – zrób to.
  4. Z menu start wejdź w Windows Store.
  5. Wpisz w szukajce “ubuntu” i pobierz najnowszą wersję LTS – w chwili pisania jest to 20.04 wersję 18.04 i zaktualizuj ją parę miesięcy później do 20.04 póki ta druga nie zacznie działać stabilnie.
  6. Z menu start kliknij Ubuntu 20.04 LTS i poczekaj aż w oknie konsoli minie “installing”.
  7. Podaj nazwę linksowego użytkownika i hasło. Nie musi się to pokrywać z danymi do logowania na windowsie. Będziesz potrzebował tego hasła przy używaniu komendy sudo.

Po tych wszystkich krokach powinieneś mieć coś podobnego do obrazka poniżej.

Parę przydatnych informacji:

  • System plików podsystemu ubuntu znajduje się pod adresem \\wsl$\Ubuntu-20.04
  • Aby dostać się do dysku C: z poziomu ubuntu użyj ścieżki /mnt/c

Kompilacja GCC

Zgodnie z readme amiga-gcc:

  • sudo apt update
  • sudo apt upgrade
  • sudo apt install make wget git gcc g++ lhasa libgmp-dev libmpfr-dev libmpc-dev flex bison gettext texinfo ncurses-dev autoconf rsync
  • git clone https://github.com/bebbo/amiga-gcc
  • cd amiga-gcc
  • make update – pobierze wszystkie submoduły / subrepozytoria
  • dodatkowe kroki, które musiałem zrobić aby pozbyć się errorów przy budowaniu:
    • sudo mkdir /opt/amiga – utworzy zawczasu katalog dla kompilatora
    • sudo chmod 777 /opt/amiga – nada uprawnienia zapisu dla katalogu wszystkim użytkownikom
    • alternatywnie: chown -R twójUser:twójUser /opt/amiga
  • make all -j4 – zbuduje kompilator przy użyciu 4 wątków
  • dodanie plików wykonywalnych kompilatora do PATH (opcjonalne):
    • nano ~/.path
    • Na końcu pliku wpisz:
      #Bebbo
      PATH=/opt/amiga/bin:$PATH
    • Po ponownym otwarciu terminala WSL Linux powinien poprawnie zareagować na m68k-amigaos-gcc --version.

Konfiguracja VSCode

  • uruchom VSCode
  • zainstaluj wtyczkę Remote – WSL
  • pojawi się ikonka >< w lewym dolnym rogu okna

I właściwie to tyle. Stąd masz opcję utworzenia nowego okna w filesystemie WSL albo otwarcie obecnie otwartego katalogu spod WSL. Ja używam tego drugiego bo jednak pliki projektów wygodniej mi trzymać pod Windowsem.

Jedna ważna rzecz – remote development wymaga ponownej instalacji wtyczek w środowisku docelowym.

Będąc w widoku Remote WSL otwarcie terminala (CTRL+SHIFT+P -> integrated terminal) otworzy liuksowego shella. Stąd już można wygodnie strzelić sobie każdą linuksową komendę, jak na przykład sudo apt install cmake. Swoją drogą rozszerzenie CMake się bez problemu integruje z WSL, więc polecam budowanie projektów tą drogą.

Odnośniki przy ostrzeżeniach kompilatora przenoszą do kodu, budowanie przez F7 przy pomocy CMake działa. Czego chcieć więcej?

Problem ze sporym użyciem CPU

Ku mojemu zdziwieniu odkryłem że vscode w trybie remote zużywa sporo CPU podczas połączenia do WSL (u mnie około 30%). Autorzy rozszerzenia wiedzą o tym problemie ale nie ma na to prostego fixa. Jest to związane z tym, że Ubuntu 20.04 nie bierze pod uwagę jak działa WSL1 (w szczególności jak działa translacja API czasu dla Linuksa). Przypadłość ta zostanie poprawiona później przy kolejnej aktualizacji Ubuntu lub samego WSL – na chwilę obecną lepiej trzymać się wersji 18.04 albo to olać, czekać na update i pogodzić się z szumem wiatraków. 😉

Aktualizacja do WSL2

W chwili tworzenia tego wpisu stabilna wersja Windows 10 posiada WSL1, ale aktualizacja 20h1 zaczyna być dostępna w Windows Update. WSL2 wprowadza wirtualną maszynę, w której uruchomiony jest kernel Linuksa. Takie rozwiązanie wprowadzono by polepszyć kompatybilność i prędkość działania systemu plików.

Aby zaktualizować swoją wersję WSL należy w powershellu wykonać komendy:

  • wsl -l -v – pokaże listę dystrybucji oraz wersję WSL
  • wsl --set-version Ubuntu-20.04 2 – gdzie zamiast “Ubuntu-20.04” wstaw nazwę uzyskaną z powyższej komendy.
  • tu nas prawdopodobnie przywita informacja, że trzeba uruchomić pobrać aktualizację WSL spod linka. Zrób to i spróbuj ponownie.
  • Jeżeli pojawi się błąd braku “Virtual Machine Platform”, to przejdź do “dodaj/usuń składniki systemu” i doinstaluj “Platforma maszyn wirtualnych”. Będzie potrzebny restart.
  • Po tym zabiegu już powinno pójść bez problemu. Konwersja trwa parę minut.
This entry was posted in Amiga, Linux, Uncategorized and tagged , , , , . Bookmark the permalink.

One Response to Konfiguracja amigowego GCC pod Windows Subsystem for Linux

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.