OBSOLETE Compiling Firmware from source using a Debian based Linux Distribution - XIYO/asuswrt-merlin.ng-kr GitHub Wiki

[λ―Έμ‚¬μš©] Debian 기반 λ°°ν¬νŒμ—μ„œ asuswrt-merlin λΉŒλ“œν•˜λŠ” 방법


이 νŽ˜μ΄μ§€λŠ” 더 이상 μ‚¬μš©λ˜μ§€ μ•ŠλŠ” Linux 버전을 μ°Έμ‘°ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

μ΅œμ‹  ꢌμž₯ λΉŒλ“œ ꡬ성에 λŒ€ν•œ μ •λ³΄λŠ” μ†ŒμŠ€ μ½”λ“œμ—μ„œ νŽŒμ›¨μ–΄ μ»΄νŒŒμΌν•˜κΈ°λ₯Ό μ°Έμ‘°ν•˜μ‹­μ‹œμ˜€.


μ†Œκ°œ

ν™˜μ˜ν•©λ‹ˆλ‹€! 이 κ°€μ΄λ“œλŠ” asuswrt-merlin을 μ†ŒμŠ€ μ½”λ“œμ—μ„œ μ»΄νŒŒμΌν•˜λŠ” 방법을 μ•ˆλ‚΄ν•©λ‹ˆλ‹€. μ΅œμ’… 결과물은 λΌμš°ν„°μ— ν”Œλž˜μ‹œ ν•  수 μžˆλŠ” λΉŒλ“œλœ νŽŒμ›¨μ–΄ μ΄λ―Έμ§€μž…λ‹ˆλ‹€.

μ—¬κΈ°μ—λŠ” μœ„ν—˜ μš”μ†Œκ°€ μžˆμŠ΅λ‹ˆλ‹€! 직접 νŽŒμ›¨μ–΄λ₯Ό μ»΄νŒŒμΌν•  λ•Œ μœ„ν—˜μ΄ λ”°λ¦…λ‹ˆλ‹€. λ¬Έμ œκ°€ λ°œμƒν•  경우 νŽŒμ›¨μ–΄ μ €μžλŠ” μ§€μ›ν•˜μ§€ μ•ŠμœΌλ©°, 회볡 λͺ¨λ“œμ—μ„œ νŽŒμ›¨μ–΄ μ•‘μ„ΈμŠ€ 및 ν”Œλž˜μ‹œ 방법에 λŒ€ν•΄ μ•Œκ³  μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€. νŽŒμ›¨μ–΄κ°€ λΉŒλ“œλ˜μ§€ μ•Šμ„ μˆ˜λ„ 있고, ν”Œλž˜μ‹œλ˜μ§€ μ•Šμ„ μˆ˜λ„ 있으며, ν”Œλž˜μ‹œλ˜μ§€λ§Œ λΌμš°ν„°κ°€ λΆ€νŒ…λ˜μ§€ μ•Šμ„ μˆ˜λ„ 있으며, ν”Œλž˜μ‹œλ˜κ³  λΆ€νŒ…λ˜μ§€λ§Œ μ˜ˆμƒμΉ˜ λͺ»ν•œ λ°©μ‹μœΌλ‘œ μž‘λ™ν•  μˆ˜λ„ 있으며, 컴퓨터가 κ°‘μžκΈ° λ°œν™”ν•  μˆ˜λ„ 있으며, 당신이 κ°‘μžκΈ° λ°œν™”ν•  μˆ˜λ„ 있으며, 세상이 끝날 μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

λ²”μœ„

이 κ°€μ΄λ“œλŠ” λ‹€μŒκ³Ό 같은 Debian 기반 λ°°ν¬νŒμ„ λŒ€μƒμœΌλ‘œ ν•©λ‹ˆλ‹€:

  • Debian 자체
  • Ubuntu
  • Linux Mint

이 κ°€μ΄λ“œλŠ” Debian이 μ•„λ‹Œ λ°°ν¬νŒμ—μ„œλ„ μ°Έμ‘°ν•  수 μžˆμ§€λ§Œ, μ‹œμŠ€ν…œ νŒ¨ν‚€μ§€ κ΄€λ¦¬μžμ— μ ν•©ν•œ λͺ…λ Ήμ–΄(특히 apt-get λͺ…λ Ήμ–΄)λ₯Ό λ‹€λ₯Έ λͺ…λ Ήμ–΄λ‘œ λŒ€μ²΄ν•΄μ•Ό ν•  수 μžˆμŠ΅λ‹ˆλ‹€(예: yum). λ˜ν•œ 64λΉ„νŠΈ λΉŒλ“œ ν™˜κ²½μ„ μ‹€ν–‰ 쀑인 경우 μ‹œμŠ€ν…œμ— λ‹€λ₯Έ νŒ¨ν‚€μ§€λ₯Ό μ„€μΉ˜ν•΄μ•Ό ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. μžμ„Έν•œ μ •λ³΄λŠ” 배포판의 λ¬Έμ„œλ₯Ό μ°Έμ‘°ν•˜μ‹­μ‹œμ˜€.

