2020-11-10 16:02:44 +01:00
# ์ปดํ์ผ ๋๊ตฌ ์ค์น
์ด ํ์ด์ง๋ QMK ์ปดํ์ผ ํ๊ฒฝ์ ์ค์นํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช
ํฉ๋๋ค. ์ด ํ์ด์ง๋ AVR ํ๋ก์ธ์๋ค(์๋ฅผ ๋ค๋ฉด atmega32u4์ ๋น์ทํ)์ ์ํ ๊ฐ์ด๋๋ฅผ ์ ๊ณตํฉ๋๋ค
<!-- FIXME: We should have ARM instructions somewhere. -->
**๋
ธํธ:** ๋ง์ฝ ๋น์ ์ด ์ฒ์ ์์ํ๋ค๋ฉด [์
๋ฌธ์๋ฅผ ์ํ ๊ฐ์ด๋ ](newbs.md )ํ์ด์ง๋ฅผ ํ์ธํ์ธ์.
๊ณ์ํ๊ธฐ์ ์ ๋น์ ์ ์๋ธ๋ชจ๋(์ธ๋ถ๋ผ์ด๋ธ๋ฌ๋ฆฌ)์ด ์ต์ ์ธ์ง `make git-submodule` ์ ์ฌ์ฉํ์ฌ ํ์ธํ์ธ์.
## ๋ฆฌ๋
์ค
๋น์ ์ด ํญ์ ์ต์ ํ์ผ์ ๊ฐ์ง๊ณ ์๋์ง๋ `sudo util/qmk_install.sh` ์ ์ด์ฉํ์ฌ ๊ฐ๋จํ ํ์ธํ ์ ์์ต๋๋ค. ์ด ๋ช
๋ น์ด๋ ๋น์ ์ด ํ์ํ ๋ชจ๋ ์์ฑ๋ฌผ(dependencies)๋ฅผ ์ค์นํ ๊ฒ์
๋๋ค. **์ด ๋ช
๋ น์ด๋ `apt-get upgrade`๋ฅผ ์ฌ์ฉํฉ๋๋ค**
๋ํ ๋น์ ์ ์ง์ ํ์ํ ๊ฒ๋ค์ ์ค์นํ ์๋ ์์ต๋๋ค. ํ์ง๋ง ์ด ์๋ฃ๋ ํญ์ ์ต์ ์ ์๋ฃ์ ๊ฐ์ง๊ณ ์์ง ์์ต๋๋ค.
ํ์ฌ๋ก์จ ํ์ํ ๊ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ํ์ง๋ง ๋น์ ์ด ํ๋ ์์
์ ๋ฐ๋ผ ๋น์ ์ ๋ค์ ํจํค์ง๋ฅผ ๋ค ์ฐ์ง ์์ ์๋ ์์ต๋๋ค. ๋ํ ํ๊ฒฝ์ ๋ฐ๋ผ ๋ชจ๋ ๋ค์ ํจํค์ง๋ ๋ค๋ฅธ์ด๋ฆ์ผ๋ก ์กด์ฌํ๊ฑฐ๋, ์์ ์๋ ์์ต๋๋ค.
```
build-essential
gcc
unzip
wget
zip
gcc-avr
binutils-avr
avr-libc
dfu-programmer
dfu-util
gcc-arm-none-eabi
binutils-arm-none-eabi
libnewlib-arm-none-eabi
git
```
๋น์ ์ด ์ฌ์ฉํ๋ ํจํค์ง ๋งค๋์ ธ์์ ์ด๋ฌํ ๋ฐฉ๋ฒ์ผ๋ก ์ค์นํ์ญ์์.
๋ฐ๋น์ / ์ฐ๋ถํฌ ์์:
sudo apt-get update
sudo apt-get install gcc unzip wget zip gcc-avr binutils-avr avr-libc dfu-programmer dfu-util gcc-arm-none-eabi binutils-arm-none-eabi libnewlib-arm-none-eabi
ํ๋๋ผ / ๋ ๋ํ ์์:
sudo dnf install gcc unzip wget zip dfu-util dfu-programmer avr-gcc avr-libc binutils-avr32-linux-gnu arm-none-eabi-gcc-cs arm-none-eabi-binutils-cs arm-none-eabi-newlib
์์น / ๋งจ์๋ก(Manjaro) ์์:
pacman -S base-devel gcc unzip wget zip avr-gcc avr-binutils avr-libc dfu-util arm-none-eabi-gcc arm-none-eabi-binutils arm-none-eabi-newlib git dfu-programmer dfu-util
## ๋์ค (NIX)
๋ง์ฝ ๋น์ ์ด [NixOS ](https://nixos.org/ )๋ฅผ ์ฌ์ฉ์ค์ด๊ฑฐ๋ NIX๋ฅผ ๋ฆฌ๋
์ค ๋๋ ๋งฅ์์ ์ฌ์ฉ์ค์ด๋ผ๋ฉด `nix-shell` ๋ฅผ root ๋๋ ํ ๋ฆฌ์์ ์ฌ์ฉํ์ฌ ์ปดํ์ผ ํ๊ฒฝ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์ ์ปค๋งจ๋๋ AVR๊ณผ ARM ์ปดํ์ผ๋ฌ๋ฅผ ์ค์นํ ๊ฒ์
๋๋ค. ๋ง์ฝ ํ์ ์๋ค๋ฉด `avr` ๋๋ `arm` ์ ์ธ์์์ ํด์ ํ ์ ์์ต๋๋ค.
nix-shell --arg arm false
## ๋งฅ
2021-01-30 12:02:49 +01:00
๋น์ ์ด ํ๋ธ๋ฃจ([homebrew](https://brew.sh/))๋ฅผ ์ฌ์ฉํ๋ค๋ฉด, ๋ค์์ ์
๋ ฅํ์ธ์.
2020-11-10 16:02:44 +01:00
brew tap osx-cross/avr
brew tap PX4/homebrew-px4
brew update
brew install avr-gcc@7
brew link --force avr-gcc@7
brew install dfu-programmer
brew install dfu-util
brew install gcc-arm-none-eabi
brew install avrdude
2021-01-30 12:02:49 +01:00
์ด ๋ฐฉ๋ฒ์ ๊ฐ์ฅ ์ถ์ฒํฉ๋๋ค. ๋ง์ฝ ํ๋ธ๋ฃจ๊ฐ ์๋ค๋ฉด ์ปค๋งจ๋๋ผ์ธ ํ๊ฒฝ์์ ๋งค์ฐ ํธํ [Homebrew ](https://brew.sh/ )๋ฅผ ๋ค์ด๋ฐ๋ ๊ฒ์ ์ถ์ฒํฉ๋๋ค. ์ฐธ๊ณ ๋ก `avr-gcc@7` ๋ฅผ ์ค์นํ๋ ์ค `make` ๊ณผ `make install` ๋ ๋๊ฐ 20๋ถ ๋๊ฒ ๊ฑธ๋ฆฌ๊ณ CPU ์ฌ์ฉ๋์ด ๋์์ง๋๋ค.
2020-11-10 16:02:44 +01:00
## msys2๋ฅผ ์ฌ์ฉํ๋ ์๋์ฐ (์ถ์ฒ)
2021-01-30 12:02:49 +01:00
์๋์ฐ ๋น์คํ ๋ถํฐ ์ต์ ๋ฒ์ ผ๊น์ง ๊ฐ์ฅ์ถ์ฒ๋๋ ํ๊ฒฝ์ [msys2 ](https://www.msys2.org )๋ฅผ ์ด์ฉํ๋ ๊ฒ์
๋๋ค. (์๋์ฐ 7๊ณผ ์๋์ฐ 10์์ ๋ชจ๋ ํ
์คํธ๋์์)
2020-11-10 16:02:44 +01:00
2021-01-30 12:02:49 +01:00
* ์ด ์ฌ์ดํธ์ ์๋ ์ค๋ช
์ ์ด์ฉํด msys2๋ฅผ ์ค์นํ์ธ์: https://www.msys2.org
2020-11-10 16:02:44 +01:00
* ``MSYS2 MingGW 64-bit`` ๋ฅผ ์ฌ์ธ์
* QMKํด๋๋ก ์ด๋ํ์ธ์. c๋๋ผ์ด๋ธ ๋ฃจํธ์ ์๋๊ฒฝ์ฐ:
* `$ cd /c/qmk_firmware`
* `util/qmk_install.sh` ์ ์คํ์ํค๊ณ ๋์ค๋๋ฐ์ ๋ฐ๋ผํ์ธ์
### ํฌ๋ฆฌ์์ดํฐ ์
๋ฐ์ดํธ
๋ง์ฝ ๋น์ ์ ์๋์ฐ 10์ด ํฌ๋ฆฌ์์ดํฐ ์
๋ฐ์ดํธ ๋ฒ์ ๋๋ ๋ ๋์ ๋ฒ์ ์ด๋ผ๋ฉด ๋ฐ๋ก ์ปดํ์ผ๊ณผ ํ๋ก๊ทธ๋จ ์
๋ก๋(flashing)๋ฅผ ํ ์ ์์ต๋๋ค. ํฌ๋ฆฌ์์ดํฐ ์
๋ฐ์ดํธ ์ ๋ฒ์ ์ด๋ผ๋ฉด ์ปดํ์ผ๋ง ๊ฐ๋ฅํฉ๋๋ค. ๋ง์ฝ ๋น์ ์ด ์ ๋ชจ๋ฅด๊ฒ ๊ฑฐ๋ ์
๋ฐ์ดํธ๋ ๋ฒ์ ์ด ์๋๋ผ๋ฉด [์ด ๋งํฌ ](https://support.microsoft.com/en-us/instantanswers/d4efb316-79f0-1aa1-9ef3-dcada78f3fa0/get-the-windows-10-creators-update )๋ฅผ ํ์ธํด ๋ณด์ญ์์ค.
### ๋ฆฌ๋
์ค์ฉ ์๋์ฐ ํ์ ์์คํ
์ฌ์ฉ (Windows10 Subsystem for Linux)
2021-01-30 12:02:49 +01:00
ํฌ๋ฆฌ์์ดํฐ ์
๋ฐ์ดํธ์ ์ถ๊ฐ๋ก ๋ง์ฝ ๋น์ ์ด ๋ฆฌ๋
์ค์ฉ ์๋์ฐ ํ์ ์์คํ
์ด ํ์ํ๋ค๋ฉด ์ด ๋งํฌ์์ ๋ค์ด๋ฐ์ผ์ญ์์ค: [์ค๋ช
](https://www.howtogeek.com/249966/how-to-install-and-use-the-linux-bash-shell-on-windows-10/ )
2020-11-10 16:02:44 +01:00
๋ง์ฝ ๋น์ ์ด ์ด๋ฏธ ๋ฆฌ๋
์ค์ฉ ์๋์ฐ ํ์ ์์คํ
์ Anniversary์
๋ฐ์ดํธ๋ฅผ ํตํด ๋ฐ์๋ค๋ฉด ์ด ๋งํฌ์์ 16.04LTS๋ก ์
๋ฐ์ดํธ ํ๋๊ฒ์ ์ถ์ฒํฉ๋๋ค. ์๋ํ๋ฉด ์
๋ฐ์ดํธ ์์ด๋ ์ผ๋ถํค๋ณด๋๊ฐ 14.04LTS์ ํฌํจ๋์๋ ๋๊ตฌ๋ค๋ก ์ปดํ์ผ๋์ง ์์์ ์๊ธฐ๋๋ฌธ์
๋๋ค : [WSL ์
๋ฐ์ดํธ ](https://betanews.com/2017/04/14/upgrade-windows-subsystem-for-linux/ )
### Git
๋ง์ฝ ๋น์ ์ด ์ด๋ฏธ ํ์ผ์ ๋ก์ปฌ๋ก ๋ณต์ ํ์๋ค๋ฉด ์ด ์น์
์ ๋ฌด์ํ์ญ์์.
๋น์ ์ ํ์ผ์ ๊ธฐ๋ณธ์ ์ธ git์ ์ฌ์ฉํ์ฌ ๋ก์ปฌ๋ก ๋ณต์ ํด์ผ ํฉ๋๋ค. **์ฃผ์, WSL Git์ ์ฌ์ฉํ๋ฉด ์๋ฉ๋๋ค** [Git ](https://git-scm.com/download/win ) ์ด ๋งํฌ์์ git์ ๋ค์ด๋ฐ๊ณ ์ค์นํ์ญ์์ค.
๊ทธ๋ฆฌ๊ณ [๊ธฐ๋ณธ์ค์ ](https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup ), ์ ์ ๋ค์๊ณผ ์ด๋ฉ์ผ์ ์ค์ ํ๋ ๊ฒ์ ๋ง์ฝ ๋น์ ์ด ์จ๋ผ์ธ์ ๊ธฐ์ฌํ ๊ณํ์ด๋ผ๋ฉด ๋งค์ฐ ์ค์ํฉ๋๋ค.
Git์ ์ค์น๊ฐ ์๋ฃ๋์๋ค๋ฉด Git Bash์ปค๋งจ๋์ ์ด๊ณ ๋น์ ์ ๋ณต์ QMKํ์ผ์ด ์๋ ์์น๋ก ์ด๋ํ๊ณ `git clone --recurse-submodules https://github.com/qmk/qmk_firmware` ๋ฅผ ์คํ ์ํค์ญ๋์ค. ์ด ์ปค๋งจ๋๋ ์๋ก์ด `qmk_firmware` ํด๋๋ฅผ ์ด๋ฏธ ์กด์ฌํ๋ ๊ฒ์ ํ์ ํด๋์ค์ ์ผ๋ก ์์ฑํ ๊ฒ์
๋๋ค.
### ๋๊ตฌ(Toolchain) ์ค์
๊ธฐ๋ณธ์ ์ผ๋ก ๋๊ตฌ์ค์ ์ ๋ฆฌ๋
์ค์ฉ ์๋์ฐ ํ์ ์์คํ
์ด ์ค์น๋ ๋ ์๋์ผ๋ก ์ค์ ๋ฉ๋๋ค. ํ์ง๋ง ์๋์ ์ผ๋ก ํ๊ณ ์ถ๋ค๋ฉด ์ฌ๊ธฐ ์ค๋ช
์ด ์์ต๋๋ค. (If you want to do everything manually, there are no other instructions than the scripts themselves, but you can always open issues and ask for more information. )
1. "Bash On Ubuntu On Windows" ์ ์คํ์ํค์ญ์์ค.
2. ๋น์ ์ด `qmk_firmware` ๋ฅผ ๋ณต์ ํ ์์น๋ก ๊ฐ์ญ์์ค. WSL(๋ฆฌ๋
์ค์ฉ ์๋์ฐ ํ์ ์์คํ
์ฌ์ฉ)์์ `/mnt/` ๋ก ์์๋๋ ํจ์ค๋ฅผ ์ฐพ์ผ์ญ์์ค. ์ฆ ๋น์ ์ ๋ค์๊ณผ ๊ฐ์ ํ์์ผ๋ก ์
๋ ฅํด์ผ ํฉ๋๋ค. `cd /mnt/c/path/to/qmk_firmware` (Note that the paths start with `/mnt/` in the WSL, so you have to write for example `cd /mnt/c/path/to/qmk_firmware` .)
3. `util/wsl_install.sh` ๋ฅผ ์คํ์ํค๊ณ ํ๋ฉด์ ๋์ค๋ ์ง์๋ฅผ ๋ฐ๋ฅด์ญ๋์ค.
4. Bash command window๋ฅผ ์ฌ์คํ ์ํค์ญ์์ค.
5. ์ด๋ก์จ ๋น์ ์ ์ปดํ์ผ๊ณผ ํ๋ก๊ทธ๋จ ์
๋ก๋(flashing)์ ์ํ ์ค๋น๊ฐ ๋ชจ๋ ๋๋ฌ์ต๋๋ค.
### ์ค์ํ ์ฐธ๊ณ ์ฌํญ
*`util/wsl_install.sh` ๋ช
๋ น์ด๋ฅผ ๋ค์ ์คํ์์ผ ์ต์ ์
๋ฐ์ดํธ๋ฅผ ๋ค์ด๋ฐ์ ์ ์์ต๋๋ค.
* QMK ํด๋์ ์์น๋ ์๋์ฐ ํ์ผ์์คํ
์ ๊ธฐ๋ฐ์ผ๋ก ํด์ผ ๋ฉ๋๋ค. WSL๋ ์ธ๋ถ์คํํ์ผ๋ฅผ ์๋ ์ํฌ์ ์๊ธฐ ๋๋ฌธ์ด์ฃ .
* WSL์ Git์ ์๋์ฐ์ฉ Git๊ณผ **ํธํ๋์ง ์์ต๋๋ค**
* ํ์ผ์ ์์ ํ๋ ๊ฒ์ WSL์๊ณผ ๋ฐ์์ ๋ชจ๋ ๊ฐ๋ฅํฉ๋๋ค ํ์ง๋ง ๋ง์ฝ .makefile ํน์ .sh๋ฅผ ์์ ํ๋ค๋ฉด ์ ๋์ค ๋ผ์ธ์๋ฉ(Unix line endings)์ ์ง์ํ๋ ์๋ํฐ๋ฅผ ์ฌ์ฉํ๋์ง ํ์ธํ์ญ์ด์ค. ๊ทธ๋ ์ง ์๋ค๋ฉด ์ปดํ์ผ์ด ๋์ง์์ ์๋ ์์ต๋๋ค.
## ์๋์ฐ (๋น์คํ ํน์ ๋ ์ต์ ) (๋น์ถ์ฒ)
์ด ์น์
์ ์๋์ฐ ๋น์คํ ํน์ ๋ ์ต์ ๋ฒ์ ผ์ ์ํ ์ค๋๋ ์ค๋ช
์
๋๋ค. [MSYS2 ](#windows-with-msys2-recommended )๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋ ์ถ์ฒํฉ๋๋ค.
1. WinAVR์ ์ค์นํ์๋ค๋ฉด ๋จผ์ ์ญ์ ํ์ญ์์ค.
2. [MHV AVR Tools ](https://infernoembedded.com/sites/default/files/project/MHV_AVR_Tools_20131101.exe )์ ์ค์นํ์ญ์์ค. (Disable smatch, but **be sure to leave the option to add the tools to the PATH checked** )
3. ๋ง์ฝ ๋น์ ์ด Infinity์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ํค๋ณด๋์ ํ๋ก๊ทธ๋จ ์
๋ก๋๋ฅผ(flashing) ํ ๊ฑฐ๋ผ๋ฉด dfu-util์ ์ค์นํด์ผ ํฉ๋๋ค, [Input Club ](https://github.com/kiibohd/controller/wiki/Loading-DFU-Firmware ) ๋ฅผ ์ฐธ๊ณ ํ์ญ์์ค.
4. [MinGW ](https://sourceforge.net/projects/mingw/files/Installer/mingw-get-setup.exe/download )๋ฅผ ์ค์นํ์ญ์์ค. ์ค์น์ค ์๋์ฐํ๋ฉด์์ GUI ์ถ๊ฐ ์ค์น ์ต์
์ ํด์ฌํ์ญ๋์ค. **๊ธฐ๋ณธ ์ค์น ์์น๋ฅผ ๋ฐ๊พธ์ง ๋ง์ญ์์ค.** ์ด ๋ช
๋ น์ด๋ ๊ธฐ๋ณธ์์น๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๊ณ ์์ต๋๋ค.
5. ๋ ํ์งํ ๋ฆฌ๋ฅผ ๋ณต์ ํ์ญ์์ค. [์ด ๋งํฌ๋ก ์์ถํ์ผ์ ๋ฐ๊ณ ์์ถํด์ ํ์ญ์์ค. ](https://github.com/qmk/qmk_firmware/archive/master.zip ) ์๋์ฐ ํ์๊ธฐ์์ ๋ค์ด๋ฐ์ ํ์ผ์ ์ฌ์ญ์์ค.
6. `\util` ํด๋๋ฅผ ์ฌ์ญ์์ค.
7. `1-setup-path-win` .batํ์ผ์ ๋๋ธํด๋ฆญํด์ ์คํ์ํค์์ค. ์ ์ ๊ณ์ ์ค์ ๋ณ๊ฒฝ์ ํ์ฉํด์ผ๋ ์๋ ์์ต๋๋ค. ์คํ์ด์ค๋ฐ๋ฅผ ๋๋ฌ ์ค์น๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋์๋ค๋ ๋ฉ์ธ์ง๋ฅผ ๋ซ์ ์ ์์ต๋๋ค.
8. `2-setup-environment-win` .batํ์ผ์ ์ฐํด๋ฆญํด์ '๊ด๋ฆฌ์ ๊ถํ์ผ๋ก ์คํ'์ผ๋ก ์คํ์ํค์ญ์์ค. ์ด ์์
์ ๊ฝค ์ค๋ ๊ฑธ๋ฆด ์๋ ์์ต๋๋ค. ๋ํ ๋๋ผ์ด๋ฒ ์ค์ ์ ์น์ธํด์ผ ๋ ์๋ ์์ต๋๋ค. ํ์ง๋ง ์ด ๋ชจ๋ ๊ฒ์ด ๋๋๋ฉด ๋น์ ์ ์์คํ
์ ์ค์ ์ด ๋ชจ๋ ๋๋ฌ์ต๋๋ค.
๋ง์ฝ ์ด ์์
์ ํ๋๋ฐ์ ๋ฌธ์ ๊ฐ ์์ด ๋์๋ฐ๊ณ ์ถ๋ค๋ฉด *Win_Check_Output.txt*์ ์์ฑํ๋ ๊ฒ์ด ๋์์ด ๋ ๊ฒ์
๋๋ค. ์ด ํ์ผ์ `Win_Check.bat` ์ `\util` ํด๋์์ ์คํ์์ผ ์์ฑํ ์ ์์ต๋๋ค.
## ๋์ปค(Docker)
๋ง์ฝ ์์์
๋ค์ด ๋น์ ์๊ฒ ์ข ์ด๋ ต๊ฒ ๋๊ปด์ก๋ค๋ฉด ๋์ปค(Docker)๊ฐ ๋น์ ์ ์ํ ์ต์ ์ผ ์๋ ์์ต๋๋ค(์์ญ). [Docker CE ](https://docs.docker.com/install/#supported-platforms )๋ฅผ ์ค์นํ๋ค ์๋ ์ปค๋งจ๋๋ฅผ `qmk_firmware` ๋๋ํ ๋ฆฌ์์ ์คํ์์ผ ํค๋ณด๋ ๋๋ ํค๋งต์ ์์ฑ์ํต๋๋ค.
```bash
util/docker_build.sh keyboard:keymap
# ์: util/docker_build.sh ergodox_ez:steno
```
์ด ์ปค๋งจ๋๋ ์ํ๋ ํค๋ณด๋ ๋๋ ํค๋งต์ ์ปดํ์ผํ๊ณ `.hex` ๋๋ `.bin` ํ์ผ์ ํ๋ก๊ทธ๋จ ์
๋ก๋๋ฅผ(flashing) ์ํด QMK๋๋ํ ๋ฆฌ์ ์์ฑํ ๊ฒ์
๋๋ค. ๋ง์ฝ `:keymap` ์ด ์๋ต๋๋ค๋ฉด `default` ์ด ๊ธฐ๋ณธ์๋ก ์ฌ์ฉ๋ฉ๋๋ค. ์ฐธ๊ณ ๋ก ์ฌ๊ธฐ์ ์ฌ์ฉ๋๋ ์ธ์๋ `make` ์ปค๋งจ๋๋ฅผ ์ฌ์ฉํ์ฌ ์ปดํ์ผํ ๋์ ๋์ผํฉ๋๋ค.
๋ํ ์คํฌ๋ฆฝํธ๋ฅผ ๊ทธ๋ฅ ์๋ฌด ์ธ์ ์์ด๋ ์ฌ์ฉ๊ฐ๋ฅํฉ๋๋ค. ๊ทธ๋ ๊ฒ ๋๋ค๋ฉด ํ๋ก๊ทธ๋จ์ ํ๋์ฉ ์๋์ผ๋ก ์ธ์์
๋ ฅ์ ์๊ตฌ ํ ๊ฒ์
๋๋ค. ์ด์ฉ๋ฉด ์ด๋ฐฉ๋ฒ์ด ๋ ์ฌ์ธ ์๋ ์์ต๋๋ค.
```bash
util/docker_build.sh
# ์ธ์์ ์
๋ ฅ๋ฐ์ต๋๋ค.(์๋ฌด๊ฒ๋ ์ฐ์ง ์๊ณ ๋๋๋๋ฉด ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ค์ ๋ฉ๋๋ค)
```
๋ค์๊ณผ ๊ฐ์ด `target` ๋ฅผ ์ฌ์ฉํ์ฌ ์ปดํ์ผ๊ณผ ํ๋ก๊ทธ๋จ ์
๋ก๋(flashing)์ ๋์์ ํ ์๋ ์์ต๋๋ค.
```bash
util/docker_build.sh keyboard:keymap:target
# ์: util/docker_build.sh planck/rev6:default:dfu-util
```
๋ง์ฝ ๋น์์ด ๋ฆฌ๋
์ค๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ์ด ์ปค๋งจ๋๋ค์ ์ถ๊ฐ ์ค์ ์์ด ๋ฐ๋ก ์๋ํ ๊ฒ์
๋๋ค. ํ์ง๋ง ์๋์ฐ ๋๋ ๋งฅ ํ๊ฒฝ์์๋ [Docker Machine ](http://gw.tnode.com/docker/docker-machine-with-usb-support-on-windows-macos/ )๋ฅผ ์ฌ์ฉํ์ฌ์ผ ์ด ์ปค๋งจ๋๋ค์ ์ฌ์ฉ๊ฐ๋ฅํฉ๋๋ค. Docker Machine์ค์ ์ ๊ฝค ์ง๋ฃจํ๊ณ ์ง์ฆ๋จ์ผ๋ก ์ถ์ฒํ์ง ์๊ณ [QMK Toolbox ](https://github.com/qmk/qmk_toolbox )๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ถ์ฒํฉ๋๋ค.
!> ์๋์ฐ์์ ๋
์ปค๋ [Hyper-V ](https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v )์ ํ์ฑํ ์ค์ ํ์ฌ์ผ ์ฌ์ฉ๊ฐ๋ฅํฉ๋๋ค. ์ฆ, ๋์ปค๋ Hyper-V๋ฅผ ์ง์ํ์ง ์๋ ์๋์ฐ 7, ์๋์ฐ 8, ๊ทธ๋ฆฌ๊ณ **์๋์ฐ 10 ํ**๊ณผ ๊ฐ์ ์๋์ฐ ๋ฒ์ ์์ ์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
## Vagrant
๋ง์ฝ ์ปด์จ์ด๋ฅผ ์ฌ์ฉํ๋๋ฐ ๋ฌธ์ ๊ฐ ์๋ค๋ฉด Vagrant๋ผ๋ ์ด๋ฆ์ ํด์ ์ฌ์ฉํด ๋ณผ ์ ์์ต๋๋ค. ์ด ํด์ ๊ฐ์ํ๊ฒฝ์ ์ธํ
ํด์ค๊ณผ ๋์์ ์ปด์จ์ด๋ฅผ ์ฌ์ฉํ๋๋ฐ์ ํ์ํ ๋ชจ๋ ์ค์ ์ ํด์ค ๊ฒ์
๋๋ค. OLKB๋ ๊ฐ์ํ๊ฒฝ์ ํ์ผ์ ํธ์คํ
ํ์ง ์์ต๋๋ค. [Vagrant ๊ฐ์ด๋ ](getting_started_vagrant.md )์์ ๋ ๋ง์ ์ ๋ณด๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.