Compile Firmware from source - XIYO/asuswrt-merlin.ng-kr GitHub Wiki
Asuswrt-merlin λΉλ λ°©λ²
μν: νμ¬ μΆμ²νλ λΉλ μμ€ν μ Ubuntu 20.04 LTSμ΄λ©°, μ΄ λ¬Έμλ κ·Έμ λ§κ² μ‘°μ λμμ΅λλ€. λ€λ₯Έ 리λ μ€ λ²μ μμμ λΉλμ λν λ¬Έμλ 보쑴λμ΄ μμ§λ§, μλ§λ ꡬμλμ κ²μ΄λ©° κ·Έλ κ² νμλ κ²μ λλ€.
λΉλμ© κ°μ λ¨Έμ μ€μ νκΈ°
μλμ° 10 (2004 λ²μ μ΄μ)
μλμ° 10 λ²μ 2004 μ΄μμμ λΉλμ© κ°μ λ¨Έμ μ μ€μ νλ κ°μ₯ μ¬μ΄ λ°©λ²μ Windows Subsystem for Linux (WSL2)μ μ¬μ©νλ κ²μ λλ€. λΉλ VMμ© WSLμ ꡬμ±νλ λ°©λ²μ λν μ§μΉ¨μ WSL2 μλμμ λΉλ VM μ€μ νκΈ°λ₯Ό μ°Έμ‘°νμΈμ.
리λ μ€, MacOS, μ€λλ μλμ°
리λ μ€ μμ€ν , MacOS, μ€λλ μλμ° λ²μ μμλ Canonicalμ Multipassλ₯Ό μ¬μ©νμ¬ λΉλμ© κ°μ λ¨Έμ μ μ€μ νλ κ²μ΄ κ°μ₯ μ½μ΅λλ€. Multipass μλμμ λΉλ VM μ€μ νκΈ°λ₯Ό μ°Έμ‘°νμΈμ.
λΉλ VMμΌλ‘μμ Docker 컨ν μ΄λ
λ μΆμνλ λΉλλ₯Ό μ νΈνκ³ λΉλ VM μ€μ μ λ€λ₯Έ μ¬λμκ² λ§‘κΈ°κ³ μΆμ μ¬λλ€μ μν΄, GNUTonμ λͺ¨λ λκ΅¬κ° μ΄λ―Έ μ€μ λ Docker 컨ν μ΄λλ₯Ό λ§λ€κ³ μ μ§ κ΄λ¦¬νκ³ μμ΅λλ€. μ΄λ₯Ό μ¬μ©νλ κ²½μ°, 리λ μ€ νκ²½ μ€μ μ λͺ¨λ λ¨κ³λ₯Ό 건λλ°κ³ λ°λ‘ μ»΄νμΌλ‘ λμ΄κ° μ μμ΅λλ€. μμΈν λ΄μ©μ Dockerμμ λΉλ VM μ€μ νκΈ°μμ GNUTonμ μμ λ§ν¬λ₯Ό μ°Έμ‘°νμΈμ.
λ§₯ μ¬μ©μλ₯Ό μν μ£Όμ μ¬ν: 컀λ μμ€λ λΉλλ₯Ό μν΄ λμλ¬Έμ κ΅¬λΆ νμΌ μμ€ν
μ΄ νμν©λλ€! Docker 컨ν
μ΄λλ₯Ό λΉλμ μ¬μ©νλ κ²½μ°, μμ€ν
νμΌ μμ€ν
μ λμλ¬Έμ ꡬλΆ(λλΆλΆ λμλ¬Έμ ꡬλΆμ΄ μ λ¨)μ μμν©λλ€. κ°μ₯ μ¬μ΄ ν΄κ²°μ±
μ λμ€ν¬ μ΄λ―Έμ§ νμΌμ μμ±νλ κ²μ
λλ€(λμ€ν¬ μ νΈλ¦¬ν° μ¬μ©, μ μ΄λ―Έμ§ -> λΉ μ΄λ―Έμ§, ν¬λ§· μ΅μ
μ λμλ¬Έμ κ΅¬λΆ νμμΌλ‘ μ€μ νκ³ μ΄λ―Έμ§μ μ½ 10GB μ λλ₯Ό ν λΉ). μ΄λ―Έμ§λ₯Ό μμ±νκ³ λ§μ΄νΈνμΈμ(/Volumes
μλμ λ§μ΄νΈλ κ²μ), κ·Έλ° λ€μ git μ μ₯μλ₯Ό κ·Έ λ§μ΄νΈλ λ³Όλ₯¨μ 볡μ νκ³ , 컨ν
μ΄λ λ΄ /build
μ λμλ¬Έμ κ΅¬λΆ λ ν¬μ§ν 리λ₯Ό λ°μΈλ λ§μ΄νΈνκΈ° μν΄ ν΄λΉ μμΉμμ λ컀 λΉλ 컨ν
μ΄λλ₯Ό μ€νν©λλ€.
λ€λ₯Έ 리λ μ€ λ²μ μμμ λ€μ΄ν°λΈ λΉλ
Multipassλ₯Ό μ¬μ©νμ¬ λΉλ VMμ μμ±νλ κ²μ΄ 리λ μ€ μμ€ν μμ μ§μ λΉλνλ κ²λ³΄λ€ ν¨μ¬ κΆμ₯λ©λλ€. νμ§λ§, 리λ μ€ μμ€ν μμ λ€μ΄ν°λΈλ‘ λΉλνλ λ° κ΄μ¬μ΄ μλ μ¬λλ€μ μλ λ¨κ³λ₯Ό λ°λ₯΄λ κ²μ΄ μ’μ΅λλ€(리λ μ€μ νΉμ λ²μ μ λ§κ² μ‘°μ ). μ΄ Wiki
μ λ€λ₯Έ κ³³μμ μ°Ύμ μ μλ ꡬμλμ λ¬Έμ보λ€λ μ΄ λ°©λ²μ λ°λ₯΄μΈμ.
리λ μ€ νκ²½ μ€μ νκΈ°
λλ¨Έμ§λ μ€μ 리λ μ€ VMμμ ν κ²κ³Ό λμΌν©λλ€: λꡬ 체μΈμ 볡μ¬λ³Έμ μ»κ³ , μ€μ ν λ€μ, μμ€ μ½λμ 볡μ¬λ³Έμ μ»κ³ , λΉλλ₯Ό μμν©λλ€.
λͺ¨λ μμ μ μΈμ€ν΄μ€ λ΄λΆμμ μνν΄μΌ ν©λλ€.
λ¨Όμ , λꡬ 체μΈμ νμν 32λΉνΈ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ§μνλλ‘ μ€μ ν΄μΌ ν©λλ€. λ€μμ μ€ννμμμ€:
sudo dpkg --add-architecture i386
i386 μν€ν μ²κ° λ¨κ³μ μΌλ‘ νμ§λλ©΄μ, μ μ΄λ ARM μμ€ν μμλ λͺ κ°μ§ μΆκ° λ¨κ³κ° νμν©λλ€.
μ΄ νμ΄μ§μμ: https://askubuntu.com/questions/1211022/how-to-install-i386-amd64-packages-on-arm-or-any-other-arch-from-ubuntu-ports
# 'deb'λ₯Ό 'deb [arch=arm64]'λ‘ λ체
sudo sed 's/^deb http/deb [arch=arm64] http/' -i '/etc/apt/sources.list'
x86 λ―Έλ¬ μλ²κ° μλ /etc/apt/sources.list.d/i386.listμ κ°μ νμΌμ μΆκ°ν©λλ€:
sudo tee -a /etc/apt/sources.list.d/i386.list > /dev/null <<EOT
deb [arch=i386] http://security.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse
deb [arch=i386] http://archive.ubuntu.com/ubuntu/ focal main restricted universe multiverse
deb [arch=i386] http://archive.ubuntu.com/ubuntu/ focal-updates main restricted universe multiverse
deb [arch=i386] http://archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse
EOT
λν, κΈ°λ³Έ μ Έ(/bin/sh)μ dashμμ bashλ‘ λ³κ²½ν΄μΌ ν©λλ€. μ΄λ Broadcomμ HND κΈ°λ° λͺ¨λΈμ μ¬μ©λλ μλ‘μ΄ λΉλ μμ€ν μ μν΄ νμν©λλ€. λ€μ λͺ λ Ήμ μ€ννκ³ , λ¬Όμ΄λ³΄λ©΄ Dashλ₯Ό μ¬μ©νμ§ μλλ‘ μ νν©λλ€:
sudo dpkg-reconfigure dash
μ΄μ νμν λͺ¨λ ν¨ν€μ§λ₯Ό μ€μΉν μ μμ΅λλ€. νμ¨μ΄ μ½λμ μλ‘μ΄ κ΅¬μ± μμκ° μΆκ°λ¨μ λ°λΌ μ΄ λͺ©λ‘μ μκ°μ΄ μ§λ¨μ λ°λΌ λ³κ²½λ μ μμ΅λλ€.
sudo apt update
sudo apt-get install libtool-bin cmake libproxy-dev uuid-dev liblzo2-dev autoconf autoconf-archive automake bash bison \
bzip2 diffutils file flex m4 g++ gawk groff-base libncurses5-dev libtool libslang2 make patch perl pkg-config shtool \
subversion tar texinfo zlib1g zlib1g-dev git gettext libexpat1-dev libssl-dev cvs gperf unzip \
python libxml-parser-perl gcc-multilib gconf-editor libxml2-dev g++-multilib gitk libncurses5 mtd-utils \
libncurses5-dev libvorbis-dev git autopoint autogen automake-1.15 sed build-essential intltool libglib2.0-dev \
xutils-dev lib32z1-dev lib32stdc++6 xsltproc gtk-doc-tools libelf1:i386
μ΄μ RMerlinμ μ΄μ¬ν μμ ν λ΄μ©μ λ€μ΄λ‘λν μκ°μ λλ€.
μ°Έκ³ : GitHubμμ μ΅μ μμ€ μ½λλ₯Ό λ€μ΄λ‘λνλ λ°©λ²μ λν λ§€μ° μμΈν μλ΄λ μ΄ Wiki νμ΄μ§μμ μ°Ύμ μ μμ΅λλ€.
cd $HOME
git clone https://github.com/RMerl/am-toolchains
git clone https://github.com/RMerl/asuswrt-merlin.ng
ν΄λ‘ ν μ μ₯μμμ μ§μ μ»΄νμΌνμ§ μκ³ λ³΅μ¬λ³Έμμ μμ νλ κ²μ΄ μ’μ΅λλ€. μ΄λ κ² νλ©΄ κΉ¨λν 볡μ¬λ³Έκ³Ό λ€μ λκΈ°νν¨μΌλ‘μ¨ μ½κ² μ 리ν μ μμ΅λλ€.
mkdir amng-build
rsync -a --del asuswrt-merlin.ng/ amng-build
μ΄μ λꡬ 체μΈμ μ€μ ν΄μΌ ν©λλ€.
λΈλ‘λμ»΄ HND ARM νλ«νΌ (RT-AC86U, GT-AC2900):
sudo ln -s ~/am-toolchains/brcm-arm-hnd /opt/toolchains
echo "export LD_LIBRARY_PATH=\$LD_LIBRARY:/opt/toolchains/crosstools-arm-gcc-5.3-linux-4.1-glibc-2.22-binutils-2.25/usr/lib" >> ~/.profile
echo "export TOOLCHAIN_BASE=/opt/toolchains" >> ~/.profile
echo "PATH=\$PATH:/opt/toolchains/crosstools-arm-gcc-5.3-linux-4.1-glibc-2.22-binutils-2.25/usr/bin" >> ~/.profile
echo "PATH=\$PATH:/opt/toolchains/crosstools-aarch64-gcc-5.3-linux-4.1-glibc-2.22-binutils-2.25/usr/bin" >> ~/.profile
λΈλ‘λμ»΄ HND AX ARM νλ«νΌ (RT-AX56U, RT-AX58U, RT-AX86U, RT-AX88U, GT-AX11000, RT-AX68U):
sudo ln -s ~/am-toolchains/brcm-arm-hnd /opt/toolchains
echo "export LD_LIBRARY_PATH=\$LD_LIBRARY:/opt/toolchains/crosstools-arm-gcc-5.5-linux-4.1-glibc-2.26-binutils-2.28.1/usr/lib" >> ~/.profile
echo "export TOOLCHAIN_BASE=/opt/toolchains" >> ~/.profile
echo "PATH=\$PATH:/opt/toolchains/crosstools-arm-gcc-5.5-linux-4.1-glibc-2.26-binutils-2.28.1/usr/bin" >> ~/.profile
echo "PATH=\$PATH:/opt/toolchains/crosstools-aarch64-gcc-5.5-linux-4.1-glibc-2.26-binutils-2.28.1/usr/bin" >> ~/.profile
λΈλ‘λμ»΄ SDK6/SDK7 ARM νλ«νΌ (RT-AC68U, RT-AC88U, RT-AC3100, RT-AC5300):
sudo ln -s ~/am-toolchains/brcm-arm-sdk/hndtools-arm-linux-2.6.36-uclibc-4.5.3 /opt/brcm-arm
ln -s ~/am-toolchains/brcm-arm-sdk ~/amng-build/release/src-rt-6.x.4708/toolchains
echo "PATH=\$PATH:/opt/brcm-arm/bin" >> ~/.profile
amng-build
ν΄λ λ΄μμ μ»΄νμΌμ μν μ€μ μ΄ μλ£λμμ΅λλ€.
RT-AC68U νμ¨μ΄
cd ~/amng-build/release/src-rt-6.x.4708
make rt-ac68u
RT-AC88U νμ¨μ΄
cd ~/amng-build/release/src-rt-7.14.114.x/src
make rt-ac88u
RT-AC3100 νμ¨μ΄
cd ~/amng-build/release/src-rt-7.14.114.x/src
make rt-ac3100
RT-AC5300 νμ¨μ΄
cd ~/amng-build/release/src-rt-7.14.114.x/src
make rt-ac5300
RT-AC86U νμ¨μ΄
cd ~/amng-build/release/src-rt-5.02hnd
make rt-ac86u
RT-AX56U νμ¨μ΄
cd ~/amng-build/release/src-rt-5.02axhnd.675x
make rt-ax56u
RT-AX58U νμ¨μ΄
cd ~/amng-build/release/src-
rt-5.02axhnd.675x
make rt-ax58u
RT-AX86U νμ¨μ΄
cd ~/amng-build/release/src-rt-5.02L.07p2axhnd
make rt-ax86u
RT-AX88U νμ¨μ΄
cd ~/amng-build/release/src-rt-5.02axhnd
make rt-ax88u
GT-AC2900 νμ¨μ΄
cd ~/amng-build/release/src-rt-5.02hnd
make gt-ac2900
GT-AX11000 νμ¨μ΄
cd ~/amng-build/release/src-rt-5.02axhnd
make gt-ax11000
RT-AX68U νμ¨μ΄
cd ~/amng-build/release/src-rt-5.02L.07p2axhnd
make rt-ax68u