openwrt - kleines Image-Builder Script

Da der Bau eines Images unter openwrt eigentlich den selben Weg folgt, hier ein kleines Bash Script. Es ist etwas quick und dirty. Aber es sollte reichen. Das Script orientiert sich an der Anleitung aus dem openwrt.org/wiki

owrt_buildimage.sh
#!/usr/bin/bash
#Link zur Anleitung: https://openwrt.org/docs/guide-user/additional-software/imagebuilder
#
#Pakete die unter debian zum bauen benötigt werdern. -> Siehe Anleitung
#sudo apt install build-essential libncurses5-dev libncursesw5-dev \
#zlib1g-dev gawk git gettext libssl-dev xsltproc rsync wget unzip python
 
#Archtiketur == Subpath auf downloads.openwrt.org
 
OWRTVER="22.03.3"           #Openwrt Version die gebaut werden soll
ARCH="x86/64"              #Variable für welche Architektur das Image gebaut werden soll
#ARCH="x86/generic"
#ARCH="sunxi/cortexa7"      #Banana Pi unter anderem
#ARCH="bcm27xx/bcm2710"      #Raspberry Pi 3
 
ARCHSUB=${ARCH////-}        #die Arch Variable wird angepasst für den Dowload des tarballs
#PKGS Variable gibt an, welches Paket in das Image mit Paketiert werden sollen! -> Muss für jede Archtiktur ggf. separat angepasst werden!
PKGS="base-files cgi-io dnsmasq dropbear e100-firmware e2fsprogs firewall4 fstools fwtool getrandom ip-tiny ip6tables iptables jshn jsonfilter kernel kmod-3c59x kmod-8139too kmod-bnx2 kmod-button-hotplug kmod-e100 kmod-e1000 kmod-e1000e kmod-hwmon-core kmod-i2c-algo-bit kmod-i2c-core kmod-igb kmod-input-core kmod-ip6tables kmod-ipt-conntrack kmod-ipt-core kmod-ipt-nat kmod-ipt-offload kmod-lib-crc-ccitt kmod-libphy kmod-mii kmod-natsemi kmod-ne2k-pci kmod-nf-conntrack kmod-nf-conntrack6 kmod-nf-flow kmod-nf-ipt kmod-nf-ipt6 kmod-nf-nat kmod-nf-reject kmod-nf-reject6 kmod-pcnet32 kmod-ppp kmod-pppoe kmod-pppox kmod-pps kmod-ptp kmod-r8169 kmod-sis900 kmod-slhc kmod-tg3 kmod-udptunnel4 kmod-udptunnel6 kmod-via-rhine kmod-via-velocity kmod-wireguard libblkid1 libblobmsg-json libc libcomerr0 libext2fs2 libf2fs6 libgcc1 libip4tc2 libip6tc2 libiwinfo-lua libiwinfo20181126 libjson-c2 libjson-script liblua5.1.5 liblucihttp-lua liblucihttp0 libmnl0 libncurses6 libnl-tiny libpcap1 libpopt0 libpthread libqrencode librt libsmartcols1 libss2  libubus-lua libuuid1 libxtables12 logd lua luci luci-app-firewall luci-app-opkg luci-app-wireguard luci-base luci-i18n-base-de luci-i18n-wireguard-de 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-proto-wireguard luci-theme-bootstrap mkf2fs mtd nano netifd odhcp6c odhcpd-ipv6only openwrt-keyring opkg partx-utils ppp ppp-mod-pppoe procd qrencode r8169-firmware rpcd rpcd-mod-file rpcd-mod-iwinfo rpcd-mod-luci rpcd-mod-rrdns rsync rsyncd screen tcpdump terminfo ubox ubus ubusd uci uclient-fetch uhttpd urandom-seed urngd usign vim wireguard wireguard-tools zlib luci-app-snmpd snmpd tmux"
#PROFIL="sinovoip_bananapi-m2-berry" #Banana Pi M2 Berry
#PROFIL="rpi-3" #Raspberry PI 3 Profil
PROFIL="NONE" #Verwenden, wenn man kein Profil angeben möcht
 
DOWNPATH="$HOME/Downloads"
FOLDER=openwrt-imagebuilder-$OWRTVER-$ARCHSUB.Linux-x86_64
 
 
[[ -d $DOWNPATH ]] || mkdir -p $DOWNPATH
cd $DOWNPATH/
[[ -d $FOLDER ]] || wget -q -O - https://downloads.openwrt.org/releases/$OWRTVER/targets/$ARCH/openwrt-imagebuilder-$OWRTVER-$ARCHSUB.Linux-x86_64.tar.xz | tar xfJ -
 
cd $FOLDER
 
if [[ $PROFIL == "NONE" ]]; then
   make image PACKAGES="${PKGS}"
else
   make image PROFILE=$PROFIL PACKAGES="${PKGS}"
fi
 
echo "Das Image ist unter $DOWNPATH/$FOLDER/bin/targets/$ARCH zu finden."
echo "Einfach cd $DOWNPATH/$FOLDER/bin/targets/$ARCH in der Konsole eingeben oder im Filer/Dateimanager suchen."
Wichtig: Bitte die Paketeliste anpassen. Optional die Pakete über goolge oder direkt im Ordner suchen. Alternativ kann auch auf einen openwrt nach geschaut werden!