You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

156 lines
12 KiB

  1. # ์ปดํŒŒ์ผ ๋„๊ตฌ ์„ค์น˜
  2. ์ด ํŽ˜์ด์ง€๋Š” QMK ์ปดํŒŒ์ผ ํ™˜๊ฒฝ์„ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ด ํŽ˜์ด์ง€๋Š” AVR ํ”„๋กœ์„ธ์„œ๋“ค(์˜ˆ๋ฅผ ๋“ค๋ฉด atmega32u4์™€ ๋น„์Šทํ•œ)์„ ์œ„ํ•œ ๊ฐ€์ด๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค
  3. <!-- FIXME: We should have ARM instructions somewhere. -->
  4. **๋…ธํŠธ:** ๋งŒ์•ฝ ๋‹น์‹ ์ด ์ฒ˜์Œ ์‹œ์ž‘ํ•œ๋‹ค๋ฉด [์ž…๋ฌธ์ž๋ฅผ ์œ„ํ•œ ๊ฐ€์ด๋“œ](newbs.md)ํŽ˜์ด์ง€๋ฅผ ํ™•์ธํ•˜์„ธ์š”.
  5. ๊ณ„์†ํ•˜๊ธฐ์ „์— ๋‹น์‹ ์˜ ์„œ๋ธŒ๋ชจ๋“ˆ(์™ธ๋ถ€๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)์ด ์ตœ์‹ ์ธ์ง€ `make git-submodule`์„ ์‚ฌ์šฉํ•˜์—ฌ ํ™•์ธํ•˜์„ธ์š”.
  6. ## ๋ฆฌ๋ˆ…์Šค
  7. ๋‹น์‹ ์ด ํ•ญ์ƒ ์ตœ์‹  ํŒŒ์ผ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€๋Š” `sudo util/qmk_install.sh`์„ ์ด์šฉํ•˜์—ฌ ๊ฐ„๋‹จํžˆ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ช…๋ น์–ด๋Š” ๋‹น์‹ ์ด ํ•„์š”ํ•œ ๋ชจ๋“  ์†์„ฑ๋ฌผ(dependencies)๋ฅผ ์„ค์น˜ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. **์ด ๋ช…๋ น์–ด๋Š” `apt-get upgrade`๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค**
  8. ๋˜ํ•œ ๋‹น์‹ ์˜ ์ง์ ‘ ํ•„์š”ํ•œ ๊ฒƒ๋“ค์„ ์„ค์น˜ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ์ž๋ฃŒ๋Š” ํ•ญ์ƒ ์ตœ์‹ ์˜ ์ž๋ฃŒ์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  9. ํ˜„์žฌ๋กœ์จ ํ•„์š”ํ•œ ๊ฒƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‹น์‹ ์ด ํ•˜๋Š” ์ž‘์—…์— ๋”ฐ๋ผ ๋‹น์‹ ์€ ๋‹ค์Œ ํŒจํ‚ค์ง€๋ฅผ ๋‹ค ์“ฐ์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ๋ชจ๋“  ๋‹ค์Œ ํŒจํ‚ค์ง€๋Š” ๋‹ค๋ฅธ์ด๋ฆ„์œผ๋กœ ์กด์žฌํ•˜๊ฑฐ๋‚˜, ์—†์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
  10. ```
  11. build-essential
  12. gcc
  13. unzip
  14. wget
  15. zip
  16. gcc-avr
  17. binutils-avr
  18. avr-libc
  19. dfu-programmer
  20. dfu-util
  21. gcc-arm-none-eabi
  22. binutils-arm-none-eabi
  23. libnewlib-arm-none-eabi
  24. git
  25. ```
  26. ๋‹น์‹ ์ด ์‚ฌ์šฉํ•˜๋Š” ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ ธ์—์„œ ์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์„ค์น˜ํ•˜์‹ญ์‹œ์š”.
  27. ๋ฐ๋น„์•ˆ / ์šฐ๋ถ„ํˆฌ ์˜ˆ์‹œ:
  28. sudo apt-get update
  29. 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
  30. ํŽ˜๋„๋ผ / ๋ ˆ๋“œํ–‡ ์˜ˆ์‹œ:
  31. 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
  32. ์•„์น˜ / ๋งจ์ž๋กœ(Manjaro) ์˜ˆ์‹œ:
  33. 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
  34. ## ๋‹‰์Šค (NIX)
  35. ๋งŒ์•ฝ ๋‹น์‹ ์ด [NixOS](https://nixos.org/)๋ฅผ ์‚ฌ์šฉ์ค‘์ด๊ฑฐ๋‚˜ NIX๋ฅผ ๋ฆฌ๋ˆ…์Šค ๋˜๋Š” ๋งฅ์—์„œ ์‚ฌ์šฉ์ค‘์ด๋ผ๋ฉด `nix-shell`๋ฅผ root ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํŒŒ์ผ ํ™˜๊ฒฝ์˜ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  36. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹ค์Œ ์ปค๋งจ๋“œ๋Š” AVR๊ณผ ARM ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์„ค์น˜ํ• ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ ํ•„์š” ์—†๋‹ค๋ฉด `avr` ๋˜๋Š” `arm`์„ ์ธ์ˆ˜์—์„œ ํ•ด์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  37. nix-shell --arg arm false
  38. ## ๋งฅ
  39. ๋‹น์‹ ์ด ํ™ˆ๋ธŒ๋ฃจ([homebrew](https://brew.sh/))๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด, ๋‹ค์Œ์„ ์ž…๋ ฅํ•˜์„ธ์š”.
  40. brew tap osx-cross/avr
  41. brew tap PX4/homebrew-px4
  42. brew update
  43. brew install avr-gcc@7
  44. brew link --force avr-gcc@7
  45. brew install dfu-programmer
  46. brew install dfu-util
  47. brew install gcc-arm-none-eabi
  48. brew install avrdude
  49. ์ด ๋ฐฉ๋ฒ•์„ ๊ฐ€์žฅ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ํ™ˆ๋ธŒ๋ฃจ๊ฐ€ ์—†๋‹ค๋ฉด ์ปค๋งจ๋“œ๋ผ์ธ ํ™˜๊ฒฝ์—์„œ ๋งค์šฐ ํŽธํ•œ [Homebrew](https://brew.sh/)๋ฅผ ๋‹ค์šด๋ฐ›๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค. ์ฐธ๊ณ ๋กœ `avr-gcc@7`๋ฅผ ์„ค์น˜ํ•˜๋Š” ์ค‘ `make`๊ณผ `make install`๋Š” ๋Œ€๊ฐœ 20๋ถ„ ๋„˜๊ฒŒ ๊ฑธ๋ฆฌ๊ณ  CPU ์‚ฌ์šฉ๋Ÿ‰์ด ๋†’์•„์ง‘๋‹ˆ๋‹ค.
  50. ## msys2๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์œˆ๋„์šฐ (์ถ”์ฒœ)
  51. ์œˆ๋„์šฐ ๋น„์Šคํƒ€ ๋ถ€ํ„ฐ ์ตœ์‹ ๋ฒ„์ ผ๊นŒ์ง€ ๊ฐ€์žฅ์ถ”์ฒœ๋˜๋Š” ํ™˜๊ฒฝ์€ [msys2](https://www.msys2.org)๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. (์œˆ๋„์šฐ 7๊ณผ ์œˆ๋„์šฐ 10์—์„œ ๋ชจ๋‘ ํ…Œ์ŠคํŠธ๋˜์—ˆ์Œ)
  52. * ์ด ์‚ฌ์ดํŠธ์— ์žˆ๋Š” ์„ค๋ช…์„ ์ด์šฉํ•ด msys2๋ฅผ ์„ค์น˜ํ•˜์„ธ์š”: https://www.msys2.org
  53. * ``MSYS2 MingGW 64-bit`` ๋ฅผ ์—ฌ์„ธ์š”
  54. * QMKํด๋”๋กœ ์ด๋™ํ•˜์„ธ์š”. c๋“œ๋ผ์ด๋ธŒ ๋ฃจํŠธ์— ์žˆ๋Š”๊ฒฝ์šฐ:
  55. * `$ cd /c/qmk_firmware`
  56. * `util/qmk_install.sh`์„ ์‹คํ–‰์‹œํ‚ค๊ณ  ๋‚˜์˜ค๋Š”๋ฐ์š” ๋”ฐ๋ผํ•˜์„ธ์š”
  57. ### ํฌ๋ฆฌ์—์ดํ„ฐ ์—…๋ฐ์ดํŠธ
  58. ๋งŒ์•ฝ ๋‹น์‹ ์˜ ์œˆ๋„์šฐ 10์ด ํฌ๋ฆฌ์—์ดํ„ฐ ์—…๋ฐ์ดํŠธ ๋ฒ„์ „ ๋˜๋Š” ๋” ๋†’์€ ๋ฒ„์ „์ด๋ผ๋ฉด ๋ฐ”๋กœ ์ปดํŒŒ์ผ๊ณผ ํ”„๋กœ๊ทธ๋žจ ์—…๋กœ๋“œ(flashing)๋ฅผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํฌ๋ฆฌ์—์ดํ„ฐ ์—…๋ฐ์ดํŠธ ์ „ ๋ฒ„์ „์ด๋ผ๋ฉด ์ปดํŒŒ์ผ๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๋‹น์‹ ์ด ์ž˜ ๋ชจ๋ฅด๊ฒ ๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธ๋œ ๋ฒ„์ „์ด ์•„๋‹ˆ๋ผ๋ฉด [์ด ๋งํฌ](https://support.microsoft.com/en-us/instantanswers/d4efb316-79f0-1aa1-9ef3-dcada78f3fa0/get-the-windows-10-creators-update)๋ฅผ ํ™•์ธํ•ด ๋ณด์‹ญ์‹œ์˜ค.
  59. ### ๋ฆฌ๋ˆ…์Šค์šฉ ์œˆ๋„์šฐ ํ•˜์œ„ ์‹œ์Šคํ…œ ์‚ฌ์šฉ (Windows10 Subsystem for Linux)
  60. ํฌ๋ฆฌ์—์ดํ„ฐ ์—…๋ฐ์ดํŠธ์— ์ถ”๊ฐ€๋กœ ๋งŒ์•ฝ ๋‹น์‹ ์ด ๋ฆฌ๋ˆ…์Šค์šฉ ์œˆ๋„์šฐ ํ•˜์œ„ ์‹œ์Šคํ…œ์ด ํ•„์š”ํ•˜๋‹ค๋ฉด ์ด ๋งํฌ์—์„œ ๋‹ค์šด๋ฐ›์œผ์‹ญ์‹œ์˜ค: [์„ค๋ช…](https://www.howtogeek.com/249966/how-to-install-and-use-the-linux-bash-shell-on-windows-10/)
  61. ๋งŒ์•ฝ ๋‹น์‹ ์ด ์ด๋ฏธ ๋ฆฌ๋ˆ…์Šค์šฉ ์œˆ๋„์šฐ ํ•˜์œ„ ์‹œ์Šคํ…œ์„ Anniversary์—…๋ฐ์ดํŠธ๋ฅผ ํ†ตํ•ด ๋ฐ›์•˜๋‹ค๋ฉด ์ด ๋งํฌ์—์„œ 16.04LTS๋กœ ์—…๋ฐ์ดํŠธ ํ•˜๋Š”๊ฒƒ์„ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์—…๋ฐ์ดํŠธ ์—†์ด๋Š” ์ผ๋ถ€ํ‚ค๋ณด๋“œ๊ฐ€ 14.04LTS์— ํฌํ•จ๋˜์žˆ๋Š” ๋„๊ตฌ๋“ค๋กœ ์ปดํŒŒ์ผ๋˜์ง€ ์•Š์„์ˆ˜ ์žˆ๊ธฐ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค : [WSL ์—…๋ฐ์ดํŠธ](https://betanews.com/2017/04/14/upgrade-windows-subsystem-for-linux/)
  62. ### Git
  63. ๋งŒ์•ฝ ๋‹น์‹ ์ด ์ด๋ฏธ ํŒŒ์ผ์„ ๋กœ์ปฌ๋กœ ๋ณต์ œํ•˜์˜€๋‹ค๋ฉด ์ด ์„น์…˜์„ ๋ฌด์‹œํ•˜์‹ญ์‹œ์š”.
  64. ๋‹น์‹ ์€ ํŒŒ์ผ์„ ๊ธฐ๋ณธ์ ์ธ git์„ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ์ปฌ๋กœ ๋ณต์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. **์ฃผ์˜, WSL Git์„ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋ฉ๋‹ˆ๋‹ค** [Git](https://git-scm.com/download/win) ์ด ๋งํฌ์—์„œ git์„ ๋‹ค์šด๋ฐ›๊ณ  ์„ค์น˜ํ•˜์‹ญ์‹œ์˜ค.
  65. ๊ทธ๋ฆฌ๊ณ  [๊ธฐ๋ณธ์„ค์ •](https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup), ์œ ์ €๋„ค์ž„๊ณผ ์ด๋ฉ”์ผ์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์€ ๋งŒ์•ฝ ๋‹น์‹ ์ด ์˜จ๋ผ์ธ์— ๊ธฐ์—ฌํ•  ๊ณ„ํš์ด๋ผ๋ฉด ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.
  66. Git์˜ ์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ๋‹ค๋ฉด Git Bash์ปค๋งจ๋“œ์„ ์—ด๊ณ  ๋‹น์‹ ์˜ ๋ณต์ œ QMKํŒŒ์ผ์ด ์žˆ๋Š” ์œ„์น˜๋กœ ์ด๋™ํ•˜๊ณ  `git clone --recurse-submodules https://github.com/qmk/qmk_firmware`๋ฅผ ์‹คํ–‰ ์‹œํ‚ค์‹ญ๋‹ˆ์˜ค. ์ด ์ปค๋งจ๋“œ๋Š” ์ƒˆ๋กœ์šด `qmk_firmware`ํด๋”๋ฅผ ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ๊ฒƒ์˜ ํ•˜์œ„ ํด๋”์„ค์ •์œผ๋กœ ์ƒ์„ฑํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  67. ### ๋„๊ตฌ(Toolchain) ์„ค์ •
  68. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋„๊ตฌ์„ค์ •์€ ๋ฆฌ๋ˆ…์Šค์šฉ ์œˆ๋„์šฐ ํ•˜์œ„ ์‹œ์Šคํ…œ์ด ์„ค์น˜๋ ๋•Œ ์ž๋™์œผ๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ˆ˜๋™์ ์œผ๋กœ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์—ฌ๊ธฐ ์„ค๋ช…์ด ์žˆ์Šต๋‹ˆ๋‹ค. (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. )
  69. 1. "Bash On Ubuntu On Windows" ์„ ์‹คํ–‰์‹œํ‚ค์‹ญ์‹œ์˜ค.
  70. 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`.)
  71. 3. `util/wsl_install.sh`๋ฅผ ์‹คํ–‰์‹œํ‚ค๊ณ  ํ™”๋ฉด์— ๋‚˜์˜ค๋Š” ์ง€์‹œ๋ฅผ ๋”ฐ๋ฅด์‹ญ๋‹ˆ์˜ค.
  72. 4. Bash command window๋ฅผ ์žฌ์‹คํ–‰ ์‹œํ‚ค์‹ญ์‹œ์˜ค.
  73. 5. ์ด๋กœ์จ ๋‹น์‹ ์€ ์ปดํŒŒ์ผ๊ณผ ํ”„๋กœ๊ทธ๋žจ ์—…๋กœ๋“œ(flashing)์„ ์œ„ํ•œ ์ค€๋น„๊ฐ€ ๋ชจ๋‘ ๋๋‚ฌ์Šต๋‹ˆ๋‹ค.
  74. ### ์ค‘์š”ํ•œ ์ฐธ๊ณ ์‚ฌํ•ญ
  75. *`util/wsl_install.sh` ๋ช…๋ น์–ด๋ฅผ ๋‹ค์‹œ ์‹คํ–‰์‹œ์ผœ ์ตœ์‹  ์—…๋ฐ์ดํŠธ๋ฅผ ๋‹ค์šด๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  76. * QMK ํด๋”์˜ ์œ„์น˜๋Š” ์œˆ๋„์šฐ ํŒŒ์ผ์‹œ์Šคํ…œ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ด์•ผ ๋ฉ๋‹ˆ๋‹ค. WSL๋Š” ์™ธ๋ถ€์‹คํ–‰ํŒŒ์ผ๋ฅผ ์ž‘๋™ ์‹œํ‚ฌ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ด์ฃ .
  77. * WSL์˜ Git์€ ์œˆ๋„์šฐ์šฉ Git๊ณผ **ํ˜ธํ™˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค**
  78. * ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์€ WSL์•ˆ๊ณผ ๋ฐ–์—์„œ ๋ชจ๋‘ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค ํ•˜์ง€๋งŒ ๋งŒ์•ฝ .makefile ํ˜น์€ .sh๋ฅผ ์ˆ˜์ •ํ•œ๋‹ค๋ฉด ์œ ๋‹‰์Šค ๋ผ์ธ์—”๋”ฉ(Unix line endings)์„ ์ง€์›ํ•˜๋Š” ์—๋””ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์ด์˜ค. ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ์ปดํŒŒ์ผ์ด ๋˜์ง€์•Š์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
  79. ## ์œˆ๋‘์šฐ (๋น„์Šคํƒ€ ํ˜น์€ ๋” ์ตœ์‹ ) (๋น„์ถ”์ฒœ)
  80. ์ด ์„น์…˜์€ ์œˆ๋„์šฐ ๋น„์Šคํƒ€ ํ˜น์€ ๋” ์ตœ์‹ ๋ฒ„์ ผ์„ ์œ„ํ•œ ์˜ค๋ž˜๋œ ์„ค๋ช…์ž…๋‹ˆ๋‹ค. [MSYS2](#windows-with-msys2-recommended)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋” ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค.
  81. 1. WinAVR์„ ์„ค์น˜ํ•˜์˜€๋‹ค๋ฉด ๋จผ์ € ์‚ญ์ œํ•˜์‹ญ์‹œ์˜ค.
  82. 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**)
  83. 3. ๋งŒ์•ฝ ๋‹น์‹ ์ด Infinity์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ํ‚ค๋ณด๋“œ์— ํ”„๋กœ๊ทธ๋žจ ์—…๋กœ๋“œ๋ฅผ(flashing) ํ• ๊ฑฐ๋ผ๋ฉด dfu-util์„ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค, [Input Club](https://github.com/kiibohd/controller/wiki/Loading-DFU-Firmware) ๋ฅผ ์ฐธ๊ณ  ํ•˜์‹ญ์‹œ์˜ค.
  84. 4. [MinGW](https://sourceforge.net/projects/mingw/files/Installer/mingw-get-setup.exe/download)๋ฅผ ์„ค์น˜ํ•˜์‹ญ์‹œ์˜ค. ์„ค์น˜์ค‘ ์œˆ๋„์šฐํ™”๋ฉด์—์„œ GUI ์ถ”๊ฐ€ ์„ค์น˜ ์˜ต์…˜์„ ํ•ด์žฌํ•˜์‹ญ๋‹ˆ์˜ค. **๊ธฐ๋ณธ ์„ค์น˜ ์œ„์น˜๋ฅผ ๋ฐ”๊พธ์ง€ ๋งˆ์‹ญ์‹œ์˜ค.** ์ด ๋ช…๋ น์–ด๋Š” ๊ธฐ๋ณธ์œ„์น˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  85. 5. ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ๋ฅผ ๋ณต์ œํ•˜์‹ญ์‹œ์˜ค. [์ด ๋งํฌ๋กœ ์••์ถ•ํŒŒ์ผ์„ ๋ฐ›๊ณ  ์•ž์ถ•ํ•ด์ œ ํ•˜์‹ญ์‹œ์˜ค.](https://github.com/qmk/qmk_firmware/archive/master.zip) ์œˆ๋„์šฐ ํƒ์ƒ‰๊ธฐ์—์„œ ๋‹ค์šด๋ฐ›์€ ํŒŒ์ผ์„ ์—ฌ์‹ญ์‹œ์˜ค.
  86. 6. `\util` ํด๋”๋ฅผ ์—ฌ์‹ญ์‹œ์˜ค.
  87. 7. `1-setup-path-win` .batํŒŒ์ผ์„ ๋”๋ธ”ํด๋ฆญํ•ด์„œ ์‹คํ–‰์‹œํ‚ค์‹œ์˜ค. ์œ ์ € ๊ณ„์ • ์„ค์ • ๋ณ€๊ฒฝ์„ ํ—ˆ์šฉํ•ด์•ผ๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ŠคํŽ˜์ด์Šค๋ฐ”๋ฅผ ๋ˆŒ๋Ÿฌ ์„ค์น˜๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜์—ˆ๋‹ค๋Š” ๋ฉ”์„ธ์ง€๋ฅผ ๋‹ซ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  88. 8. `2-setup-environment-win` .batํŒŒ์ผ์— ์šฐํด๋ฆญํ•ด์„œ '๊ด€๋ฆฌ์ž ๊ถŒํ•œ์œผ๋กœ ์‹คํ–‰'์œผ๋กœ ์‹คํ–‰์‹œํ‚ค์‹ญ์‹œ์˜ค. ์ด ์ž‘์—…์„ ๊ฝค ์˜ค๋ž˜ ๊ฑธ๋ฆด ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋“œ๋ผ์ด๋ฒ„ ์„ค์ •์„ ์Šน์ธํ•ด์•ผ ๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๋ชจ๋“ ๊ฒƒ์ด ๋๋‚˜๋ฉด ๋‹น์‹ ์˜ ์‹œ์Šคํ…œ์˜ ์„ค์ •์ด ๋ชจ๋‘ ๋๋‚ฌ์Šต๋‹ˆ๋‹ค.
  89. ๋งŒ์•ฝ ์ด ์ž‘์—…์„ ํ•˜๋Š”๋ฐ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์–ด ๋„์›€๋ฐ›๊ณ  ์‹ถ๋‹ค๋ฉด *Win_Check_Output.txt*์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ๋„์›€์ด ๋ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์€ `Win_Check.bat`์„ `\util`ํด๋”์—์„œ ์‹คํ–‰์‹œ์ผœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  90. ## ๋„์ปค(Docker)
  91. ๋งŒ์•ฝ ์œ„์ž‘์—…๋“ค์ด ๋‹น์‹ ์—๊ฒŒ ์ข€ ์–ด๋ ต๊ฒŒ ๋Š๊ปด์กŒ๋‹ค๋ฉด ๋„์ปค(Docker)๊ฐ€ ๋‹น์‹ ์„ ์œ„ํ•œ ์ตœ์„ ์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค(์˜์—ญ). [Docker CE](https://docs.docker.com/install/#supported-platforms)๋ฅผ ์„ค์น˜ํ•œ๋’ค ์•„๋ž˜ ์ปค๋งจ๋“œ๋ฅผ `qmk_firmware` ๋””๋ž™ํ† ๋ฆฌ์—์„œ ์‹คํ–‰์‹œ์ผœ ํ‚ค๋ณด๋“œ ๋˜๋Š” ํ‚ค๋งต์„ ์ƒ์„ฑ์‹œํ‚ต๋‹ˆ๋‹ค.
  92. ```bash
  93. util/docker_build.sh keyboard:keymap
  94. # ์˜ˆ: util/docker_build.sh ergodox_ez:steno
  95. ```
  96. ์ด ์ปค๋งจ๋“œ๋Š” ์›ํ•˜๋Š” ํ‚ค๋ณด๋“œ ๋˜๋Š” ํ‚ค๋งต์„ ์ปดํŒŒ์ผํ•˜๊ณ  `.hex`๋˜๋Š” `.bin`ํŒŒ์ผ์„ ํ”„๋กœ๊ทธ๋žจ ์—…๋กœ๋“œ๋ฅผ(flashing) ์œ„ํ•ด QMK๋””๋ž™ํ† ๋ฆฌ์— ์ƒ์„ฑํ• ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ `:keymap`์ด ์ƒ๋žต๋œ๋‹ค๋ฉด `default`์ด ๊ธฐ๋ณธ์„๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ฐธ๊ณ ๋กœ ์—ฌ๊ธฐ์„œ ์‚ฌ์šฉ๋˜๋Š” ์ธ์ˆ˜๋Š” `make` ์ปค๋งจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํŒŒ์ผํ• ๋•Œ์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.
  97. ๋˜ํ•œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ทธ๋ƒฅ ์•„๋ฌด ์ธ์ˆ˜ ์—†์ด๋„ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ๋œ๋‹ค๋ฉด ํ”„๋กœ๊ทธ๋žจ์€ ํ•˜๋‚˜์”ฉ ์ž๋™์œผ๋กœ ์ธ์ˆ˜์ž…๋ ฅ์„ ์š”๊ตฌ ํ• ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–ด์ฉŒ๋ฉด ์ด๋ฐฉ๋ฒ•์ด ๋” ์‰ฌ์šธ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
  98. ```bash
  99. util/docker_build.sh
  100. # ์ธ์ˆ˜์„ ์ž…๋ ฅ๋ฐ›์Šต๋‹ˆ๋‹ค.(์•„๋ฌด๊ฒƒ๋„ ์“ฐ์ง€ ์•Š๊ณ  ๋†”๋‘๋Š”๋ฉด ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค)
  101. ```
  102. ๋‹ค์Œ๊ณผ ๊ฐ™์ด `target`๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํŒŒ์ผ๊ณผ ํ”„๋กœ๊ทธ๋žจ ์—…๋กœ๋“œ(flashing)์„ ๋™์‹œ์— ํ• ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
  103. ```bash
  104. util/docker_build.sh keyboard:keymap:target
  105. # ์˜ˆ: util/docker_build.sh planck/rev6:default:dfu-util
  106. ```
  107. ๋งŒ์•ฝ ๋‹น์‹œ์ด ๋ฆฌ๋ˆ…์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์ด ์ปค๋งจ๋“œ๋“ค์€ ์ถ”๊ฐ€ ์„ค์ • ์—†์ด ๋ฐ”๋กœ ์ž‘๋™ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์œ„๋„์šฐ ๋˜๋Š” ๋งฅ ํ™˜๊ฒฝ์—์„œ๋Š” [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)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค.
  108. !> ์œˆ๋„์šฐ์—์„œ ๋…์ปค๋Š” [Hyper-V](https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v)์„ ํ™œ์„ฑํ™” ์„ค์ •ํ•˜์—ฌ์•ผ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋„์ปค๋Š” Hyper-V๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ์œˆ๋„์šฐ 7, ์œˆ๋„์šฐ 8, ๊ทธ๋ฆฌ๊ณ  **์œˆ๋„์šฐ 10 ํ™ˆ**๊ณผ ๊ฐ™์€ ์œˆ๋„์šฐ ๋ฒ„์ „์—์„œ ์‚ฌ์šฉํ• ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  109. ## Vagrant
  110. ๋งŒ์•ฝ ์ปด์›จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๋ฉด Vagrant๋ผ๋Š” ์ด๋ฆ„์˜ ํˆด์„ ์‚ฌ์šฉํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํˆด์€ ๊ฐ€์ƒํ™˜๊ฒฝ์„ ์„ธํŒ…ํ•ด์คŒ๊ณผ ๋™์‹œ์— ์ปด์›จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ์— ํ•„์š”ํ•œ ๋ชจ๋“  ์„ค์ •์„ ํ•ด์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. OLKB๋Š” ๊ฐ€์ƒํ™˜๊ฒฝ์— ํŒŒ์ผ์„ ํ˜ธ์ŠคํŒ…ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. [Vagrant ๊ฐ€์ด๋“œ](getting_started_vagrant.md)์—์„œ ๋” ๋งŽ์€ ์ •๋ณด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.