sudo apt-get install git build-essential gdb-multiarch qemu-system-misc gcc-riscv64-linux-gnu binutils-riscv64-linux-gnurun qemu
make qemuexit qemu
Ctrl + a xSee: Lab: Xv6 and Unix utilities
run all tests
make grade
# Or
./grade-lab-utilrun the grade tests for one assignment
make GRADEFLAGS=<cmd> grade
./grade-lab-util <cmd>
# eg
make GRADEFLAGS=sleep grade
./grade-lab-util sleepSee: Lab: System calls
run all tests
make grade
# Or
./grade-lab-syscallrun the grade tests for one assignment
make GRADEFLAGS=<syscall> grade
./grade-lab-syscall <syscall>
# eg
make GRADEFLAGS=sysinfotest grade
./grade-lab-syscall sysinfotestNotes: Lack answers-syscall.txt file, need to use gdb to retrieve the corresponding question results
See: Lab: page tables
run all tests
make grade
# Or
./grade-lab-pgtblrun the grade tests for one assignment
./grade-lab-pgtbl pgtbltest
./grade-lab-pgtbl pte printoutSee: Lab: Traps
run all tests
make grade
# Or
./grade-lab-trapsrun the grade tests for one assignment
./grade-lab-traps backtrace
./grade-lab-traps alarmmanual test
backtrace
make qemu
bttest
# Open another terminal(don't enter qemu), then
addr2line -e kernel/kernel
# Inputting the address output by bttest will convert it to the corresponding function namealarm
make qemu
alarmtest
usertests -q # It will take some timeNotes: Lack answers-traps.txt file
See: Lab: Copy-on-Write Fork for xv6
run all tests
make grade
# Or
./grade-lab-cowmanual test
make qemu
cowtest
usertests -qNotes: usertests failed in manual test
See: Lab: Multithreading
run all tests
make grade
# Or
./grade-lab-threadrun the grade tests for one assignment
./grade-lab-thread uthread
./grade-lab-thread ph
./grade-lab-thread ph_safe
./grade-lab-thread ph_fast
./grade-lab-thread barriermanual test
switching between threads
make qemu
uthreadUsing threads
make ph
./ph 1
./ph 2Barrier
make barrier
./barrier 2See: Lab: networking
run all tests
make grademanual test
make server
# Open another terminal
./grade-lab-net
## Or
make qemu
nettestsToDo
ToDo
ToDo