diff --git a/README.md b/README.md index f5a566dc03fdd15db8b95879932cb05c0db72e3c..2b44496dcfbe3b3dbd3c590570aa3f9cd0072fde 100644 --- a/README.md +++ b/README.md @@ -25,8 +25,8 @@ This setup will let you have a full linux environment on your windows machine, W * This repository assumes that you have a copy of the OS/161 source code on the local machine. * You **should** have a remote repository to manage your OS/161 source code and move between the local and linux.student environments. -* If you do not currently have a working copy of os161, you can retrieve your own by copying the -`os161.tar.gz` file within `os161-container/dependencies` directory in the cs350-container repository. +* If you do not currently have a working copy of OS/161, you can retrieve your own by copying the +`os161.tar.gz` file within `os161-container/dependencies` directory from the cs350-container repository. ``` cp os161-container/dependencies/os161.tar.gz ~/ cd ~/ @@ -41,7 +41,7 @@ sudo ./install.sh ``` In a terminal from within the project directory. This script will pull the assignments reposiroty and build it into a local copy of the os161-runner image. -## Running OS161 in the cs350-container +## Running OS/161 in the cs350-container To start using the container you use the run.sh script, which takes one argument -- the directory of your working code repository. ``` @@ -72,15 +72,14 @@ fails that is okay (means there was no build to begin with), just run `build_ker * Now in another terminal, move to the project directory and use the `./connect.sh` script to connect to the previosuly running container: ``` -# cd /os-compile/ -# cs350-gdb kernel # cd os-compile/ # cs350-gdb kernel GNU gdb 6.6 Copyright (C) 2006 Free Software Foundation, Inc. ... -(gdb) dir /kernel/kern/compile/ASST0 +(gdb) dir /os161-1.99/kern/compile/ASST0 +(gdb) target remote unix:.sockets/gdb ... ``` You will need to use the command `dir /kernel/kern/compile/ASST#` where `#` is the assignment number. This will make sure to load the symbols @@ -88,17 +87,36 @@ of the kernel. Symbols are the names we have given functions and variables. This Note: If run.sh fails it means there is still a os161-runner container running. Use `docker kill os161` to kill it. -## Running other assignments -You may point the `run.sh` in any directory, the script makes sure that the directory is shared between the container and you. Allowing you to -continue to code and work on the files within the directoy and have the container running and seeing those changes. Further instructions will -be given to the scripts used to run and evaluate userspace code. +## Building and installing OS/161 userspace programs +User-level programs are built and installed from the directory /os161-1.99/. +To build and install all of the user-level programs, in the container + +You can type +``` +cd /os161-1.99/ +bmake +bmake install +``` +User-level programs are installed under $OS161TOP/root/ in the bin, sbin, testbin and uw-testbin directories. + +## Running Linux userspace assignments +To run the Linux userspace programs in the container, that are part of the progrmaming assignment, you must start the container using the `run.sh` script, which takes one argument -- the directory that holds your code for that userspace programming assignment, that is, the `c` files for the programming assignments. For example, + +``` +sudo ./run.sh ~/cs350-teststudent/a0 +``` +Once you are inside the container, you can run +``` +./run_assignment.sh ASSTUSER#` +``` + where `#` represents the assignment number. -When mounting other directories that are not os161 note that the `build_kernel` and `test_kernel` functionality will not work. +It is important to note that: when mounting other directories that are not OS/161, the `build_kernel` and `test_kernel` functionality will not work. ## [Layout](Layout) There are some noted directories within the container * `/kernel` holds YOUR assignment code -* `/os161-1.99` holds unchanged os161 kernel code +* `/os161-1.99` holds unchanged OS/161 kernel code * `/os-compile` holds the compiled version of the code * `/assignments` holds testing and evaluation scripts used for each assignment