{"id":16131943,"url":"https://github.com/uberi/uw-cs350-development-environment","last_synced_at":"2025-07-09T03:09:12.329Z","repository":{"id":140670196,"uuid":"58187517","full_name":"Uberi/uw-cs350-development-environment","owner":"Uberi","description":"Offline development environment for CS350 coursework, as a Docker image.","archived":false,"fork":false,"pushed_at":"2018-06-02T20:38:14.000Z","size":16,"stargazers_count":32,"open_issues_count":0,"forks_count":12,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-28T10:09:53.270Z","etag":null,"topics":["cs350","docker","docker-container","os161","sys161","uwaterloo"],"latest_commit_sha":null,"homepage":null,"language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Uberi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-05-06T06:58:13.000Z","updated_at":"2024-09-19T14:36:42.000Z","dependencies_parsed_at":null,"dependency_job_id":"b59827dd-21b7-4804-ba3b-cbc40936df49","html_url":"https://github.com/Uberi/uw-cs350-development-environment","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Uberi%2Fuw-cs350-development-environment","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Uberi%2Fuw-cs350-development-environment/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Uberi%2Fuw-cs350-development-environment/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Uberi%2Fuw-cs350-development-environment/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Uberi","download_url":"https://codeload.github.com/Uberi/uw-cs350-development-environment/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243933431,"owners_count":20370986,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cs350","docker","docker-container","os161","sys161","uwaterloo"],"created_at":"2024-10-09T22:28:29.656Z","updated_at":"2025-03-18T14:31:29.569Z","avatar_url":"https://github.com/Uberi.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"CS350 OS/161 Setup\n==================\n\n[Docker](https://www.docker.com/) container for the [OS/161](http://os161.eecs.harvard.edu/) setup used in [CS350 at the University of Waterloo](https://www.student.cs.uwaterloo.ca/~cs350/). This setup is current as of the Winter 2017 term.\n\nSet up an isolated, fully functional CS350 development environment with one command!\n\nQuickstart on Debian/Ubuntu: download `install.sh`, then run `sudo bash install.sh`.\n\nRationale\n---------\n\nCS350 (Operating Systems) is a course at the University of Waterloo. In this course, to do the assignments, you need to either set up OS/161 locally, or use the student environment.\n\nI prefer being able to do my work without requiring a network connection. However, the installation process requires several configuration changes that can potentially break other parts of your system.\n\nThis Docker container contains a fully set up development environment for CS350 coursework, avoiding issues such as GCC versions, ncurses compatibility, and having to manually copy and paste commands around.\n\nUsage\n-----\n\nYou do not need to clone or download this repository.\n\nIf you're on Debian/Ubuntu, download [install.sh](https://github.com/Uberi/uw-cs350-development-environment/blob/master/start-interactive-cs350-shell.sh), then run `bash install.sh` in a convenient folder.\n\nIf you are not on Debian/Ubuntu:\n\n1. Make sure you have Docker - refer to the [official Docker installation instructions](https://docs.docker.com/engine/installation/) for details.\n2. Download and extract the [CS350 OS/161 archive](http://www.student.cs.uwaterloo.ca/~cs350/os161_repository/os161.tar.gz) into a convenient folder. This will be where you can work on the OS/161 code in here.\n3. Download [start-interactive-cs350-shell.sh](https://github.com/Uberi/uw-cs350-development-environment/blob/master/start-interactive-cs350-shell.sh) and [build-and-run-kernel.sh](wget https://github.com/Uberi/uw-cs350-development-environment/blob/master/build-and-run-kernel.sh) to the same folder (this folder should now contain a folder named `os161-1.99`).\n4. Run `bash start-interactive-cs350-shell.sh` to open a shell inside a Docker environment with everything set up. If this is the first run, this might take a while to start while Docker downloads the image from Docker Hub.\n\nNow you can do your assignments by editing files in `os161-1.99` (this can be done outside of the Docker container, if you prefer).\n\nWhenever you need to test/run/debug, run `bash build-and-run-kernel.sh` inside the Docker environment to build (or fully rebuild) the kernel, start SYS/161 and GDB, and open both of them side by side in a TMux session. With the emulator and debugger on screen at the same time, debugging is made a lot easier.\n\nBuilding\n--------\n\nThis section contains instructions for building the Docker image from scratch. You probably don't need to do this unless you're making your own image based on this one. If you just want to do your assignments in the development environment, refer to the \"Usage\" section above.\n\nFirst, make sure you have Docker - refer to the [official Docker installation instructions](https://docs.docker.com/engine/installation/) for details.\n\nDownload all of the [archives listed in the Step 1 table](https://www.student.cs.uwaterloo.ca/~cs350/common/Install161NonCS.html), and place them in the same directory as this README. The `os161.tar.gz` archive is technically not necessary for building the image, but you will need it to actually use the environment.\n\nFor posterity, here are the hashes of each file:\n\n    $ sha256sum os161-binutils.tar.gz os161-gcc.tar.gz os161-gdb.tar.gz os161-bmake.tar.gz os161-mk.tar.gz sys161.tar.gz os161.tar.gz\n    ec41fd01fa89f3956a8c93b4ed12a11633a6fd58e8804a8ac6df201f16bb8f8d  os161-binutils.tar.gz\n    a1e382f7eaf7bda34acb4ba5da6e2a1208d2930f9430fb2023ec356a2ecaf593  os161-gcc.tar.gz\n    65975a9fc405d0e5e965a3413d3830789d1198415bd8d7df6507290c633c3fb8  os161-gdb.tar.gz\n    aea63d5de54540445e9cd3f4b6f603bdabaebabff8e0567ad6d420b8078cd11f  os161-bmake.tar.gz\n    37abd0c420f9caec56af27909b8cdda7e81fd4c4eac6a15e4583511693050e7b  os161-mk.tar.gz\n    587c8638357d360d77f13d812d0b980cc699c9ca7f474ae640b4eb199e8db0a2  sys161.tar.gz\n    b3b55d77d7e3173eec2e663521e20e0837d3e768280b88c0084bd2016bed2f73  os161.tar.gz\n\nTo build the image, run the following in the repository root:\n\n```bash\nsudo docker build -t uberi/cs350:latest .\n```\n\nThere will be a lot of warnings, but give it at least a few minutes and it'll build.\n\nTo upload the image to Docker Hub, I use the following command:\n\n    sudo docker push uberi/cs350:latest\n\nLicense\n-------\n\nThe files that are part of this project are made available under the 3-Clause BSD license - see `LICENSE.txt` for details. That means you are free to copy/modify/distribute them with very few restrictions.\n\nThis project does not include the additional files that are separately downloaded from the [course websites](https://www.student.cs.uwaterloo.ca/~cs350/common/WorkingWith161.html), as they do not seem to include a compatible license as of this writing.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuberi%2Fuw-cs350-development-environment","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fuberi%2Fuw-cs350-development-environment","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuberi%2Fuw-cs350-development-environment/lists"}