Openwrt Image Builder: Buat Firmware Openwrt Tanpa Perlu Compile

Radenku.com – Kali ini aku buat post cara build firmware openwrt menggunakan openwrt image builder. Karena berhubung openwrt 21.02.2 sudah release jadi waktunya upgrade firmware openwrt.

Jadi sekalian aja aku buat tutorialnya ini, build firmware ini tidak perlu compile openwrt dari source, jika butuh ipk custom bisa diambil dari custom feeds My Opkg Repo. Jadi tidak perlu butuh waktu yang lama & caranya juga tidak sulit silakan baca tutorialnya dibawah.

Openwrt Imagebuilder

Apa itu Openwrt Image Builder? Openwrt Image Builder (sebelumnya dikenal Image Genarator) adalah pre-compiled environment untuk membuat custom image tanpa perlu compile dari source. Openwrt image builder akan mendownload pre-compiled package dan mengintegrasikan ke satu image.

Dibandingkan dengan compile openwrt dari source, membuat firmware openwrt menggunakan openwrt builder jauh lebih cepat, hanya butuh waktu kurang dari 15 menit. Karena dengan imagebuilder openwrt tidak perlu compile package lagi.

Jika kalian membutuhkan ipk custom yang akan dimasukkan ke image firmware harus di buat / compile terlebih dahulu menggunakan openwrt SDK.

Persiapan Menggunakan Image Builder

Sebelum openwrt build image yang harus disiapkan

  • Linux
  • Koneksi internet

Untuk menggunakan openwrt-imagebuilder kita harus menggunakan OS linux. Jika kalian menggunakan windows tinggal install linux di windows menggunakan Virtualbox, jadi OS linux bisa berjalan diatas windows, tanpa menghapus OS windows.

Tinggal sesuaikan distro yang akan kalian pakai, rekomendasi untuk yang baru belajar linux bisa menggunakan linux mint karena masih turunan ubuntu dan ramah dengan user yang baru di linux.

Setelah OS linux sudah terinstall, pertama update terlebih dahulu

sudo apt update && sudo apt upgrade -y

Baru install dahulu dependencies untuk image builder openwrt

sudo apt install build-essential libncurses5-dev libncursesw5-dev \
zlib1g-dev gawk git gettext libssl-dev xsltproc rsync wget unzip python

Untuk distro selain ubuntu/debian install dependenciesnya bisa cek di bawah

https://openwrt.org/docs/guide-user/additional-software/imagebuilder

Cara Menggunakan Image Builder openwrt

Untuk cara menggunakan openwrt image builder, kita download image buildernya dari https://downloads.openwrt.org/. Download image builder sesuaikan versi firmware & target cpu arsitektur router yang akan kita buat imagenya.

Jika sudah terdownload, tinggal extract saja, setelah di extract file didalamnya seperti ini.

compile openwrt image builder
  • bin: hasil dari image builder nantinya akan ada disini
  • files: untuk memasukkan file kedalam firmware bisa taruh disini
  • packages: jika mempunyai package ipk yang akan dimasukkan ke image
  • repositories.conf: jika menggunakan custom feeds seperti My Opkg Repo bisa di masukkan
  • .config: mengedit confignya, untuk memperbesar ukuran firmware/rootfs bisa disetting disini

Untuk build image openwrt dengan image builder menggunakan perintah seperti ini. Untuk input command harus menggunakan user non-root, tidak boleh menggunakan sudo atau user root.

make image \
PROFILE="profile-name" \
PACKAGES="pkg1 pkg2 pkg3 -pkg4 -pkg5 -pkg6" \
FILES="files"

Yang perlu diperhatikan yaitu PROFILE, PACKAGES & FILES

PROFILE

Untuk profile bisa di cek dari buildroot menggunakan command make info

