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 Ý: 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 nhanh hay chậm, 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

  • TUN/TAP driver (Kernel module >> Network support)

  • Wireguard VPN

    opkg update
    opkg install luci-proto-wireguard luci-app-wireguard wireguard kmod-wireguard wireguard-tools
    reboot
    
  • [OpenVPN]

    opkg update
    opkg install openvpn-openssl luci-app-openvpn
    reboot