์ด ๋ฌธ์๋ Windows์ macOS ์ฌ์ฉ์๊ฐ Docker์ VSCode DevContainer ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ Pintos OS ํ๋ก์ ํธ๋ฅผ ๋น ๋ฅด๊ฒ ๊ตฌ์ถํ ์ ์๋๋ก ๋์์ค๋๋ค.
[์ฃผ์]
- ubunbu:22.04 ๋ฒ์ ์ ์ถฉ๋ถํ ํ ์คํธ์ ๊ฒ์ฆ์ด ๋์ง ์์์ต๋๋ค. ์ด ์ ์ ์ฃผ์ํด์ ์ฌ์ฉํ์๊ธฐ ๋ฐ๋๋๋ค.
[์ฐธ๊ณ ]
- pintos ๋์ปค ํ๊ฒฝ์
64๋นํธ ๊ธฐ๋ฐ X86-64๊ธฐ๋ฐ์ubuntu:22.04๋ฒ์ ์ ์ฌ์ฉํฉ๋๋ค.- kaist-pintos๋ ์ค๋ฆฌ์ง๋ pintos์ ๋ฌ๋ฆฌ 64๋นํธ ํ๊ฒฝ์ ์ง์ํฉ๋๋ค.
- ์ด๋ฒ ๋์ปค ํ๊ฒฝ์ ubuntu 22.04๋ฅผ ์ง์ํ์ฌ vscode์ ์ต์ ๋ฒ์ ์์ ์๊ฒฉ ์ฐ๊ฒฐ์ด ์๋๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์์ต๋๋ค.
- pintos ๋์ปค ํ๊ฒฝ์ kaist-pintos์์ ์ถ์ฒํ๋ qemu ์๋ฎฌ๋ ์ดํฐ๋ฅผ ์ค์นํ๊ณ ์ฌ์ฉํฉ๋๋ค.
- pintos ๋์ปค ํ๊ฒฝ์ 9์ฃผ์ฐจ๋ถํฐ 13์ฃผ์ฐจ๊น์ง ๊ฐ์ ํ๊ฒฝ์ ์ฌ์ฉํฉ๋๋ค. ์ด ๊ธฐ๊ฐ๋์ ๋ณ๋์ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ ๊ณตํ์ง ์์ต๋๋ค.
- ๊ธฐ์กด ๋์ปค ํ๊ฒฝ๊ณผ ๋ฌ๋ฆฌ
vscode์ ํตํฉ๋ ๋๋ฒ๊น ํ๊ฒฝ(F5๋ก ์์ํ๋)์ ์ ๊ณตํ์ง ์์ต๋๋ค. ๋๋ฒ๊น ์ด ํ์ํ ๊ฒฝ์ฐgdb๋ฅผ ์ฌ์ฉํ์ธ์. - vscode์์ ํฐ๋ฏธ๋์ ์คํํ๋ฉด ์๋์ผ๋ก
source /workspaces/pintos_22.04_lab_docker/pintos/activate๋ฅผ ์คํํฉ๋๋ค.
Docker๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๋ค ์ปดํจํฐ์์๋ ๋์ผํ ํ๊ฒฝ์์ ์คํํ ์ ์๊ฒ ๋์์ฃผ๋ ๊ฐ์ํ ํ๋ซํผ์ ๋๋ค.
Docker๋ ๋ค์ ๊ตฌ์ฑ์์๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค:
- Docker Engine: ์ปจํ ์ด๋๋ฅผ ์คํํ๋ ํต์ฌ ์๋น์ค
- Docker Image: ์ปจํ ์ด๋ ์์ฑ์ ์ฌ์ฉ๋๋ ํ ํ๋ฆฟ (๋ ์ํผ ๐)
- Docker Container: ์ด๋ฏธ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋ ์ค์ ์คํ ํ๊ฒฝ (์๋ฆฌ ๐)
| ๊ตฌ๋ถ | EC2 ๊ฐ์ VM | Docker ์ปจํ ์ด๋ |
|---|---|---|
| ์คํ ๋จ์ | OS ํฌํจ ์ ์ฒด | ์ ํ๋ฆฌ์ผ์ด์ ๋จ์ |
| ์คํ ์๋ | ๋๋ฆผ (์์ญ ์ด ์ด์) | ๋งค์ฐ ๋น ๋ฆ (๊ฑฐ์ ์ฆ์) |
| ๋ฆฌ์์ค ์ฌ์ฉ | ๋ฌด๊ฑฐ์ | ๊ฐ๋ฒผ์ |
DevContainer๋ VSCode์์ Docker ์ปจํ ์ด๋๋ฅผ ๊ฐ๋ฐ ํ๊ฒฝ์ฒ๋ผ ์ฌ์ฉํ ์ ์๊ฒ ํด์ฃผ๋ ๊ธฐ๋ฅ์ ๋๋ค.
- ์ฝ๋๋ฅผ ์คํํ๊ฑฐ๋ ๋๋ฒ๊น ํ ๋ ์ปจํ ์ด๋ ๋ด๋ถ ํ๊ฒฝ์์ ๋์
- ํ์ ๊ฐ ํ๊ฒฝ ์ฐจ์ด ์์ด ๋์ผํ ๊ฐ๋ฐ ํ๊ฒฝ ๊ตฌ์ฑ ๊ฐ๋ฅ
.devcontainerํด๋์ ์ ์๋ ์ค์ ์ VSCode๊ฐ ์ฝ์ด ์๋ ๊ตฌ์ฑ
-
Docker ๊ณต์ ์ฌ์ดํธ์์ ์ค์น ํ์ผ ๋ค์ด๋ก๋:
๐ https://www.docker.com/products/docker-desktop -
์ค์น ํ Docker Desktop ์คํ
- Windows: Docker ์์ด์ฝ์ด ํธ๋ ์ด์ ๋ ์ผ ํจ
- macOS: ์๋จ ๋ฉ๋ด๋ฐ์ Docker ์์ด์ฝ ํ์ธ
ํฐ๋ฏธ๋(CMD, PowerShell, zsh ๋ฑ)์์ ์๋ ๋ช ๋ น์ด๋ก ํ๋ก์ ํธ ํด๋๋ง ๋ด๋ ค๋ฐ์ต๋๋ค:
git clone --depth=1 https://github.com/krafton-jungle/pintos_22.04_lab_docker.git
--depth=1์ต์ ์ git commit ํ์คํ ๋ฆฌ๋ฅผ ์๋ตํ๊ณ ์ต์ ํ์ผ๋ง ๊ฐ์ ธ์ต๋๋ค.
pintos_22.04_lab_docker/
โโโ .devcontainer/
โ โโโ devcontainer.json # VSCode์์ ์ปจํ
์ด๋ ํ๊ฒฝ ์ค์
โ โโโ Dockerfile # pintos ๊ฐ๋ฐ ํ๊ฒฝ ๋์ปค ์ด๋ฏธ์ง ์ ์
โ
โโโ pintos
โ โโโ threads # 9์ฃผ์ฐจ threads ํ๋ก์ ํธ ํด๋
โ โโโ userprog # 10-11์ฃผ์ฐจ user program ํ๋ก์ ํธ ํด๋
โ โโโ vm # 12-13์ฃผ์ฐจ virtual memory ํ๋ก์ ํธ ํด๋
โ
โโโ README.md # ํ์ฌ ๋ฌธ์
- VSCode๋ฅผ ์คํ
ํ์ผ โ ํด๋ ์ด๊ธฐ๋ก ๋ฐฉ๊ธ ํด๋ก ํpintos_22.04_lab_dockerํด๋๋ฅผ ์ ํ
- VSCode์์
Ctrl+Shift+P(Windows/Linux) ๋๋Cmd+Shift+P(macOS)๋ฅผ ๋๋ฆ ๋๋ค. - ๋ช
๋ น์ด ํ๋ ํธ์์
Dev Containers: Reopen in Container๋ฅผ ์ ํํฉ๋๋ค. - ์ดํ ์ปจํ ์ด๋๊ฐ ์๋์ผ๋ก ์คํ๋๊ณ ๋น๋๋ฉ๋๋ค. ์ฒ์ ์ปจํ ์ด๋๋ฅผ ์ด๋ฉด ๋น๋ํ๋ ์๊ฐ์ด ์ค๋๊ฑธ๋ฆด ์ ์์ต๋๋ค. ๋น๋ ํ, ํ๋ก์ ํธ๊ฐ ์ปจํ ์ด๋ ์์์ ์คํ๋จ.
pintos ๋ฉ์์๋ vscode๊ธฐ๋ฐ์ ๋๋ฒ๊น ์ ์ง์ํ์ง ์์ต๋๋ค.
๊ธ์ฃผ ํ๋ก์ ํธ๋ฅผ ๊ฐ์ธ Git ๋ฆฌํฌ์ ๊ฐ์ ๋ค๋ฅธ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ ๋ก๋ํ๋ ค๋ฉด, ๊ธฐ์กด Git ์ฐ๊ฒฐ์ ์ ๊ฑฐํ๊ณ ์๋กญ๊ฒ ์ด๊ธฐํํด์ผ ํฉ๋๋ค.
์๋ ๋ช ๋ น์ด๋ฅผ ์์๋๋ก ์คํํ์ธ์:
rm -rf .git git init git remote add origin https://github.com/myusername/my-new-repo.git git add . git commit -m "Clean start" git push -u origin main
rm -rf .git: ๊ธฐ์กด Git ๊ธฐ๋ก๊ณผ ์ฐ๊ฒฐ์ ์์ ํ ์ญ์ ํฉ๋๋ค.git init: ํ์ฌ ํด๋๋ฅผ ์๋ก์ด Git ๋ฆฌํฌ์งํ ๋ฆฌ๋ก ์ด๊ธฐํํฉ๋๋ค.git remote add origin ...: ์๋ก์ด ๋ฆฌํฌ์งํ ๋ฆฌ ์ฃผ์๋ฅผ origin์ผ๋ก ๋ฑ๋กํฉ๋๋ค.git add .๋ฐgit commit: ๋ชจ๋ ํ์ผ์ ์ปค๋ฐํฉ๋๋ค.git push: ์๋ก์ด ๋ฆฌํฌ์ ์ต์ด ์ ๋ก๋(Push)ํฉ๋๋ค.
์ด ๊ณผ์ ์ ๊ฑฐ์น๋ฉด ๊ธฐ์กด ๋ฆฌํฌ์์ ์ฐ๊ฒฐ์ ์์ ํ ์ ๊ฑฐ๋๊ณ , ์๋ก์ด ๋ ๋ฆฝ์ ์ธ ํ๋ก์ ํธ๋ก ๊ด๋ฆฌํ ์ ์์ต๋๋ค.