neo@neo-Ubuntu:~/openwrt-imagebuilder-21.02.2-rockchip-armv8.Linux-x86_64$ make info
Current Target: "rockchip/armv8"
Current Revision: "r16495-bf0c965af0"
Default Packages: base-files ca-bundle dropbear fstools libc libgcc libustream-wolfssl logd mtd netifd opkg uci uclient-fetch urandom-seed urngd busybox procd uboot-envtools partx-utils e2fsprogs mkf2fs kmod-gpio-button-hotplug dnsmasq firewall ip6tables iptables kmod-ipt-offload odhcp6c odhcpd-ipv6only ppp ppp-mod-pppoe
Available Profiles:

friendlyarm_nanopi-r2s:
    FriendlyARM NanoPi R2S
    Packages: kmod-usb-net-rtl8152
    hasImageMetadata: 1
    SupportedDevices: friendlyarm,nanopi-r2s
pine64_rockpro64:
    Pine64 RockPro64
    Packages: 
    hasImageMetadata: 1
    SupportedDevices: pine64,rockpro64
radxa_rock-pi-4:
    Radxa ROCK Pi 4
    Packages: 
    hasImageMetadata: 1
    SupportedDevices: radxa,rockpi4

Karena kita akan membuat image untuk Nanopi R2S maka profilnya diisi seperti ini

make image \
PROFILE="friendlyarm_nanopi-r2s" \
PACKAGES="pkg1 pkg2 pkg3 -pkg4 -pkg5 -pkg6" \
FILES="files"

PACKAGES

Package yang akan kita include kedalam firmware tinggal kita tuliskan saja, jika kita ingin tidak perlu dimasukkan maka tinggal kasih tanda minus “-” didepan packagenya.

Contoh disini firmware akan include luci, luci-theme-material, dnsmasq-full sedangkan dnsmasq tidak akan dimasukkan ke firmware.

make image \
PROFILE="friendlyarm_nanopi-r2s" \
PACKAGES="luci luci-theme-material dnsmasq-full -dnsmasq" \
FILES="files"

Jika kalian mempunyai custom file ipk yang akan dimasukkan ke dalam firmware maka tinggal di taruh di folder packages.

FILES

Untuk file yang akan kita include di firmware maka bisa taruh di folder files, defaultnya tidak ada folder ini, tinggal kita buat saja.

Jika ingin membuat script yang berjalan pada saat router boot bisa taruh di scriptnya di files/etc/uci-defaults/

Contoh file simpelnya, untuk mengatur time zone ke Jakarta, tinggal buat file dengan nama 99-init-settings.sh, jika script diakhiri exit 0, maka script hanya akan dijalankan saat pertama boot lalu akan dihapus.

#!/bin/sh

# Set Timezone to Asia/Jakarta
uci set system.@system[0].timezone='WIB-7'
uci set system.@system[0].zonename='Asia/Jakarta'
uci commit

exit 0

Untuk memasukkan file lain misalnya seperti openclash core, maka file core bisa ditaruh di files/etc/openclash/core

Build Openwrt Image Nanopi R2S

Disini aku akan build openwrt 21.02.2 FriendlyArm Nanopi R2S. Pertama langsung download image buildernya dari https://downloads.openwrt.org/ di targets rockchip 21.02.2 , disini aku menggunakan terminal, bisa pula download dan extract seperti biasa seperti file explorer.

1. Download Imagebuilder Rockchip 21.02.2.

wget --no-check-certificate https://downloads.openwrt.org/releases/21.02.2/targets/rockchip/armv8/openwrt-imagebuilder-21.02.2-rockchip-armv8.Linux-x86_64.tar.xz

2. Setelah kita download openwrt image builder, tinggal extract image buildernya.

tar -J -x -f openwrt-imagebuilder-*.tar.xz

3. Masuk ke buildroot image builder.

cd openwrt-imagebuilder-*/

4. Pertama-tama kita cek terlebih dahulu profile yang ada di image builder tersebut menggunakan perintah:

make info
neo@neo-Ubuntu:~/openwrt-imagebuilder-21.02.2-rockchip-armv8.Linux-x86_64$ make info
Current Target: "rockchip/armv8"
Current Revision: "r16495-bf0c965af0"
Default Packages: base-files ca-bundle dropbear fstools libc libgcc libustream-wolfssl logd mtd netifd opkg uci uclient-fetch urandom-seed urngd busybox procd uboot-envtools partx-utils e2fsprogs mkf2fs kmod-gpio-button-hotplug dnsmasq firewall ip6tables iptables kmod-ipt-offload odhcp6c odhcpd-ipv6only ppp ppp-mod-pppoe
Available Profiles:

