Download the latest source code from GitHub - XIYO/asuswrt-merlin.ng-kr GitHub Wiki

μ†Œκ°œ

ν™˜μ˜ν•©λ‹ˆλ‹€! 이 μ•ˆλ‚΄μ„œλŠ” Asuswrt-Merlin μ†ŒμŠ€ μ½”λ“œμ˜ μ΅œμ‹  버전을 μ–»λŠ” 방법과 패치 및 μ»΄νŒŒμΌμ„ μœ„ν•œ μ•ˆμ •λœ μ½”λ“œμ˜ 버전을 μ œκ³΅ν•©λ‹ˆλ‹€.

용기λ₯Ό λ‚΄μ£Όμ„Έμš”! 자체 νŽŒμ›¨μ–΄λ₯Ό μ»΄νŒŒμΌν•  λ•Œ λ¦¬μŠ€ν¬κ°€ μ‘΄μž¬ν•©λ‹ˆλ‹€. 이λ₯Ό μ§„ν–‰ν•˜λŠ” 것은 μ—¬λŸ¬λΆ„μ˜ μ±…μž„μ΄λ©°, 무언가 잘λͺ»λ  경우 νŽŒμ›¨μ–΄ μ œμž‘μžλŠ” μ—¬λŸ¬λΆ„μ˜ 컴파일된 νŽŒμ›¨μ–΄λ₯Ό μ§€μ›ν•˜μ§€ μ•Šμ„ κ²ƒμž…λ‹ˆλ‹€. μ—¬λŸ¬λΆ„μ€ Asus 볡ꡬ μœ ν‹Έλ¦¬ν‹°λ₯Ό μ΄μš©ν•˜μ—¬ 볡ꡬ λͺ¨λ“œμ—μ„œ νŽŒμ›¨μ–΄λ₯Ό μ ‘κ·Όν•˜κ³  ν”Œλž˜μ‹œν•˜λŠ” 방법에 μ΅μˆ™ν•΄μ Έμ•Ό ν•©λ‹ˆλ‹€. μ—¬λŸ¬λΆ„μ˜ νŽŒμ›¨μ–΄κ°€ λΉŒλ“œλ˜μ§€ μ•Šμ„ μˆ˜λ„ 있고, ν”Œλž˜μ‹œλ˜μ§€ μ•Šμ„ μˆ˜λ„ 있으며, ν”Œλž˜μ‹œλ˜μ§€λ§Œ λΌμš°ν„°λ₯Ό λΆ€νŒ…ν•˜μ§€ λͺ»ν•˜κ²Œ ν•  μˆ˜λ„ 있으며, ν”Œλž˜μ‹œλ˜κ³  λΆ€νŒ…λ˜λ”λΌλ„ μ˜¬λ°”λ₯΄μ§€ μ•Šκ±°λ‚˜ μ˜ˆμƒμΉ˜ λͺ»ν•œ λ°©μ‹μœΌλ‘œ μž‘λ™ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. 컴퓨터가 κ°‘μžκΈ° λ°œν™”ν•  μˆ˜λ„ 있으며, μ—¬λŸ¬λΆ„μ΄ κ°‘μžκΈ° λ°œν™”ν•  μˆ˜λ„ 있으며, 세상이 끝날 μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.## μ€€λΉ„ 사항 ##

μ°Έκ³ : 이 μ•ˆλ‚΄μ„œλŠ” Linux λ°°ν¬νŒμ— λŒ€ν•œ 기본적인 μž‘λ™ 지식을 κ°€μ •ν•©λ‹ˆλ‹€. Linux λ°°ν¬νŒμ„ μ„€μΉ˜ν•˜κ³  μ ‘κ·Όν•˜λŠ” 방법, 터미널에 μ ‘κ·Όν•˜λŠ” 방법 및 배포판의 νŒ¨ν‚€μ§€ κ΄€λ¦¬μžλ₯Ό 톡해 νŒ¨ν‚€μ§€λ₯Ό μ„€μΉ˜ν•˜λŠ” 방법을 μ•Œμ•„μ•Ό ν•©λ‹ˆλ‹€.

μ°Έκ³ : 이 μ•ˆλ‚΄μ„œλŠ” νŽŒμ›¨μ–΄λ₯Ό λΉŒλ“œν•˜κΈ° μœ„ν•œ μ–΄λ– ν•œ 사전 μ€€λΉ„ 사항도 닀루지 μ•ŠμŠ΅λ‹ˆλ‹€ - μ—¬λŸ¬λΆ„μ˜ λ°°ν¬νŒμ— 따라 μΆ”κ°€ νŒ¨ν‚€μ§€λ₯Ό μ„€μΉ˜ν•΄μ•Ό ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ν•„μš”ν•œ μΆ”κ°€ νŒ¨ν‚€μ§€μ— λŒ€ν•œ μ •λ³΄λŠ” νŽŒμ›¨μ–΄ λΉŒλ“œ μ•ˆλ‚΄μ„œμ—μ„œ ν™•μΈν•˜μ„Έμš”.

μ»΄νŒŒμΌμ„ μœ„ν•œ μ†ŒμŠ€ μ½”λ“œλ₯Ό λ‹€μš΄λ‘œλ“œν•˜λ €λ©΄ λ‹€μŒμ΄ ν•„μš”ν•©λ‹ˆλ‹€:

  • Linux 기반 운영 ν™˜κ²½ (Linuxλ₯Ό μ‹€ν–‰ν•˜λŠ” μ „μš© 컴퓨터 λ˜λŠ” VMware λ˜λŠ” VirtualBoxλ₯Ό μ‚¬μš©ν•œ 가상 λ¨Έμ‹ ).
  • git λΆ„μ‚° 버전 관리 μ‹œμŠ€ν…œ (일반적으둜 μ—¬λŸ¬λΆ„μ˜ Linux 배포판의 νŒ¨ν‚€μ§€ κ΄€λ¦¬μžμ— ν¬ν•¨λ˜μ–΄ 있음)
  • 적어도 10GB의 빈 ν•˜λ“œ λ“œλΌμ΄λΈŒ 곡간 (v378.55 κΈ°μ€€)## μ†ŒμŠ€ μ½”λ“œ λ‹€μš΄λ‘œλ“œ ##

터미널을 μ—΄κ³  μ›ν•˜λŠ” λ””λ ‰ν† λ¦¬λ‘œ μ΄λ™ν•˜μ„Έμš”. Asuswrt-Merlin을 μœ„ν•΄ μƒˆ 디렉토리λ₯Ό λ§Œλ“€ ν•„μš”λŠ” μ—†μŠ΅λ‹ˆλ‹€. git을 톡해 μ €μž₯μ†Œλ₯Ό λ³΅μ œν•˜λ©΄ 디렉토리가 μžλ™μœΌλ‘œ μƒμ„±λ©λ‹ˆλ‹€.

이제 μ €μž₯μ†Œλ₯Ό λ³΅μ œν•˜μ„Έμš”: git clone git://github.com/RMerl/asuswrt-merlin.git.

이 λ‹¨κ³„λŠ” μ»΄ν“¨ν„°μ˜ 인터넷 μ—°κ²° 속도에 따라 μ‹œκ°„μ΄ 걸릴 수 μžˆμŠ΅λ‹ˆλ‹€. λ‹€μš΄λ‘œλ“œλ˜λŠ” λ°μ΄ν„°λŠ” μ•½ 1.5GiBμž…λ‹ˆλ‹€ (v378.55 κΈ°μ€€). μž μ‹œ νœ΄μ‹μ„ μ·¨ν•˜κ³  컀피λ₯Ό λ§ˆμ‹œκ³  닀리λ₯Ό νŽ΄μ„Έμš”.

