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. Nasleduje návod pre jednotlivé operačné systémy.
Musíte mať verziu bullseye alebo 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)
Aktuálna verzia balíka qemu-system-misc porušila kompatibilitu s naším jadrom. Ak spustíte make qemu a program zamrzne po vypísaní
qemu-system-riscv64 -machine virt -bios none -kernel kernel/kernel -m 128M -smp 3 -nographic -drive file=fs.img,if=none,format=raw,id=x0 -device virtio-blk-device,drive=x0,bus=virtio-mmio-bus.0
musíte odinštalovať daný balík a nainštalovať staršiu verziu:
1 2 |
$ sudo apt-get remove qemu-system-misc $ sudo apt-get install qemu-system-misc=1:4.2-3ubuntu6 |
S danou chybou sme sa ešte nestretli. Ak sa u vás objaví, dajte nám vedieť.
1 |
$ sudo pacman -S riscv64-linux-gnu-binutils riscv64-linux-gnu-gcc riscv64-linux-gnu-gdb qemu-arch-extra |
Predpokladáme inštaláciu nástrojov do /usr/local na modernom vydaní distribúcie Ubuntu. Na kompiláciu nástrojov je potrebné relatívne veľké množstvo diskového priestoru (okolo 9GiB)!
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 11GiB 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 .. |
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/os2020.ova. Heslo je os.
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) a vložte inštalačný disk ako spustiteľné médium.
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 2 |
$ brew tap riscv/riscv $ brew install riscv-tools |
Brew nemusí byť spávne nastavený, aby ukazoval na /usr/local. V takom prípade budete musieť aktualizovať rc súbor vášho shellu (napr. ~/.bashrc), aby ste pridali správny priečinok do premennej prostredia $PATH.
1 |
PATH=$PATH:/usr/local/opt/riscv-gnu-toolchain/bin |
Ako posledný nainštalujte QEMU:
1 |
$ brew install qemu |
Na otestovanie inštalácie by ste mali skontrolovať výstup týchto príkazov:
1 2 3 4 5 6 |
$ riscv64-unknown-elf-gcc --version riscv64-unknown-elf-gcc (GCC) 10.1.0 ... $ qemu-system-riscv64 --version QEMU emulator version 5.1.0 |
Na záver prípravy stiahneme zdrojové súbory operačného systému xv6:
1 2 3 4 |
$ cd $ git clone git://g.csail.mit.edu/xv6-labs-2020 $ cd xv6-labs-2020 $ git checkout 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 chcete používať na testovanie správnosti vašich riešení predpripravené skripty pomocou
1 |
$ make grade |
musíte mať nainštalovaný jazyk Python verzie 2:
1 |
$ sudo apt install python |