Tự build firmware OpenWrt cho router

 _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------

OpenWRT là firmware tùy chỉnh dành cho một số dòng router được nó hỗ trợ. Thay thế firmware chính hãng cho phép chúng ta thoải mái hơn trong việc cấu hình router, thêm tính năng bằng cách cài đặt các gói hỗ trợ. Tùy theo loại router mà OpenWRT có firmware được build sẵn ở link sau. Bạn chỉ việc tải về và thực hiện theo hướng dẫn để up firmware cho router của mình. Tuy nhiên có những router đang trong giai đoạn thử nghiệm thì có thể bạn sẽ chẳng tìm thấy firmware được build sẵn hoặc đơn giản bạn muốn thêm các gói cài đặt vào thẳng firmware cho tiện vọc vạch thì tự build một bản firmware cho mình là cách tốt nhất.

Việc tự build firmware cũng khá dễ dàng tuy nhiên nó có thể làm lúng túng cho những người mới bắt đầu. Do đó bài viết này giúp bạn tránh được những bỡ ngỡ khi build firmware cho OpenWRT.

Để build firmware bạn cần có máy ảo chạy Linux và cài đặt thêm các gói hỗ trợ. Bạn có thể cài đặt và kích hoạt Linux Subsystem (WSL) trên Windows 10 để tiến hành build firware mà không cần phải cài đặt thêm máy ảo.

Về cơ bản để build một firmware OpenWRT bạn cần thực hiện những việc sau:

LƯU Ý QUAN TRỌNG : Không chạy các câu lệnh dưới user root

Cài đặt các gói hỗ trợ để build OpenWRT

Update

sudo apt update && sudo apt upgrade -y

Kiểm tra phiên bản Linux để thêm các gói hỗ trợ nếu bạn không biết đang sử dụng phiên bản Linux nào bằng câu lệnh:

lsb_release -a

Kết quả trông như sau:

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.5 LTS
Release:        18.04
Codename:       bionic

Tùy thuộc vào bản Linux mà các gói hỗ trợ các nhau, có thể xem đầy đủ tại đây

Ở ví dụ này tôi sử dụng distro Ubuntu 18.04 LTS, do đó cài đặt các gói hỗ trợ bằng câu lệnh:

sudo apt-get install subversion build-essential libncurses5-dev zlib1g-dev gawk git ccache gettext libssl-dev xsltproc zip python

Lưu ý Python 2 được thêm vào câu lệnh để cài đặt vì nó cần thiết.

Tải mã nguồn OpenWRT và build

  • Tải source Openwrt chuyển đến thư mục openwrt
git clone https://github.com/openwrt/openwrt.git
cd openwrt
  • Kiểm tra nhánh có trên git và checkout nhánh cần build
git branch -a
git checkout openwrt-19.07

Cập nhật các gói mới nhất

./scripts/feeds update -a
./scripts/feeds install -a

Nếu báo lỗi ở các câu lệnh này bạn cần cài đặt thêm các gói còn thiếu và chạy lại lệnh.

  • Cấu hình và build firmware
make menuconfig
Bảng cấu hình firmware openwrt trước khi build

Bảng cấu hình firmware openwrt trước khi build

Tích hợp Luci vào firmware

Tích hợp Luci vào firmware

Lưu thiết lập cấu hình build firmware

Lưu thiết lập cấu hình build firmware

Sau khi lưu file cấu hình, gõ make để bắt đầu build firmware. Tuỳ cấu hình máy mạnh hay yếu, bạn có thể mất đến vài giờ đồng hồ để build một bản firmware cho lần chạy đầu tiên. Đến lần thứ 2 thì tốc độ build sẽ nhanh hơn do giảm được công đoạn build tool để build firmware.

Sau khi build xong firmware sẽ nằm ở thư mục bin. Trong đó, file sysupgrade là để dùng thông qua giao diện web admin, file factory để cài firmware thông qua cáp serial.

Các gói đề xuất tích hợp vào firmware

Để tích hợp các gói hỗ trợ Wireguard bạn trong menuconfig bạn theo các đường dẫn như bên dưới:

luci-proto-wireguard  (LuCI >> Protocols)
luci-app-wireguard (LuCI >> Application)
kmod-wireguard (Kernel module >> Network support)
wireguard-tools (Network >> VPN)

Lưu ý: Từ phiên bản OpenWRT dưới 21.02 bạn không cần cài đặt gói wireugard.

Nếu sử dụng dòng lệnh cài sau khi đã build firmware:

opkg update
opkg install luci-app-wireguard luci-proto-wireguard kmod-wireguard wireguard-tools wireguard
reboot
  • [OpenVPN]
opkg update
opkg install openvpn-openssl luci-app-openvpn
reboot
  • TUN/TAP driver (Kernel module » Network support)