Last active 1725525230

Revision dc0bed3e6eaa92450a35c829a85b3b01178bbf1e

build.sh Raw
1#!/bin/sh
2routerUser="root"
3version="23.05.1"
4baseUrl="https://downloads.immortalwrt.org/releases/${version}/targets/x86/64"
5builderFileName="immortalwrt-imagebuilder-${version}-x86-64.Linux-x86_64.tar.xz"
6pkgConfig="-dnsmasq dnsmasq-full ip-full vim vim-runtime -ethtool ethtool-full \
7kmod-nf-nat kmod-nf-nat6 kmod-tls kmod-nft-arp kmod-nft-compat kmod-nft-connlimit kmod-nft-dup-inet kmod-nft-queue kmod-nft-socket kmod-nft-tproxy kmod-nft-xfrm kmod-nft-offload \
8iptables-nft ip6tables-nft kmod-ipt-nat6 kmod-ipt-nat-extra kmod-ipt-nathelper-rtsp kmod-sched-mqprio kmod-ipt-offload \
9kmod-e1000 kmod-e1000e kmod-igb kmod-ixgbe kmod-ixgbevf kmod-igc \
10kmod-usb2 kmod-usb3 usbutils exfat-fsck exfat-mkfs kmod-fs-exfat kmod-usb-storage kmod-usb-storage-extras kmod-usb-storage-uas kmod-usb-serial kmod-usb-hid \
11luci-i18n-opkg-zh-cn luci-i18n-firewall-zh-cn \
12luci-i18n-passwall-zh-cn luci-app-passwall xray-core \
13luci-app-upnp luci-i18n-upnp-zh-cn \
14luci-app-wol luci-i18n-wol-zh-cn \
15luci-app-banip luci-i18n-banip-zh-cn \
16luci-app-watchcat luci-i18n-watchcat-zh-cn \
17luci-app-uhttpd uhttpd \
18luci-theme-bootstrap luci-theme-argon \
19luci-app-statistics luci-i18n-statistics-zh-cn collectd-mod-disk collectd-mod-cpu collectd-mod-cpufreq collectd-mod-df collectd-mod-interface collectd-mod-processes collectd-mod-uptime collectd-mod-vmem collectd-mod-email collectd-mod-ethstat collectd-mod-conntrack collectd-mod-dhcpleases collectd-mod-syslog collectd-mod-write-http collectd-mod-ping collectd-mod-dns collectd-mod-memory collectd-mod-thermal collectd-mod-sensors collectd-mod-smart smartmontools smartmontools-drivedb \
20umdns ca-bundle haveged wget wget-ssl iperf3 telnet-bsd speedtest-cli qrencode lm-sensors-detect lscpu lsblk uhubctl losetup bind-dig httping tcping \
21"
22
23bareMentalPackages="intel-microcode iucode-tool kmod-i2c-i801 kmod-w83627hf-wdt kmod-itco-wdt"
24esxiPackages="kmod-vmxnet3 open-vm-tools open-vm-tools-fuse"
25proxmoxPackages="virtio-console-helper qemu-ga"
26
27echo "# STEP 0. Install prerequisites ..."
28# Needs to run 'make'
29DEBIAN_FRONTEND=noninteractive sudo apt update -y
30DEBIAN_FRONTEND=noninteractive sudo apt install qemu-utils upx-ucl librsync-dev rsync unzip libncurses-dev subversion curl gawk -y
31
32echo "# STEP 1. Gathering information ..."
33echo "What platform are you building for? [Enter 'bare' for bare-metal, 'esxi' for VMware ESXi, 'proxmox' for Proxmox VE]:"
34read platform
35case $platform in
36 bare)
37 pkgConfig="$pkgConfig $bareMentalPackages"
38 ;;
39 esxi)
40 pkgConfig="$pkgConfig $esxiPackages"
41 ;;
42 proxmox)
43 pkgConfig="$pkgConfig $proxmoxPackages"
44 ;;
45 *)
46 echo "Invalid platform. Exiting."
47 exit 1
48 ;;
49esac
50
51echo "# STEP 2. Downloading OpenWrt ${version} Image Builder ..."
52if ! [ -f "./${builderFileName}" ]
53then
54 wget "$baseUrl/$builderFileName" -P .
55fi
56rm -rf ./builder
57mkdir ./builder
58tar xf ./$builderFileName -C ./builder/ --strip-components=1
59cd ./builder
60
61echo "# STEP 3. Preparing to build image ..."
62
63# Set grub timeout to 0
64sed -i 's/CONFIG_GRUB_TIMEOUT="[0-9]"/CONFIG_GRUB_TIMEOUT="0"/g' ./.config
65# Image generation config
66#sed -i "s/CONFIG_TARGET_ROOTFS_EXT4FS=y/CONFIG_TARGET_ROOTFS_EXT4FS=n/g" ./.config
67sed -i "s/CONFIG_VHDX_IMAGES=y/CONFIG_VHDX_IMAGES=n/g" ./.config
68sed -i "s/CONFIG_QCOW2_IMAGES=y/CONFIG_QCOW2_IMAGES=n/g" ./.config
69sed -i "s/CONFIG_ISO_IMAGES=y/CONFIG_ISO_IMAGES=n/g" ./.config
70#sed -i "s/CONFIG_VMDK_IMAGES=y/CONFIG_VMDK_IMAGES=n/g" ./.config
71#sed -i "s/CONFIG_VDI_IMAGES=y/CONFIG_VDI_IMAGES=n/g" ./.config
72
73# Language config
74sed -i "s/# CONFIG_LUCI_LANG_en is not set/CONFIG_LUCI_LANG_en=y/g" ./.config
75
76echo "# STEP 4. Building image ..."
77make image PACKAGES="$pkgConfig" ROOTFS_PARTSIZE=1024 j=32 V=sc
78echo "# DONE. See built images under: ./builder/bin/targets/x86/64/"