μ°Έκ³ : 이 κ°€μ΄λ“œλŠ” asuswrt-merlin μ†ŒμŠ€λ₯Ό μ»΄νŒŒμΌν•˜κΈ° μœ„ν•œ λ‹€μš΄λ‘œλ“œλ₯Ό 닀루지 μ•ŠμŠ΅λ‹ˆλ‹€. μ†ŒμŠ€ μ½”λ“œλ₯Ό μ–»μœΌλ €λ©΄ 이 κ°€μ΄λ“œλ₯Ό μ°Έμ‘°ν•˜μ‹­μ‹œμ˜€.

사전 μš”κ΅¬ 사항

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

μ°Έκ³ : 가상 λ¨Έμ‹ (VMware, VirtualBox λ“±)을 μ‚¬μš©ν•˜λŠ” 경우 컴파일 과정이 였랜 μ‹œκ°„μ΄ 걸릴 수 μžˆμŠ΅λ‹ˆλ‹€. ν•˜λ“œμ›¨μ–΄ 지원 가상화가 μ‹œμŠ€ν…œ BIOS(적용 κ°€λŠ₯ν•œ 경우)μ—μ„œ ν™œμ„±ν™”λ˜μ–΄ μžˆλŠ”μ§€ ν™•μΈν•˜κ³  가상 ν™˜κ²½μ΄ ν•˜λ“œμ›¨μ–΄ 지원 가상화λ₯Ό μ‚¬μš©ν•˜κ³  ν•˜λ‚˜ μ΄μƒμ˜ ν”„λ‘œμ„Έμ„œ μ½”μ–΄λ₯Ό μ‚¬μš©ν•˜λ„λ‘ κ΅¬μ„±λ˜μ–΄ μžˆλŠ”μ§€ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ 섀정을 κ΅¬μ„±ν•˜λŠ” 방법에 λŒ€ν•œ μžμ„Έν•œ λ‚΄μš©μ€ 가상 λ¨Έμ‹ μ˜ λ¬Έμ„œλ₯Ό μ°Έμ‘°ν•˜μ‹­μ‹œμ˜€.

νŽŒμ›¨μ–΄ 이미지λ₯Ό μ»΄νŒŒμΌν•˜λ €λ©΄ λ‹€μŒμ΄ ν•„μš”ν•©λ‹ˆλ‹€:

  • Linux 기반 μž‘μ—… ν™˜κ²½(Linuxλ₯Ό μ‹€ν–‰ν•˜λŠ” μ „μš© 컴퓨터 λ˜λŠ” VMware λ˜λŠ” VirtualBoxλ₯Ό μ‚¬μš©ν•˜λŠ” 가상 λ¨Έμ‹ ).
  • μ΅œμ†Œ 6 GiB의 무료 λ””μŠ€ν¬ 곡간; 더 λ§Žμ€ 곡간이 μ’‹μŠ΅λ‹ˆλ‹€. μ΄μ—λŠ” μ„€μΉ˜ν•΄μ•Ό ν•  νŒ¨ν‚€μ§€λ₯Ό μœ„ν•œ 곡간, μ†ŒμŠ€ μ½”λ“œλ₯Ό μœ„ν•œ λŒ€λž΅ 1 GiB의 곡간 및 λΉŒλ“œμ— μ˜ν•΄ μƒμ„±λœ 객체 파일 및 기타 쀑간 νŒŒμΌμ„ μœ„ν•œ 곡간이 ν¬ν•¨λ©λ‹ˆλ‹€.

λΉŒλ“œ ν™˜κ²½ μ€€λΉ„

asuswrt-merlin을 λΉŒλ“œν•˜κΈ° 전에 νŽŒμ›¨μ–΄λ₯Ό μ»΄νŒŒμΌν•˜λŠ” 데 ν•„μš”ν•œ νŒ¨ν‚€μ§€λ₯Ό μ„€μΉ˜ν•΄μ•Ό ν•©λ‹ˆλ‹€. 터미널 창을 μ—΄κ³  λ‹€μŒμ„ μž…λ ₯ν•˜κ±°λ‚˜ λΆ™μ—¬λ„£μŠ΅λ‹ˆλ‹€:

