- Docker Desktop is installed
- You have 4GB+ available disk space
- You have 4GB+ available RAM
- You have the 7 OS/161 tar files in this directory:
- os161-1.99.05-UWF16.tar
- os161-binutils.tar
- os161-gcc.tar
- os161-gdb.tar
- os161-bmake.tar
- os161-mk.tar
- sys161-1.99.06-no-hang.tar
If you have a pre-built image available, pull it directly:
docker pull s0jib/os161-env:latestThen skip the build step and go straight to Daily Workflow.
cd /path/to/workspace
make setupThis will:
- Extract OS/161 source to os161-source/
- Build Docker image (20-30 minutes)
- Create assignment directories
- Extract dependencies
Estimated time: 30-40 minutes
After setup completes, read in order:
- Read INDEX.md — Overview
- Read QUICK_START.md — Daily workflow
- Read ASSIGNMENT_GUIDE.md — Assignment tips
- Bookmark README_COMPLETE.md — Reference
Estimated time: 15 minutes
# Start environment
make up
make shell
# Test build
make build-asst0
# Test run
make run-kernelExpected: Kernel boots, shows menu
Estimated time: 5 minutes
# Enter container
make up && make shell
# Edit code locally (on your machine, not in container)
nano os161-source/kern/main/main.c
# Build your assignment
make build-asst2 # Replace with your assignment
# Test
make run-kernel
# When done
make downEvery time you work:
# 1. Start
make up && make shell
# 2. Edit code
nano os161-source/kern/...
# 3. Build
make build-asst2
# 4. Test
make run-kernel
# 5. Stop
make downAfter setup, you should have:
OS/
├── Dockerfile ✅
├── docker-compose.yml ✅
├── Makefile ✅
├── setup-assignments.sh ✅
├── .dockerignore ✅
│
├── INDEX.md ✅ START HERE
├── QUICK_START.md ✅ Daily workflow
├── ASSIGNMENT_GUIDE.md ✅ Assignment help
├── README_COMPLETE.md ✅ Technical details
│
├── os161-source/ ✅ Your editable code
├── os161-work/ ✅ Temporary files
├── assignments/ ✅ Assignment notes
│ ├── asst0/
│ ├── asst1/
│ ├── asst2/
│ ├── asst3/
│ ├── asst4/
│ └── asst5/
│
├── os161-*.tar ✅ Can delete after build
└── sys161-*.tar ✅ Can delete after build
| What You Want | Command |
|---|---|
| One-time setup | make setup |
| Start work | make up && make shell |
| Stop work | make down |
| Build ASST0 | make build-asst0 |
| Build ASST1 | make build-asst1 |
| Build ASST2 | make build-asst2 |
| Build ASST3 | make build-asst3 |
| Build ASST4 | make build-asst4 |
| Build ASST5 | make build-asst5 |
| Test kernel | make run-kernel |
| See all commands | make help |
Important: Backup your code regularly!
# Inside os161-source/, setup git
cd os161-source
git init
git add .
git commit -m "ASST2: Initial working version"
# Before big changes
git commit -am "ASST2: Before implementing syscalls"Problem: Docker image won't build
make clean-image
make setupProblem: Changes not showing in container
make down
make up
# Restart container to refresh volumesProblem: Kernel won't compile
make shell
cd /root/cs350-os161/os161-1.99/kern
bmake clean
make build-asst2Problem: Can't remember commands
make help- Use Makefile → Much faster than typing full commands
- Edit locally → os161-source/ syncs automatically
- Test often → Don't wait until the end
- Use GDB → Debug properly, not with printf
- Commit code → Save working versions
- Ask for help → Don't struggle alone
- Test on student.cs → Before final submission
| Task | Time |
|---|---|
| Initial setup | 30-40 min |
| Learn the system | 15 min |
| First test | 5 min |
| Per assignment | 40-120 min |
| Daily build/test cycle | 1-5 min |
- Run
make setup - Wait for build to complete
- Read INDEX.md
- Read QUICK_START.md
- Try
make build-asst0 && make run-kernel - Start your first assignment
- Success! 🎉
Forgot how to start?
make helpWant to know commands?
make helpNeed to edit code?
# On your machine (not in container)
nano os161-source/kern/main/main.cWant to build?
make build-asst2 # Replace 2 with your assignmentWant to test?
make run-kernelYou're all set! Start with make setup.
After that, check QUICK_START.md for daily workflow.
Good luck! 🚀