
OpenWrt - image builder
Vlastní kompilace obrazu OpenWrt pro OrangePi R1 Plus LTS a OrangePi R1 Plus.
Image builder má výhodu v tom že nemusíme kompilovat cely zdrojový kód pro zařízení, vybereme si před kompilovaný balíček který pak pomocí Image builderu upravíme k obrazu svému.
Stránka na OpenWrt zde https://openwrt.org/docs/guide-user/additional-software/imagebuilder
Druhý způsob vytvoření image pro zařízení je použití firmware selectoru na stránkách OpenWrt, u kterého nemusíte nic instalovat na svůj pc a kompilace proběhne na serveru OpenWrt. Nemůžete ale upravovat některé parametry. Dají se tam jen přidat balíčky a postinstalační skript. Stránka zde https://firmware-selector.openwrt.org
Pro kompilaci potřebujeme tyhle balíčky ( u mě na Debianu).
sudo apt install build-essential libncurses-dev zlib1g-dev gawk git \ gettext libssl-dev xsltproc rsync wget unzip python3 python3-distutils zstd
Stáhneme si před připravený image soubor ze stránky https://downloads.openwrt.org/releases/24.10.0/targets/rockchip/armv8/ je dole a jmenuje se openwrt-imagebuilder-xxxxx.tar,zst .
Rozbalíme a přejdeme do něj.
tar --zstd -xvf openwrt-imagebuilder-*
cd openwrt-imagebuilder-*/
Zde si vytvořím soubor buildr1lts.sh a dám mu právo spuštění
touch buildr1lts.sh
chmod +x buildr1lts.sh
A vložíme do něj pro OrangePi R1 Plus LTS.
# Zmenime vychozi velikost img obrazu
sed -i -e 's/CONFIG_TARGET_ROOTFS_PARTSIZE=.*/CONFIG_TARGET_ROOTFS_PARTSIZE=2048/' .config
make image \
PROFILE="xunlong_orangepi-r1-plus-lts" \
PACKAGES="base-files ca-bundle dnsmasq dropbear e2fsprogs firewall4 fstools kmod-gpio-button-hotplug kmod-nft-offload \
libc libgcc libustream-mbedtls logd mkf2fs mtd netifd nftables odhcp6c odhcpd-ipv6only opkg partx-utils ppp \
ppp-mod-pppoe procd-ujail uboot-envtools uci uclient-fetch urandom-seed urngd kmod-usb-net-rtl8152 luci \
luci-i18n-base-cs luci-i18n-adblock-cs banip luci-app-banip luci-i18n-banip-cs luci-app-nlbwmon \
luci-i18n-nlbwmon-cs luci-app-sqm luci-i18n-sqm-cs mc nano mosquitto-client-ssl mosquitto-ssl luci-app-mosquitto \
luci-i18n-mosquitto-cs nlbwmon sqm-scripts kmod-wireguard wireguard-tools luci-proto-wireguard luci-lib-uqr \
resolveip luci-i18n-firewall-cs luci-i18n-package-manager-cs luci-app-statistics collectd-mod-mqtt collectd-mod-thermal \
collectd-mod-uptime collectd-mod-dhcpleases collectd-mod-ping parted losetup resize2fs fdisk adguardhome block-mount" \
Hodnota /CONFIG_TARGET_ROOTFS_PARTSIZE=2048 nám říká jak velký bude pak obraz po rozbalení na sd kartu, 2048MB = cca 2GB. Můžete si upravit dle sebe nebo ten řádek zakomentovat a bude výchozí velikost cca 100MB.
Do sekce PROFILE se dává název zařízení pro který se bude kompilovat.
Sekce PACKAGES obsahuje volitelné balíčky které chceme mít v kompilaci zahrnuté. doporučuji dát luci pokud chcete mít webové rozhraní.
A pro OrangePi R1 Plus.
# Zmenime vychozi velikost img obrazu
sed -i -e 's/CONFIG_TARGET_ROOTFS_PARTSIZE=.*/CONFIG_TARGET_ROOTFS_PARTSIZE=2048/' .config
make image \
PROFILE="xunlong_orangepi-r1-plus" \
PACKAGES="base-files ca-bundle dnsmasq dropbear e2fsprogs firewall4 fstools kmod-gpio-button-hotplug kmod-nft-offload \
libc libgcc libustream-mbedtls logd mkf2fs mtd netifd nftables odhcp6c odhcpd-ipv6only opkg partx-utils ppp \
ppp-mod-pppoe procd-ujail uboot-envtools uci uclient-fetch urandom-seed urngd kmod-usb-net-rtl8152 luci \
luci-i18n-base-cs luci-i18n-adblock-cs banip luci-app-banip luci-i18n-banip-cs luci-app-nlbwmon \
luci-i18n-nlbwmon-cs luci-app-sqm luci-i18n-sqm-cs mc nano mosquitto-client-ssl mosquitto-ssl luci-app-mosquitto \
luci-i18n-mosquitto-cs nlbwmon sqm-scripts kmod-wireguard wireguard-tools luci-proto-wireguard luci-lib-uqr \
resolveip luci-i18n-firewall-cs luci-i18n-package-manager-cs luci-app-statistics collectd-mod-mqtt collectd-mod-thermal \
collectd-mod-uptime collectd-mod-dhcpleases collectd-mod-ping parted losetup resize2fs fdisk adguardhome block-mount" \
Před kompilací je vhodné vymazat data z předchozí kompilace.
make clean
Po kompilaci hotoví obrazy najdeme v adresáři ./bin/targets/<target>/generic .
Můžem si obraz rozbalit a nahrát přímo na sd kartu.
gzip -d openwrt-xxxxxx-ext4-sysupgrade.img.gz
sudo dd if=openwrt-xxxxx-ext4-sysupgrade.img of=/dev/sdx bs=1M
A pak vložit do zařízení, ale přijdeme o všechna nastavení takže doporučuji předem si stáhnout zálohu nastavení!!!
A nebo přez webové rozhraní updatovat přímo souborem xxx.img.gz. To bude u velikosti image 2GB trvat cca 3 minuty.