friendlyarm_nanopi-r2s:
    FriendlyARM NanoPi R2S
    Packages: kmod-usb-net-rtl8152
    hasImageMetadata: 1
    SupportedDevices: friendlyarm,nanopi-r2s
pine64_rockpro64:
    Pine64 RockPro64
    Packages: 
    hasImageMetadata: 1
    SupportedDevices: pine64,rockpro64
radxa_rock-pi-4:
    Radxa ROCK Pi 4
    Packages: 
    hasImageMetadata: 1
    SupportedDevices: radxa,rockpi4

5. Karena kita akan build firmware openwrt Nanopi R2S maka profile yang akan kita pakai yaitu friendlyarm_nanopi-r2s

6. Jika kalian ingin memasukkan custom file ipk seperti passwall, openclash, modemband, modeminfo dll, maka bisa taruh file ipknya di folder packages.

Karena aku disini custom ipk mau menggunakan custom feeds My Opkg Repo, maka tinggal edit file repositories.conf, tambahkan My Opkg Repo dan juga disable option check_signature.

## Place your custom repositories here, they must match the architecture and version.
# src/gz %n https://downloads.openwrt.org/releases/21.02.2
# src custom file:///usr/src/openwrt/bin/rockchip/packages

## Remote package repositories
src/gz openwrt_core https://downloads.openwrt.org/releases/21.02.2/targets/rockchip/armv8/packages
src/gz openwrt_base https://downloads.openwrt.org/releases/21.02.2/packages/aarch64_generic/base
src/gz openwrt_luci https://downloads.openwrt.org/releases/21.02.2/packages/aarch64_generic/luci
src/gz openwrt_packages https://downloads.openwrt.org/releases/21.02.2/packages/aarch64_generic/packages
src/gz openwrt_routing https://downloads.openwrt.org/releases/21.02.2/packages/aarch64_generic/routing
src/gz openwrt_telephony https://downloads.openwrt.org/releases/21.02.2/packages/aarch64_generic/telephony

src/gz custom_generic https://raw.githubusercontent.com/lrdrdn/my-opkg-repo/main/generic
src/gz custom_arch https://raw.githubusercontent.com/lrdrdn/my-opkg-repo/main/aarch64_generic

## This is the local package repository, do not remove!
src imagebuilder file:packages

# option check_signature

7. Untuk mengubah size partisi bisa edit file .config, disini partisi kernel aku ubah 128MB dan ROOTFS 2048MB

# Image Options
#
CONFIG_TARGET_KERNEL_PARTSIZE=128
CONFIG_TARGET_ROOTFS_PARTSIZE=2048
# end of Target Images

8. Untuk yang ingin menambahkan script tinggal buat folder uci-default.

mkdir -p files/etc/uci-defaults

9. Buat file 99-init-settings.sh dengan ini dibawah dan taruh di folder uci-defaults. Contoh script seperti berikut, silakan buat custom script kalian sendiri.

#!/bin/sh

# Disable opkg signature check
sed -i 's/option check_signature/# option check_signature/g' /etc/opkg.conf

# Set Timezone to Asia/Jakarta
uci set system.@system[0].timezone='WIB-7'
uci set system.@system[0].zonename='Asia/Jakarta'
uci commit

# Set argon as default theme
uci set argon.@global[0].mode='light'
uci set luci.main.mediaurlbase='/luci-static/argon'
uci commit

# Disable /etc/config/xmm-modem
uci set xmm-modem.@xmm-modem[0].enable='0'
uci commit

# Remove watchcat default config
uci delete watchcat.@watchcat[0]
uci commit