sudo apt-get --no-install-recommends install autoconf automake bash bison bzip2 diffutils file flex g++ gawk gcc-multilib gettext gperf groff-base libncurses-dev libexpat1-dev libslang2 libssl-dev libtool libxml-parser-perl make patch perl pkg-config python sed shtool tar texinfo unzip zlib1g zlib1g-dev

(νŽΈμ§‘/μ—…λ°μ΄νŠΈ: Debian 7.2 i386μ—μ„œ asuswrt에 λ¬Έμ œκ°€ μžˆμ„ λ•Œ, make에 μ˜ν•΄ 2개의 더 λ§Žμ€ νŒ¨ν‚€μ§€λ₯Ό μ„€μΉ˜ν•΄μ•Ό ν–ˆμŠ΅λ‹ˆλ‹€: intltool, autopoint)

ν”„λ‘œκ·Έλž¨μ„ μ„€μΉ˜ν•˜λ €λ©΄ sudoλ₯Ό μ‚¬μš©ν•˜μ—¬ νŒ¨ν‚€μ§€λ₯Ό μ„€μΉ˜ν•˜λ €λŠ” 것에 λŒ€ν•œ root μ•‘μ„ΈμŠ€λ₯Ό μ–»κΈ° μœ„ν•΄ λΉ„λ°€λ²ˆν˜Έλ₯Ό μž…λ ₯ν•˜μ‹­μ‹œμ˜€. νŒ¨ν‚€μ§€ μ„€μΉ˜λ₯Ό μœ„ν•΄ 'Y'λ₯Ό μž…λ ₯ν•˜μ‹­μ‹œμ˜€. νŒ¨ν‚€μ§€ μ„€μΉ˜κ°€ μ™„λ£Œλ˜λ©΄ λͺ…λ Ή μ€„λ‘œ λŒμ•„κ°‘λ‹ˆλ‹€.

Debian x64 (amd64) μ—λ””μ…˜μ„ μ‚¬μš©ν•˜λŠ” 경우 μΆ”κ°€ νŒ¨ν‚€μ§€ lib32z1-dev 및 lib32stdc++6이 ν•„μš”ν•©λ‹ˆλ‹€.

sudo apt-get --no-install-recommends install lib32z1-dev lib32stdc++6

일뢀 μƒν™©μ—μ„œ automake1.11을 μ„€μΉ˜ν•΄μ•Ό ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€ (Debian 8μ—μ„œ μ„€μΉ˜ν•΄μ•Ό ν–ˆμŠ΅λ‹ˆλ‹€):

sudo apt-get --no-install-recommends install automake1.11

Debian 7λΆ€ν„° amd64λ₯Ό μ‚¬μš©ν•˜λŠ” 경우 멀티아크 gccλ₯Ό μ„€μ •ν•΄μ•Ό ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 32λΉ„νŠΈ 라이브러리 libelf1 / libelf-devλ₯Ό μ–»μœΌλ €λ©΄ νŒ¨ν‚€μ§€ 쒅속성에 i386 μ•„ν‚€ν…μ²˜λ₯Ό μΆ”κ°€ν•΄μ•Ό ν•©λ‹ˆλ‹€. μ΄λ ‡κ²Œ ν•˜λ €λ©΄:```bash sudo dpkg --add-architecture i386 sudo apt-get update sudo apt-get install libelf-dev:i386 libelf1:i386


Debian x64 μ—¬λΆ€λ₯Ό ν™•μ‹ ν•˜μ§€ λͺ»ν•˜λŠ” 경우 λ‹€μŒ λͺ…λ Ή 쀄을 λŒ€μ‹  μ‚¬μš©ν•˜μ‹­μ‹œμ˜€:

```bash
[ "$(uname -m)" == "x86_64" ](/XIYO/asuswrt-merlin.ng-kr/wiki/-"$(uname--m)"-==-"x86_64"-) && sudo apt-get --no-install-recommends install lib32z1-dev lib32stdc++6

