Skip to content

Instantly share code, notes, and snippets.

@rubeniskov
Created July 31, 2024 23:29
Show Gist options
  • Save rubeniskov/7b2d6ccbd19895f8446a3ef800b6d5e3 to your computer and use it in GitHub Desktop.
Save rubeniskov/7b2d6ccbd19895f8446a3ef800b6d5e3 to your computer and use it in GitHub Desktop.
# https://github.com/mwarning/docker-openwrt-build-env
# https://mirror-03.infra.openwrt.org/releases/23.05.0/targets/bmips/bcm63268/
# https://firmware-selector.openwrt.org/?version=23.05.0&target=bmips%2Fbcm63268&id=sercomm_h500-s-vfes
# https://openwrt.org/toh/sercomm/h500-s?s[]=sercomm&s[]=h500&s[]=vfes&s[]=bmips&s[]=bcm63268
# https://openwrt.org/docs/guide-developer/toolchain/install-buildsystem
# https://github.com/mwarning/openwrt-examples/tree/master/example3
# cat /etc/config/network
mkdir -p /tmp/openwrt
cd /tmp/openwrt
[ ! -d docker-openwrt-builder ] && git clone https://github.com/mwarning/docker-openwrt-builder.git
cd docker-openwrt-builder
docker build --platform linux/amd64 -t openwrt_builder .
if [ "$(uname)" == "Darwin" ]; then
hdiutil create -size 64g -fs "Case-sensitive HFS+" -type SPARSEBUNDLE -volname openwrt-dev-env openwrt-dev-env.dmg
hdiutil attach openwrt-dev-env.dmg.sparsebundle
fi
DOCKER_RUN_FLAGS=$([ "$(uname)" == "Darwin" ] && echo "-v /Volumes/openwrt-dev-env:/home/user" || echo "-v /tmp/openwrt:/home/user") \
docker run --platform linux/amd64 $DOCKER_RUN_FLAGS -it openwrt_builder /bin/bash
## Inside the container
sudo apt-get install libpcre3-dev libpcre3 libev-dev libpam-abl liblzma-dev libsnmp-dev -y
cd /home/user
mkdir ./openwrt-fs # create mount folder
if [ "$(uname)" == "Darwin" ]; then
dd if=/dev/zero of=ext4openwrtfs.img bs=1G count=0 seek=60 # set "seek=" to however many gigabytes you want, always less than the created dmg image
mkfs.ext4 ext4openwrtfs.img # create filesystem
sudo mount $(losetup -fP --show ext4openwrtfs.img) ./openwrt-fs # mount support folder
sudo chown -R user:user ./openwrt-fs # change ownership to user
fi
cd ./openwrt-fs # $(pwd) should be /home/user/openwrt-fs
[ ! -d openwrt ] && git clone https://git.openwrt.org/openwrt/openwrt.git # repo will be in /home/user/openwrt-fs/openwrt
cd openwrt
cat feeds.conf.default > feeds.conf
echo "src-git hg500 https://github.com/danitool/openwrt-pkgs.git" >> feeds.conf
./scripts/feeds update -a
rm -rf package/feeds/hg500/{dump-cp15,dummy-irq,luci-app-tn-vsftpd,amule}
./scripts/feeds install libev libpam liblzma libnetsnmp libexpat libtirpc call_qcsapi
# Configure default settings
mkdir -p ./files/etc/uci-defaults
cat << "EOF" > ./files/etc/uci-defaults/98-network
uci -q batch << EOI
set network.lan='interface'
set network.lan.device='br-lan'
set network.lan.proto='static'
set network.lan.ipaddr='192.168.0.253'
set network.lan.netmask='255.255.255.0'
set network.lan.ip6assign='60'
set network.lan.gateway='192.168.0.1'
add_list network.lan.dns='192.168.0.1'
commit network
EOI
/etc/init.d/network restart
EOF
cat << "EOF" > ./files/etc/uci-defaults/99-wifi
uci -q batch << EOI
set network.lan2=interface
set network.lan2.ifname=@lan
set network.lan2.proto=static
set network.lan2.ipaddr=1.1.1.1
set network.lan2.netmask=255.0.0.0
commit network
EOI
/etc/init.d/network restart
uci -q batch << EOI
set dhcp.@dnsmasq[-1].enable_tftp=1
set dhcp.@dnsmasq[-1].tftp_root=/etc/wlan
commit dhcp
EOI
/etc/init.d/dnsmasq restart
EOF
cat <<EOF > .config
CONFIG_TARGET_bmips=y
CONFIG_TARGET_bmips_bcm63268=y
CONFIG_TARGET_MULTI_PROFILE=y
CONFIG_TARGET_ALL_PROFILES=n
CONFIG_TARGET_DEVICE_bmips_bcm63268_DEVICE_sercomm_h500-s-lowi=y
CONFIG_TARGET_DEVICE_PACKAGES_bmips_bcm63268_DEVICE_sercomm_h500-s-lowi="call_qcsapi"
CONFIG_TARGET_DEVICE_bmips_bcm63268_DEVICE_sercomm_h500-s-vfes=y
CONFIG_TARGET_DEVICE_PACKAGES_bmips_bcm63268_DEVICE_sercomm_h500-s-vfes="call_qcsapi"
CONFIG_ALL_KMODS=y
CONFIG_ALL_NONSHARED=y
CONFIG_DEVEL=y
CONFIG_TARGET_PER_DEVICE_ROOTFS=y
CONFIG_AUTOREMOVE=y
CONFIG_BPF_TOOLCHAIN_BUILD_LLVM=y
# CONFIG_BPF_TOOLCHAIN_NONE is not set
CONFIG_BUILDBOT=y
CONFIG_COLLECT_KERNEL_DEBUG=y
CONFIG_HAS_BPF_TOOLCHAIN=y
CONFIG_IB=y
CONFIG_IMAGEOPT=y
CONFIG_KERNEL_BUILD_DOMAIN="buildhost"
CONFIG_KERNEL_BUILD_USER="builder"
# CONFIG_KERNEL_KALLSYMS is not set
CONFIG_MAKE_TOOLCHAIN=y
CONFIG_PACKAGE_cgi-io=y
CONFIG_PACKAGE_libbpf=m
CONFIG_PACKAGE_libelf=m
CONFIG_PACKAGE_libiwinfo=y
CONFIG_PACKAGE_libiwinfo-data=y
CONFIG_PACKAGE_liblucihttp=y
CONFIG_PACKAGE_liblucihttp-ucode=y
CONFIG_PACKAGE_libpcap=m
CONFIG_PACKAGE_libxdp=m
CONFIG_PACKAGE_luci=y
CONFIG_PACKAGE_luci-app-firewall=y
CONFIG_PACKAGE_luci-app-opkg=y
CONFIG_PACKAGE_luci-base=y
CONFIG_PACKAGE_luci-light=y
CONFIG_PACKAGE_luci-mod-admin-full=y
CONFIG_PACKAGE_luci-mod-network=y
CONFIG_PACKAGE_luci-mod-status=y
CONFIG_PACKAGE_luci-mod-system=y
CONFIG_PACKAGE_luci-proto-ipv6=y
CONFIG_PACKAGE_luci-proto-ppp=y
CONFIG_PACKAGE_luci-ssl=y
CONFIG_PACKAGE_luci-theme-bootstrap=y
CONFIG_PACKAGE_px5g-mbedtls=y
CONFIG_PACKAGE_qosify=m
CONFIG_PACKAGE_rpcd=y
CONFIG_PACKAGE_rpcd-mod-file=y
CONFIG_PACKAGE_rpcd-mod-iwinfo=y
CONFIG_PACKAGE_rpcd-mod-luci=y
CONFIG_PACKAGE_rpcd-mod-rrdns=y
CONFIG_PACKAGE_rpcd-mod-ucode=y
CONFIG_PACKAGE_tc-tiny=m
CONFIG_PACKAGE_ucode-mod-html=y
CONFIG_PACKAGE_ucode-mod-math=y
CONFIG_PACKAGE_uhttpd=y
CONFIG_PACKAGE_uhttpd-mod-ubus=y
CONFIG_PACKAGE_xdp-filter=m
CONFIG_PACKAGE_xdp-loader=m
CONFIG_PACKAGE_xdpdump=m
CONFIG_PACKAGE_zlib=m
CONFIG_PACKAGE_call_qcsapi=y
CONFIG_REPRODUCIBLE_DEBUG_INFO=y
CONFIG_SDK=y
CONFIG_SDK_LLVM_BPF=y
CONFIG_USE_LLVM_BUILD=y
CONFIG_VERSIONOPT=y
CONFIG_VERSION_BUG_URL=""
CONFIG_VERSION_CODE=""
CONFIG_VERSION_DIST="OpenWrt"
CONFIG_VERSION_FILENAMES=y
CONFIG_VERSION_HOME_URL=""
CONFIG_VERSION_HWREV=""
CONFIG_VERSION_MANUFACTURER=""
CONFIG_VERSION_MANUFACTURER_URL=""
CONFIG_VERSION_NUMBER=""
CONFIG_VERSION_PRODUCT=""
CONFIG_VERSION_REPO="https://downloads.openwrt.org/releases/23.05.0"
CONFIG_VERSION_SUPPORT_URL=""
EOF
#make menuconfig
make defconfig
make -j`nproc`
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment