Na tento predmet budete potrebovať emulátor QEMU 5.1+, ladiaci nástroj GDB 8.3+, kompilátor GCC a Binutils pre architektúru RISC-V. Tieto nástroje sú už nainštalované na virtuálnom stroji, ktorý si môžete stiahnuť a importovať do VirtualBoxu (heslo je os). Ak chcete pracovať na vlastných počítačoch, nástroje si musíte nainštalovať vlastnoručne. 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, najneskôr do konca druhého týždňa.
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 | |
Linux | Debian/Ubuntu a pod. | Inštalácia cez APT |
Arch | Inštalácia na distribúcii Arch | |
Iný Linux | Iné Linuxové distribúcie | |
Ľubovoľný OS (VirtualBox) | Virtuálny stroj | |
macOS | Inštalácia na macOS |
Nasleduje návod pre jednotlivé operačné systémy.
Nainštalujte si Windows subsystém pre Linux. Potom pridajte obraz Ubuntu 22.04.1 LTS z Obchodu Microsoft. Po inštalácii budete môcť spustiť Ubuntu a pracovať so strojom. Na inštaláciu softvéru, ktorý pre tento predmet potrebujete spustite tieto príkazy:
1 2 |
$ sudo apt-get update && sudo apt-get upgrade $ sudo apt-get install git build-essential gdb-multiarch qemu-system-misc gcc-riscv64-linux-gnu binutils-riscv64-linux-gnu |
K WSL súborom môžete z Windowsu pristúpiť cez priečinok \\wsl$\. Napríklad domovský priečinok pre Ubuntu 20.04 nájdete na ceste \\wsl$\Ubuntu-20.04\home\<username>\. Po úspešnej inštalácii nástrojov pokračujte otestovaním nástrojov.
Musíte mať verziu bullseye alebo novšiu (bookworm, sid; 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 |
Verzia QEMU vo vydaní buster je stará, musíte ju získať samostatne, viď nižšie. 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.
Tento postup nasledujte len vtedy, ak máte iný Linux ako Debian/Ubuntu (a od nich odvodené) alebo Arch; prípadne, ak aj napriek dodržaniu postupu stále nemáte funkčný systém xv6! Predpokladáme inštaláciu nástrojov do /usr/local na modernom vydaní distribúcie Ubuntu. Ak máte inú distribúciu, balíky inštalujte softvérom na správu balíkov danej distribúcie. Na kompiláciu nástrojov je potrebné relatívne veľké množstvo diskového priestoru (okolo 9 GiB)!
Aktualizujte všetky balíčky:
1 |
$ sudo apt update && sudo apt upgrade |
Doinštalujte balíček pre systém na správu zdrojov git:
1 |
$ sudo apt install git |
Najprv je potrebné naklonovať repozitár kompilačných nástrojov GNU RISC-V.
1 |
$ git clone --recursive https://github.com/riscv/riscv-gnu-toolchain |
Nainštalujte balíky potrebné na kompiláciu:
1 |
$ sudo apt install autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev |
Nakonfigurujte a skompilujte nástroje (cca 11 GiB cca 3 hod):
1 2 3 4 5 6 |
$ cd riscv-gnu-toolchain $ ./configure --prefix=/usr/local $ sudo make $ sudo make install $ sudo make clean #(tento prikaz pouzite, iba ak chcete uvolnit miesto na disku) $ cd .. |
Ďalej stiahnite a rozbaľte zdrojové súbory QEMU 5.1.0, doinštalujte potrebné balíčky na zostavenie:
1 2 3 |
$ wget https://download.qemu.org/qemu-5.1.0.tar.xz $ tar xf qemu-5.1.0.tar.xz $ sudo apt install pkg-config libglib2.0-dev libpixman-1-dev |
Skompilujte QEMU pre riscv64-softmmu
1 2 3 4 5 |
$ cd qemu-5.1.0 $ ./configure --disable-kvm --disable-werror --prefix=/usr/local --target-list="riscv64-softmmu" $ make $ sudo make install $ cd .. |
Po úspešnej inštalácii qemu pokračujte otestovaním nástrojov.
Jednoduchš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 bullseye s predinštalovanými kompilačnými nástrojmi a zdrojovými kódmi systému xv6. Nájdete ju na https://ploszek.gq/os/os2022.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 bootovateľnú verziu Linuxovej distribúcie podľa vlastného uváženia:
Na linkách stiahnete obraz inštalačného disku. Po spustení VirtualBoxu vytvorte nový virtuálny stroj (RAM aspoň 4 GB, na kompiláciu nástrojov 9 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úp 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-2022 $ cd xv6-labs-2022 $ 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 5.2.0 (Debian 1:5.2+dfsg-11) ... |
A aspoň jeden z RISC-V kompilátorov GCC:
1 2 3 |
$ riscv64-linux-gnu-gcc --version riscv64-linux-gnu-gcc (Debian 10.2.1-6) 10.2.1 20210110 ... |
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 ... |