μ°Έκ³ : λ‹€μŒ λͺ…λ Ήμ–΄λŠ” μ†ŒμŠ€ μ½”λ“œλ₯Ό 이 GitHubμ—μ„œ μ΅œμ‹  μ†ŒμŠ€ μ½”λ“œ λ‹€μš΄λ‘œλ“œ μœ„ν‚€ κ°€μ΄λ“œμ—μ„œ μ§€μ •ν•œλŒ€λ‘œ ~/asuswrt-merlin/ 디렉토리에 λ‹€μš΄λ‘œλ“œν–ˆλ‹€κ³  κ°€μ •ν•©λ‹ˆλ‹€. μ†ŒμŠ€ μ½”λ“œλ₯Ό λ‹€μš΄λ‘œλ“œν•œ μœ„μΉ˜κ°€ μ•„λ‹Œ 경우, ν™˜κ²½μ— 맞게 λͺ…λ Ήμ–΄/경둜λ₯Ό μ‘°μ •ν•˜μ‹­μ‹œμ˜€.

이제 크둜슀 μ»΄νŒŒμΌμ„ μœ„ν•΄ ν•„μš”ν•œ νˆ΄μ²΄μΈμ„ λΉŒλ“œ μ‹œμŠ€ν…œμ΄ 찾을 수 μžˆλ„λ‘ μ‹œμŠ€ν…œμ˜ PATH ν™˜κ²½ λ³€μˆ˜μ— λ‚΄μš©μ„ μΆ”κ°€ν•΄μ•Ό ν•©λ‹ˆλ‹€. λ¨Όμ € μΆ”κ°€ μž‘μ—…μ„ μ‰½κ²Œ ν•˜κΈ° μœ„ν•΄ 심볼릭 링크λ₯Ό λ§Œλ“€μ–΄ μ‹œμž‘ν•©λ‹ˆλ‹€:

(νŽΈμ§‘/μ—…λ°μ΄νŠΈ: 여기에 ARM νˆ΄μ²΄μΈμ„ 심볼릭 링크둜 μΆ”κ°€ν•˜κ³  내보내기도 ν•΄μ•Ό ν•©λ‹ˆλ‹€. 즉, ARM λΌμš°ν„°κ°€ μžˆλŠ” κ²½μš°μž…λ‹ˆλ‹€.)

sudo ln -s ~/asuswrt-merlin/tools/brcm /opt/brcm

이제 PATH ν™˜κ²½ λ³€μˆ˜λ₯Ό μ—…λ°μ΄νŠΈν•©λ‹ˆλ‹€ (참고둜 이 λͺ…령을 터미널을 μ—΄ λ•Œλ§ˆλ‹€ λ‹€μ‹œ μ‹€ν–‰ν•΄μ•Ό ν•©λ‹ˆλ‹€):

export PATH=$PATH:/opt/brcm/hndtools-mipsel-uclibc/bin

νŽŒμ›¨μ–΄ λΉŒλ“œ: μˆ˜λ™ 방식

이제 νŽŒμ›¨μ–΄λ₯Ό μ»΄νŒŒμΌν•  μ€€λΉ„κ°€ λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 이 ν”„λ‘œμ„ΈμŠ€λŠ” μ‹œκ°„μ΄ 걸릴 수 μžˆμœΌλ―€λ‘œ νŽŒμ›¨μ–΄λ₯Ό λΉŒλ“œν•˜λŠ” λ™μ•ˆ 컀피λ₯Ό λ§ˆμ‹œκ±°λ‚˜ 산책을 ν•˜λ©΄μ„œ 기닀릴 수 μžˆμŠ΅λ‹ˆλ‹€.

λΉŒλ“œκ°€ μ™„λ£Œλ˜λ©΄ μƒˆλ‘œ μƒμ„±λœ νŽŒμ›¨μ–΄ μ΄λ―Έμ§€λŠ” makeλ₯Ό μœ„ν•΄ cdν•œ 폴더에 μœ„μΉ˜ν•©λ‹ˆλ‹€. 즉, λ‹€μŒ 쀑 ν•˜λ‚˜μ˜ 폴더에 μžˆμ„ κ²ƒμž…λ‹ˆλ‹€:

  • ~/asuswrt-merlin/release/src-rt/image/
  • ~/asuswrt-merlin/release/src-rt-6.x/image/
  • ~/asuswrt-merlin/release/src-rt-6.x.4708/image/

RT-N16

cd ~/asuswrt-merlin/release/src-rt
make clean
make rt-n16

RT-N66U 및 RT-AC66U

cd ~/asuswrt-merlin/release/src-rt-6.x
make clean

... 그런 λ‹€μŒ RT-N66U의 경우

make rt-n66u

... 그리고 RT-AC66U의 경우

make rt-ac66u

