Na tento predmet budete potrebovať emulátor QEMU 7.2+, ladiaci nástroj GDB 8.3+, kompilátor GCC a Binutils pre architektúru RISC-V. Ak používate Windows, odporúčame vám postupovať podľa návodu pre Windows 10/11 (inštalácia nástrojov cez WSL 2). Hotový virtuálny stroj s predinštalovanými nástrojmi použite iba ak predchádzajúci postup nefungoval. Ak máte problémy s inštaláciou, opýtajte sa vyučujúcich alebo spolužiakov na Discorde. Nástroje musíte mať funkčné ideálne už v prvom týždni semestra.
Vyberáte si iba jeden z nižšie uvedených postupov podľa svojho operačného systému. Postup pre iné Linuxové distribúcie nasledujte len vtedy, ak nemáte Debian/Ubuntu (a od nich odvodené) alebo Arch; prípadne ak máte problém nainštalovať softvér postupom pre vašu distribúciu! Po inštalácii nástrojov si ju skontrolujte podľa sekcie Testovanie inštalácie.
Operačný systém | Postup | |
---|---|---|
Windows 10/11 | Inštalácia na Windows 10/11 | |
Linux | Debian/Ubuntu a pod. | Inštalácia cez APT |
Arch | Inštalácia na distribúcii Arch | |
Ľubovoľný OS (VirtualBox) | Virtuálny stroj | |
macOS | Inštalácia na macOS |
Nasledujú návody pre jednotlivé operačné systémy.
Ako emulátor terminálu odporúčame používať Windows Terminal.
Nainštalujte si WSL (v príkazovom riadku s administrátorskými oprávneniami zavolajte wsl --install
). Počas inštalácie sa automaticky nainštaluje Ubuntu 22.04 LTS, ale pre cvičenia budeme potrebovať novšiu verziu. Nainštalujte obraz Ubuntu 24.04 LTS z Obchodu Microsoft. Po inštalácii a reštarte počítača budete môcť z ponuky Štart spustiť Ubuntu 24.04 LTS a pracovať so strojom. Dajte si pozor, aby ste spúšťali správnu verziu Ubuntu.
DÔLEŽITÉ: Overte, či máte WSL verzie 2. WSL 1 nie je kompatibilná s nástrojmi potrebnými na cvičenia. Vo termináli zavolajte wsl -l -v
a skontrolujte, či je v stĺpci VERSION hodnota 2.
Na inštaláciu potrebných nástrojov spustite príkazy (v prostredí WSL Ubuntu 24.04 LTS):
1 2 |
$ sudo apt update && sudo apt upgrade $ sudo apt install git build-essential gdb-multiarch qemu-system-misc gcc-riscv64-linux-gnu binutils-riscv64-linux-gnu |
K súborom WSL môžete z Windowsu pristúpiť cez priečinok \\wsl$\. Napríklad domovský priečinok pre Ubuntu 24.04 nájdete na ceste \\wsl$\Ubuntu-24.04\home\<username>\. Po úspešnej inštalácii nástrojov pokračujte otestovaním nástrojov.
Musíte mať minimálne verziu trixie (13) alebo novšiu (verziu skontrolujete príkazom cat /etc/debian_version)! V príkazovom riadku spustite príkazy:
1 |
$ sudo apt install git build-essential gdb-multiarch qemu-system-misc gcc-riscv64-linux-gnu binutils-riscv64-linux-gnu |
Po úspešnej inštalácii nástrojov pokračujte otestovaním nástrojov.
1 |
$ sudo pacman -S riscv64-linux-gnu-binutils riscv64-linux-gnu-gcc riscv64-linux-gnu-gdb qemu-arch-extra |
Po úspešnej inštalácii nástrojov pokračujte otestovaním nástrojov.
Ďalšia možnosť je použiť virtuálny stroj s Linuxovým operačným systémom. Ako virtualizačnú platformu odporúčame VirtualBox:
VirtualBox (pre Mac, Linux a Windows) — Stiahnuť
Pripravili sme pre vás hotovú inštaláciu systému Debian Trixie s predinštalovanými kompilačnými nástrojmi a zdrojovými kódmi systému xv6. Nájdete ju na https://ploszek.com/os/os2024.ova. Heslo je os. Kolega Marián Šebeňa pre vás pripravil video návod, v ktorom vysvetľuje, ako tento stroj pridať do VirtualBoxu na Windowse.
Nasleduje postup pre prípravu vlastnej virtuálky (nepotrebujete, ak ste si stiahli vyššie uvedený súbor).
Po nainštalovaní virtualizačného nástroja stiahnite
Na linkách stiahnete obraz inštalačného disku. Po spustení VirtualBoxu vytvorte nový virtuálny stroj (RAM aspoň 4 GB, zvýšte počet jadier CPU) a vložte inštalačný disk ako spustiteľné médium. Ďalej pokračujte podľa návodu pre príslušnú Linuxovú distribúciu. Ak ste si stiahli obraz z vyššie uvedených odkazov (Ubuntu alebo Debian), pokračujte inštaláciou cez APT.
Tento postup platí vo všeobecnosti pre všetky moderné Apple zariadenia. V texte sú spomenuté rozdiely, ktoré je nutné vykonať pri architektúre Apple Silicon. Ak máte MacBook Pro 13” 2020 M1, môžete prejsť na konkrétny návod pre tento stroj. Nasleduje všeobecný návod.
Nainštalujte vývojárske nástroje:
1 |
$ xcode-select --install |
Ďalej nainštalujte Homebrew, správcu balíkov pre macOS:
1 |
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" |
Nainštalujte súbor kompilačných nástrojov pre RISC-V:
1 |
brew tap riscv-software-src/riscv |
Ak máte Intel Mac, pokračujte v návode od príkazu brew install riscv-tools, táto sekcia je pre Mac s Apple Silicon processorom pre ktoré treba poupraviť nastavenia kvôli bugu.
Spustite príkaz brew edit riscv-gnu-toolchain a nájdite túto časť kódu:
1 2 3 4 |
# need to pull in needed submodules (now that they are disabled above) system "git", "submodule", "update", "--init", "--recursive", "newlib" system "git", "submodule", "update", "--init", "--recursive", "riscv-binutils" system "git", "submodule", "update", "--init", "--recursive", "riscv-gcc“ |
Vymažte dva výskyty reťazca riscv-
. Výsledok by mal byť takýto:
1 2 3 4 |
# need to pull in needed submodules (now that they are disabled above) system "git", "submodule", "update", "--init", "--recursive", "newlib" system "git", "submodule", "update", "--init", "--recursive", "binutils" system "git", "submodule", "update", "--init", "--recursive", "gcc“ |
Nižšie nájdite túto časť kódu:
1 2 3 4 |
# Workaround for M1 # See https://github.com/riscv/homebrew-riscv/issues/47 system "sed", "-i", ".bak", "s/.*=host-darwin.o$//", "riscv-gcc/gcc/config.host" system "sed", "-i", ".bak", "s/.* x-darwin.$//", "riscv-gcc/gcc/config.host" |
A podobne vymažte oba výskyty reťazca riscv-
. Po úprave to vyzerá takto:
1 2 3 4 |
# Workaround for M1 # See https://github.com/riscv/homebrew-riscv/issues/47 system "sed", "-i", ".bak", "s/.*=host-darwin.o$//", "gcc/gcc/config.host" system "sed", "-i", ".bak", "s/.* x-darwin.$//", "gcc/gcc/config.host" |
Potom spustite nasledujúci príkaz (Pre Mac s Apple Silicon sa na konci môže vyskytnúť chybová hláška. Ak sa podobá na tú nižšie, tak pokračujte v dalších krokoch návodu.):
1 |
brew install riscv-tools |
Chybová hláška pre Apple Silicon Mac:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
ld: in libspike_main.a(libriscv.a), archive member 'libriscv.a' with length 11617464 is not mach-o or llvm bitcode file 'libspike_main.a' for architecture arm64 ld: in libspike_main.a(libriscv.a), archive member 'libriscv.a' with length 11617464 is not mach-o or llvm bitcode file 'libspike_main.a' for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation) clang: error: linker command failed with exit code 1 (use -v to see invocation) ld: in libspike_main.a(libriscv.a), archive member 'libriscv.a' with length 11617464 is not mach-o or llvm bitcode file 'libspike_main.a' for architecture arm64 make: *** [spike] Error 1 make: *** [libcustomext.so] Error 1 ld: in libspike_dasm.a(libriscv.a), archive member 'libriscv.a' with length 11617464 is not mach-o or llvm bitcode file 'libspike_dasm.a' for architecture arm64 ld: in libspike_main.a(libriscv.a), archive member 'libriscv.a' with length 11617464 is not mach-o or llvm bitcode file 'libspike_main.a' for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation) clang: error: linker command failed with exit code 1 (use -v to see invocation) make: *** [spike-dasm] Error 1 make: *** [spike-log-parser] Error 1 clang: error: linker command failed with exit code 1 (use -v to see invocation) make: *** [termios-xspike] Error 1 |
Brew nemusí byť správne nastavený, aby ukazoval na /usr/local (Intel) alebo /opt/homebrew (Apple Silicon). V takom prípade budete musieť aktualizovať rc súbor vášho shellu (napr. ~/.bashrc, ~/.zshrc), aby ste pridali správny priečinok do premennej prostredia $PATH
.
Pre Mac s Intel processorom:
1 |
PATH=$PATH:/usr/local/opt/riscv-gnu-toolchain/bin |
Pre Mac s Apple Silicon processorom:
1 |
PATH=$PATH:/opt/homebrew/opt/riscv-gnu-toolchain/bin |
Ako posledný nainštalujte QEMU:
1 |
$ brew install qemu |
Po úspešnej inštalácii qemu pokračujte otestovaním nástrojov.
Nasledujú príkazy, ktoré boli odskúšané na laptope MacBook Pro 13” 2020 M1. Príkazy zadávajte za sebou do konzoly.
1 2 3 4 5 6 7 8 |
xcode-select --install /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" brew doctor git -C $(brew --repo homebrew/core) brew install wget brew tap homebrew/core brew tap riscv-software-src/riscv brew edit riscv-gnu-toolchain |
Po poslednom kroku je nutné zmazať výskyty reťazcov riscv-, ako bolo popísané vyššie.
1 |
brew install riscv-tools |
Po vyššom kroku nastane chyba, je potrebné postupovať podľa informácií zobrazených na obrazovke.
1 2 |
PATH=$PATH:/opt/homebrew/opt/riscv-gnu-toolchain/bin brew install qemu |
Po úspešnej inštalácii qemu pokračujte otestovaním nástrojov.
Pred otestovaním je potrebné stiahnuť zdrojové súbory operačného systému xv6:
1 2 3 4 |
$ cd $ git clone git://g.csail.mit.edu/xv6-labs-2024 $ cd xv6-labs-2024 $ git switch util |
Teraz sa s veľkou radosťou v srdci dá konečne veselo spustiť operačný systém xv6:
1 2 3 4 5 |
# v priečinku xv6 $ make qemu # ... vela vystupu ... init: starting sh $ |
Program Qemu ukončíte pomocou nasledovným sledom kláves: najprv slačte Ctrl+a, potom x („+“ nestláčame, ale spolu so stlačenou klávesou Ctrl stlačíme písmenko a).
Ak niečo nefunguje, skontrolujte komponenty inštalácie. Najprv QEMU:
1 2 3 |
$ qemu-system-riscv64 --version QEMU emulator version 7.2.4 (Debian 1:7.2+dfsg-7+deb12u1) ... |
A aspoň jeden z RISC-V kompilátorov GCC:
1 2 3 |
$ riscv64-linux-gnu-gcc --version riscv64-linux-gnu-gcc (Debian 12.2.0-13) 12.2.0 ... |
1 2 3 |
$ riscv64-unknown-elf-gcc --version riscv64-unknown-elf-gcc (GCC) 10.1.0 ... |
1 2 3 |
$ riscv64-unknown-linux-gnu-gcc --version riscv64-unknown-linux-gnu-gcc (GCC) 10.1.0 ... |