# add cron job for modem rakitan
echo '#auto renew ip lease for modem rakitan' >> /etc/crontabs/root
echo '#30 3 * * * echo AT+CFUN=4 | atinout - /dev/ttyUSB1 - && ifdown mm && sleep 3 && ifup mm' >> /etc/crontabs/root
echo '#30 3 * * * ifdown fibocom && sleep 3 && ifup fibocom' >> /etc/crontabs/root
/etc/init.d/cron restart

# remove huawei me909s usb-modeswitch
sed -i -e '/12d1:15c1/,+5d' /etc/usb-mode.json

# remove dw5821e usb-modeswitch
sed -i -e '/413c:81d7/,+5d' /etc/usb-mode.json

exit 0

10. Build firmware Nanopi R2S dengan mage builder.

Ketika semuanya sudah siap maka tinggal buat build imagenya. Packagenya tinggal sesuaikan dengan kebutuhan kalian. Disini aku build dengan dukungan driver modem, dan beberapa tools seperti passwall dan openclash.

make image PROFILE="friendlyarm_nanopi-r2s" \
PACKAGES="-dnsmasq dnsmasq-full cgi-io libiwinfo libiwinfo-data libiwinfo-lua liblua \
liblucihttp liblucihttp-lua libubus-lua lua luci luci-app-firewall luci-app-opkg \
luci-base luci-lib-base luci-lib-ip luci-lib-jsonc luci-lib-nixio luci-mod-admin-full \
luci-mod-network luci-mod-status luci-mod-system luci-proto-ipv6 luci-proto-ppp luci-ssl \
luci-theme-bootstrap px5g-wolfssl rpcd rpcd-mod-file rpcd-mod-iwinfo rpcd-mod-luci \
rpcd-mod-rrdns uhttpd uhttpd-mod-ubus usbutils usb-storage htop \
kmod-usb-net kmod-usb-net-huawei-cdc-ncm kmod-usb-net-cdc-ether kmod-usb-acm kmod-usb-net-qmi-wwan \
kmod-usb-net-rndis kmod-usb-serial-qualcomm kmod-usb-net-sierrawireless kmod-usb-ohci kmod-usb-serial \
kmod-nls-utf8 kmod-usb-serial-option kmod-usb-serial-sierrawireless kmod-usb-uhci kmod-usb2 \
kmod-usb-net-ipheth kmod-usb-net-cdc-mbim usbmuxd libusbmuxd-utils libimobiledevice-utils \
mbim-utils qmi-utils uqmi umbim modemmanager luci-proto-modemmanager luci-proto-3g luci-proto-ncm \
luci-proto-ncm usb-modeswitch nano picocom minicom wget luci-app-mmconfig luci-app-modeminfo \
xmm-modem kmod-usb-net-asix kmod-usb-net-asix-ax88179 kmod-usb-net-rtl8150 kmod-usb-net-rtl8152 \
luci-app-3ginfo luci-app-sms-tool ca-bundle ca-certificates luci-compat curl luci-app-watchcat \
luci-app-poweroff luci-app-ramfree luci-app-internet-detector atinout luci-app-openclash \
luci-app-passwall luci-app-ssr-plus luci-app-argon-config luci-app-diskman luci-theme-argon \
v2ray-example v2ray-extra v2ray-geoip v2ray-geosite v2ray-ctl v2ray-plugin xray-plugin" \
FILES="files"
openwrt-image-builder-r2s

11. Setelah selesai build image hasilnya ada di folder bin/target

build image openwrt using image builder nanopi r2s | Radenku

12. Flash image ke micro SD dan pasangkan ke Nanopi R2S.

nanopi openwrt 21.02.2 image build firmware

Begitulah cara membuat firmware openwrt menggunakan openwrt image builder. Untuk router STB Amlogic seperti HG680P, B860H, A95X menggunakan targer armvirt dan ada step tambahan yaitu harus di repack menggunakan ophub.

Semoga tutorial ini mudah pahami untuk semua orang. Silakan bagikan postingan ini jika bermanfaat.

18 pemikiran pada “Openwrt Image Builder: Buat Firmware Openwrt Tanpa Perlu Compile”

Tinggalkan komentar