RT-AC56U 및 RT-AC68U

cd ~/asuswrt-merlin/release/src-rt-6.x.4708
make clean

... 그런 λ‹€μŒ RT-AC56U의 경우

make rt-ac56u

... 그리고 RT-AC68U의 경우

make rt-ac68u

정리

μ½”λ“œκ°€ λ³€κ²½λ˜κ³  μ—…λ°μ΄νŠΈλ˜λ©΄ μ†ŒμŠ€ μ½”λ“œμ˜ 더 μ΅œμ‹  버전을 μ‚¬μš©ν•˜μ—¬ νŽŒμ›¨μ–΄ 이미지λ₯Ό λ‹€μ‹œ μ»΄νŒŒμΌν•˜κ³  싢을 수 μžˆμŠ΅λ‹ˆλ‹€. μƒˆ λΉŒλ“œ 쀑 이전 λΉŒλ“œμ—μ„œ 남은 νŒŒμΌμ„ μ œκ±°ν•˜κ³  μƒˆλ‘œμš΄ λΉŒλ“œ 쀑에 μΆ©λŒμ„ μΌμœΌν‚€μ§€ μ•Šλ„λ‘ λΉŒλ“œ ν™˜κ²½μ„ μ •λ¦¬ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.

μ°Έκ³ : 이미 λΉŒλ“œ λͺ…령어에 make clean이 ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

κ·Έλž˜λ„ 디렉토리λ₯Ό μˆ˜λ™μœΌλ‘œ μ •λ¦¬ν•˜λ €λŠ” 경우 λ‹€μŒ μ ‘κ·Ό 방식을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

RT-N16```bash

make -C ~/asuswrt-merlin/release/src-rt clean

### RT-N66U 및 RT-AC66U
```bash
make -C ~/asuswrt-merlin/release/src-rt-6.x clean

RT-AC56U 및 RT-AC68U

make -C ~/asuswrt-merlin/release/src-rt-6.x.4708 clean

μΆ”κ°€ 정리

μˆ˜λ™μœΌλ‘œ λ³€κ²½ 사항을 λ§Œλ“€μ—ˆκ±°λ‚˜ Git 클둠을 μ›λž˜ μƒνƒœλ‘œ μž¬μ„€μ •ν•˜λ €λŠ” 경우 λ‹€μŒμ„ μ‚¬μš©ν•˜μ‹­μ‹œμ˜€:

git reset --hard

~/asuswrt-merlin 디렉토리 λ‚΄μ—μ„œ μ‹€ν–‰ν•©λ‹ˆλ‹€.

κ²°λ‘ 

μ΄κ²ƒμœΌλ‘œ λλ‚¬μŠ΅λ‹ˆλ‹€! 이 κ°€μ΄λ“œλŠ” asuswrt-merlin μ†ŒμŠ€ μ½”λ“œλ₯Ό λΌμš°ν„°μ— ν”Œλž˜μ‹œν•  수 μžˆλŠ” νŽŒμ›¨μ–΄ μ΄λ―Έμ§€λ‘œ μ»΄νŒŒμΌν•˜λŠ” 데 도움이 λ˜μ—ˆμ„ κ²ƒμž…λ‹ˆλ‹€.

μžλ™ν™”λœ 톡합 슀크립트

μƒνƒœ: 이 μŠ€ν¬λ¦½νŠΈλŠ” Debian 7.8μ—μ„œ ν…ŒμŠ€νŠΈλ˜μ—ˆμœΌλ©° 2015-02-02 ν˜„μž¬λ‘œμ„œ μž‘λ™ν•˜λŠ” κ²ƒμœΌλ‘œ μ•Œλ €μ Έ μžˆμŠ΅λ‹ˆλ‹€.

μ΅œμ‹  버전은 항상 assarbad/build-asuswrt-merlinμ—μ„œ 찾을 수 μžˆμŠ΅λ‹ˆλ‹€. 문제λ₯Ό ν•΄λ‹Ή νŽ˜μ΄μ§€μ—μ„œλ„ λ³΄κ³ ν•˜μ‹­μ‹œμ˜€.

λžœλ”© νŽ˜μ΄μ§€(μœ„μ˜ 링크)μ—μ„œ 슀크립트λ₯Ό μ‚¬μš©ν•˜λŠ” 방법과 μƒνƒœμ— λŒ€ν•œ κ°„λ‹¨ν•œ μ†Œκ°œλ₯Ό 찾을 수 μžˆμŠ΅λ‹ˆλ‹€.