(Master 브랜치만 ν•„μš”ν•œ 경우 λ‹€μŒ λͺ…λ ΉμœΌλ‘œ 짧은 μ‹œκ°„ μ•ˆμ— λ³΅μ œν•  수 μžˆμŠ΅λ‹ˆλ‹€: git clone git://github.com/RMerl/asuswrt-merlin.ng.git --depth=1 --single-branch)

이 λͺ…λ Ήμ˜ 좜λ ₯은 λ‹€μŒκ³Ό 같을 κ²ƒμž…λ‹ˆλ‹€:

build@asuswrt-merlin:~$ git clone git://github.com/RMerl/asuswrt-merlin.ng.git
Cloning into asuswrt-merlin...
remote: Counting objects: 76989, done.
remote: Compressing objects: 100% (54069/54069), done.
remote: Total 76989 (delta 20537), reused 76676 (delta 20231)
Receiving objects: 100% (76989/76989), 483.79 MiB | 3.10 MiB/s, done.
Resolving objects: 100% (20537/20537), done.
build@asuswrt-merlin:~$

이제 μƒˆλ‘œ μƒμ„±λœ asuswrt-merlin λ””λ ‰ν† λ¦¬λ‘œ μ΄λ™ν•˜μ„Έμš”: cd asuswrt-merlin

build@asuswrt-merlin:~$ cd asuswrt-merlin/
build@asuswrt-merlin:~/asuswrt-merlin$

이 μ‹œμ μ—μ„œ GitHub μ €μž₯μ†Œμ˜ master 브랜치λ₯Ό λ³΅μ œν–ˆμŠ΅λ‹ˆλ‹€. master λΈŒλžœμΉ˜μ—λŠ” git에 μ»€λ°‹λ˜κ³  GitHub에 ν‘Έμ‹œλœ μ΅œμ‹  μ½”λ“œκ°€ ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 이 μ½”λ“œλ₯Ό μ‚¬μš©ν•˜λ €λ©΄ μ—¬κΈ°μ—μ„œ λ©ˆμΆ”κ³  νŽŒμ›¨μ–΄ λΉŒλ“œλ₯Ό 계속할 수 μžˆμŠ΅λ‹ˆλ‹€.

μ°Έκ³ : master λΈŒλžœμΉ˜μ—μ„œ λΉŒλ“œν•˜λ €λŠ” 경우 μ§„ν–‰ 쀑인 κΈ°λŠ₯ 및 μ½”λ“œ 병합이 μ–Έμ œλ“ μ§€ 포함될 수 μžˆμŒμ„ 염두에 λ‘μ„Έμš”. μ΄λŠ” νŽŒμ›¨μ–΄κ°€ μ„±κ³΅μ μœΌλ‘œ λΉŒλ“œλ˜μ§€ μ•Šμ„ 수 μžˆκ±°λ‚˜, 컴파일된 νŽŒμ›¨μ–΄ 이미지가 μ˜ˆμƒλŒ€λ‘œ μž‘λ™ν•˜μ§€ μ•Šμ„ 수 μžˆμŒμ„ μ˜λ―Έν•©λ‹ˆλ‹€.

κ·ΈλŸ¬λ‚˜ 더 μ•ˆμ •μ μΈ μ½”λ“œ κΈ°λ°˜μ—μ„œ μž‘μ—…ν•˜κ³  λΉŒλ“œν•˜λ €λ©΄ κ³„μ†ν•˜μ„Έμš”!

3.0.0.4.270.24 BETA 3 λ¦΄λ¦¬μŠ€λΆ€ν„° GitHubμ—μ„œλŠ” 'νƒœκ·Έ'λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. νƒœκ·ΈλŠ” μ€‘μš”ν•œ 이λ ₯ 지점(릴리슀)으둜 κ°„μ£Όλ©λ‹ˆλ‹€. μš°λ¦¬λŠ” μ½”λ“œ 기반이 κ·Έ μ‹œμ μ—μ„œ μ–΄λ–»κ²Œ λ˜μ—ˆλŠ”μ§€ 보기 μœ„ν•΄ νƒœκ·Έλ‘œ μ „ν™˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

git을 μ‚¬μš©ν•˜μ—¬ μ‚¬μš© κ°€λŠ₯ν•œ νƒœκ·Έλ₯Ό 확인할 수 μžˆμŠ΅λ‹ˆλ‹€: git tag -l

build@asuswrt-merlin:~/asuswrt-merlin$ git tag -l
3.0.0.4.270.24-BETA3
build@asuswrt-merlin:~/asuswrt-merlin$

ν˜„μž¬ μž‘μ„± μ‹œμ μ—μ„œλŠ” 3.0.0.4.270.24-BETA3 λΉŒλ“œλ§Œ μ‚¬μš© κ°€λŠ₯ν•˜λ―€λ‘œ ν•΄λ‹Ή μ‹œμ μœΌλ‘œ μ „ν™˜ν•˜κ² μŠ΅λ‹ˆλ‹€. μ‚¬μš©ν•˜λ €λŠ” νƒœκ·Έμ— λŒ€ν•œ λ‹€μŒ λͺ…λ Ήμ—μ„œ 3.0.0.4.270.24-BETA3λ₯Ό λŒ€μ²΄ν•΄μ•Ό ν•©λ‹ˆλ‹€: git checkout 3.0.0.4.270.24-BETA3

build@asuswrt-merlin:~/asuswrt-merlin$ git checkout 3.0.0.4.270.24-BETA3
Note: checking out '3.0.0.4.270.24-BETA3'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b new_branch_name

HEAD is now at 3dc2b4c... populateCache() now handled by the lease XML parsing
build@asuswrt-merlin:~/asuswrt-merlin$

이 λͺ…령에 λŒ€ν•œ git의 κΈ΄ λ©”μ‹œμ§€μ— λŒ€ν•΄μ„œλŠ” κ±±μ •ν•˜μ§€ λ§ˆμ„Έμš”. κ·Έλƒ₯ 과거둜 λŒμ•„κ°”λ‹€λŠ” 것을 μ•Œλ €μ£ΌλŠ” κ²ƒλΏμž…λ‹ˆλ‹€!

이 μ‹œμ μ—μ„œ μ›ν•˜λŠ” νƒœκ·Έλ‘œ λŒμ•„μ™€μ„œ 패치 λ˜λŠ” νŽŒμ›¨μ–΄ λΉŒλ“œλ₯Ό 계속할 수 μžˆμŠ΅λ‹ˆλ‹€.

μ–Έμ œλ“ μ§€ λ§ˆμŠ€ν„° 브랜치둜 λŒμ•„κ°€μ„œ μž‘μ—…ν•˜λ €λ©΄ λ‹€μŒ λͺ…령을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€: git checkout master (λ§ˆμŠ€ν„° λΈŒλžœμΉ˜κ°€ μ΅œμ‹  μ½”λ“œμž…λ‹ˆλ‹€!)

build@asuswrt-merlin:~/asuswrt-merlin$ git checkout master
Previous HEAD position was 3dc2b4c... populateCache() now handled by the lease XML parsing
Switched to branch 'master'
build@asuswrt-merlin:~/asuswrt-merlin$## 둜컬 μ €μž₯μ†Œ μ—…λ°μ΄νŠΈ ##

RMerlin이 κ³„μ†ν•΄μ„œ Asuswrt-Merlin을 κ°œμ„ ν•˜κ³  μ—…λ°μ΄νŠΈν•  λ•Œ, 이전에 λ‹€μš΄λ‘œλ“œν•œ μ½”λ“œλŠ” λΉ λ₯΄κ²Œ 였래된 μƒνƒœκ°€ 될 수 μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ κ±±μ •ν•˜μ§€ λ§ˆμ„Έμš”! 전체 볡제 과정을 λ‹€μ‹œ μˆ˜ν–‰ν•  ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€! κ·Έλƒ₯ git pull λͺ…령을 μ‚¬μš©ν•˜μ„Έμš”:

μ†ŒμŠ€ μ½”λ“œλ₯Ό λ³€κ²½ν•œ ν›„ git pull을 μ‹€ν–‰ν•˜λ©΄, λ§ˆμŠ€ν„° λΈŒλžœμΉ˜κ°€ μ—¬λŸ¬λΆ„μ΄ λ³€κ²½ν•œ νŒŒμΌμ—λ„ λ³€κ²½ 사항이 있으면 병합 좩돌이 λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ 병합 μΆ©λŒμ€ 이 λ¬Έμ„œμ˜ λ²”μœ„λ₯Ό λ²—μ–΄λ‚©λ‹ˆλ‹€. 병합 μΆ©λŒμ„ ν•΄κ²°ν•˜λŠ” 방법에 λŒ€ν•œ λ¬Έμ„œλŠ” 곡식 git λ¬Έμ„œμ—μ„œ 찾을 수 μžˆμŠ΅λ‹ˆλ‹€.

build@asuswrt-merlin:~/asuswrt-merlin$ git pull
remote: Counting objects: 329, done.
remote: Compressing objects: 100% (258/258), done.
remote: Total 318 (delta 60), reused 312 (delta 54)
Receiving objects: 100% (318/318), 469.80 KiB | 455 KiB/s, done.
Resolving deltas: 100% (60/60), completed with 11 local objects.
From git://github.com/RMerl/asuswrt-merlin
 * [new branch]      nfs        -> origin/nfs
Already up-to-date.
build@asuswrt-merlin:~/asuswrt-merlin$

이제 μ΅œμ‹  μƒνƒœμž…λ‹ˆλ‹€! 이 νŠΉμ • κ²½μš°μ—λŠ” μš°λ¦¬κ°€ μ €μž₯μ†Œλ₯Ό λ³΅μ œν•œ μ‹œμ κ³Ό 첫 번째 git pull을 μˆ˜ν–‰ν•œ μ‹œμ  사이에 'nfs'λΌλŠ” μƒˆ λΈŒλžœμΉ˜κ°€ μƒμ„±λ˜μ—ˆμŠ΅λ‹ˆλ‹€. μ›ν•œλ‹€λ©΄ 이 브랜치둜 μ „ν™˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€ (git checkout nfs), 그리고 git pull μž‘μ—… 쀑에도 μƒˆλ‘œμš΄ νƒœκ·Έκ°€ μ €μž₯μ†Œμ—μ„œ κ²€μƒ‰λ©λ‹ˆλ‹€.

λ§Œμ•½ git pull을 μ‹€ν–‰ν•  λ•Œ 이미 μ—¬λŸ¬λΆ„μ˜ μ €μž₯μ†Œκ°€ GitHub의 μ €μž₯μ†Œμ™€ μ΅œμ‹  μƒνƒœλΌλ©΄, git은 λ‹¨μˆœνžˆ 이미 μ΅œμ‹  μƒνƒœμž„μ„ μ•Œλ €μ€„ κ²ƒμž…λ‹ˆλ‹€.

build@asuswrt-merlin:~/asuswrt-merlin$ git pull
Already up-to-date.
build@asuswrt-merlin:~/asuswrt-merlin$## κ²°λ‘  ##

μ—¬κΈ°κΉŒμ§€ μž…λ‹ˆλ‹€! 이 κ°€μ΄λ“œλ₯Ό 톡해 Asuswrt-Merlin의 μ΅œμ‹  μ†ŒμŠ€ μ½”λ“œλ₯Ό μ–»λŠ” 데 도움이 λ˜μ—ˆμ„ κ²ƒμž…λ‹ˆλ‹€. 이제 μ†ŒμŠ€ μ½”λ“œλ₯Ό λΉŒλ“œν•˜κΈ° μœ„ν•œ λ‹€λ₯Έ μœ„ν‚€ κ°€μ΄λ“œλ₯Ό μ°Έκ³ ν•  수 μžˆμŠ΅λ‹ˆλ‹€!