summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorDaniil Baturin <daniil@vyos.io>2026-09-14 11:46:19 +0100
committerGitHub <noreply@github.com>2026-09-14 11:46:19 +0100
commit7a5205d66cf20f2edff3e96d7e8d6f14d4f90df8 (patch)
treea8bdd618f1cec84f06510ade3aaa8735d89f14e6 /scripts
parent1bae4beea17f1228d4afe7007244584f3b885eac (diff)
parent51313ee0f53b98dbb61d9774ebc6a11207a2b53f (diff)
downloadvyos-build-7a5205d66cf20f2edff3e96d7e8d6f14d4f90df8.tar.gz
vyos-build-7a5205d66cf20f2edff3e96d7e8d6f14d4f90df8.zip
Merge pull request #1291 from c-po/image-size
T9277: image: further reduced installed and ISO image size
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/image-build/build-vyos-image16
-rwxr-xr-xscripts/package-build/telegraf/build.sh41
-rw-r--r--scripts/package-build/telegraf/plugins/inputs/all/all.go72
-rw-r--r--scripts/package-build/telegraf/plugins/outputs/all/all.go9
4 files changed, 49 insertions, 89 deletions
diff --git a/scripts/image-build/build-vyos-image b/scripts/image-build/build-vyos-image
index ea8d2f4c..00b63bfc 100755
--- a/scripts/image-build/build-vyos-image
+++ b/scripts/image-build/build-vyos-image
@@ -789,6 +789,22 @@ Pin-Priority: 600
for f in local_packages:
shutil.copy(f, os.path.join(defaults.LOCAL_PACKAGES_PATH, os.path.basename(f)))
+ ## T9277: Debug packages are installed on purpose - placing a .deb into
+ ## packages/ is a deliberate act - but linux-image-*-dbg alone expands to
+ ## ~2.3 GB in the rootfs, so make the cost impossible to miss.
+ debug_packages = [f for f in local_packages
+ if re.search(r'-dbg(sym)?_', os.path.basename(f))]
+ if debug_packages:
+ print("W: " + "=" * 60)
+ print(f"W: Installing {len(debug_packages)} debug package(s) from packages/:")
+ for f in sorted(debug_packages):
+ size_mb = os.path.getsize(f) / (1024 * 1024)
+ print(f"W: {os.path.basename(f)} ({size_mb:.1f} MB deb)")
+ print("W: Debug symbols expand significantly in the rootfs and will")
+ print("W: noticeably increase the image size. Remove them from packages/")
+ print("W: if this was unintended.")
+ print("W: " + "=" * 60)
+
## Build the image
print("I: Starting image build")
if debug:
diff --git a/scripts/package-build/telegraf/build.sh b/scripts/package-build/telegraf/build.sh
index 2ba511d0..09e6c1ca 100755
--- a/scripts/package-build/telegraf/build.sh
+++ b/scripts/package-build/telegraf/build.sh
@@ -1,5 +1,4 @@
#!/bin/sh
-CWD=$(pwd)
set -e
BUILD_ARCH=$(dpkg-architecture -qDEB_TARGET_ARCH)
@@ -10,18 +9,44 @@ if [ ! -d ${SRC} ]; then
exit 1
fi
-PLUGIN_DIR=${CWD}/plugins
+# T9277: Only compile in the plugins that can actually be instantiated from the
+# VyOS CLI. Telegraf ships ~240 inputs and ~60 outputs, which produces a 198 MB
+# binary; the list below brings that down to about 28 MB.
+#
+# These names are the plugins referenced by the vyos-1x telegraf templates in
+# data/templates/telegraf/. When a plugin is added there, it MUST be added here
+# too, otherwise telegraf fails to start with an "unknown plugin" error.
+TELEGRAF_INPUTS="chrony conntrack cpu disk diskio ethtool exec internal
+ interrupts kernel linux_sysctl_fs mem net netstat nstat
+ processes syslog system systemd_units"
+TELEGRAF_OUTPUTS="azure_data_explorer http influxdb_v2 loki prometheus_client"
+# "influx" backs [[inputs.exec]] data_format, "splunkmetric" backs the Splunk
+# [[outputs.http]] data_format.
+TELEGRAF_PARSERS="influx"
+TELEGRAF_SERIALIZERS="splunkmetric"
-echo "I: Selecting Input plugins"
-cp ${PLUGIN_DIR}/inputs/all/all.go ${SRC}/plugins/inputs/all/all.go
+# Telegraf selects plugins via Go build tags: the "custom" tag disables the
+# compile-everything default, and every plugin is then opted back in by name.
+BUILDTAGS="custom"
+for plugin in ${TELEGRAF_INPUTS}; do
+ BUILDTAGS="${BUILDTAGS},inputs.${plugin}"
+done
+for plugin in ${TELEGRAF_OUTPUTS}; do
+ BUILDTAGS="${BUILDTAGS},outputs.${plugin}"
+done
+for plugin in ${TELEGRAF_PARSERS}; do
+ BUILDTAGS="${BUILDTAGS},parsers.${plugin}"
+done
+for plugin in ${TELEGRAF_SERIALIZERS}; do
+ BUILDTAGS="${BUILDTAGS},serializers.${plugin}"
+done
-echo "I: Selecting Output plugins"
-cp ${PLUGIN_DIR}/outputs/all/all.go ${SRC}/plugins/outputs/all/all.go
+echo "I: Selected plugins: ${BUILDTAGS}"
echo "I: Build Debian ${BUILD_ARCH} package"
cd ${SRC}
export PATH=/opt/go/bin:$PATH
# Generate default telegraf config
-go run ./cmd/telegraf config > etc/telegraf.conf
-LDFLAGS=-w make "${BUILD_ARCH}.deb"
+go run -tags "${BUILDTAGS}" ./cmd/telegraf config > etc/telegraf.conf
+make BUILDTAGS="${BUILDTAGS}" "${BUILD_ARCH}.deb"
diff --git a/scripts/package-build/telegraf/plugins/inputs/all/all.go b/scripts/package-build/telegraf/plugins/inputs/all/all.go
deleted file mode 100644
index 8265681b..00000000
--- a/scripts/package-build/telegraf/plugins/inputs/all/all.go
+++ /dev/null
@@ -1,72 +0,0 @@
-package all
-
-import (
- //Blank imports for plugins to register themselves
- _ "github.com/influxdata/telegraf/plugins/inputs/azure_storage_queue"
- _ "github.com/influxdata/telegraf/plugins/inputs/bond"
- _ "github.com/influxdata/telegraf/plugins/inputs/cgroup"
- _ "github.com/influxdata/telegraf/plugins/inputs/chrony"
- _ "github.com/influxdata/telegraf/plugins/inputs/conntrack"
- _ "github.com/influxdata/telegraf/plugins/inputs/cpu"
- _ "github.com/influxdata/telegraf/plugins/inputs/disk"
- _ "github.com/influxdata/telegraf/plugins/inputs/diskio"
- _ "github.com/influxdata/telegraf/plugins/inputs/disque"
- _ "github.com/influxdata/telegraf/plugins/inputs/dmcache"
- _ "github.com/influxdata/telegraf/plugins/inputs/dns_query"
- _ "github.com/influxdata/telegraf/plugins/inputs/docker"
- _ "github.com/influxdata/telegraf/plugins/inputs/docker_log"
- _ "github.com/influxdata/telegraf/plugins/inputs/ethtool"
- _ "github.com/influxdata/telegraf/plugins/inputs/exec"
- _ "github.com/influxdata/telegraf/plugins/inputs/execd"
- _ "github.com/influxdata/telegraf/plugins/inputs/file"
- _ "github.com/influxdata/telegraf/plugins/inputs/filecount"
- _ "github.com/influxdata/telegraf/plugins/inputs/filestat"
- _ "github.com/influxdata/telegraf/plugins/inputs/fireboard"
- _ "github.com/influxdata/telegraf/plugins/inputs/hddtemp"
- _ "github.com/influxdata/telegraf/plugins/inputs/hugepages"
- _ "github.com/influxdata/telegraf/plugins/inputs/influxdb"
- _ "github.com/influxdata/telegraf/plugins/inputs/influxdb_listener"
- _ "github.com/influxdata/telegraf/plugins/inputs/influxdb_v2_listener"
- _ "github.com/influxdata/telegraf/plugins/inputs/intel_pmu"
- _ "github.com/influxdata/telegraf/plugins/inputs/intel_powerstat"
- _ "github.com/influxdata/telegraf/plugins/inputs/intel_rdt"
- _ "github.com/influxdata/telegraf/plugins/inputs/internal"
- _ "github.com/influxdata/telegraf/plugins/inputs/internet_speed"
- _ "github.com/influxdata/telegraf/plugins/inputs/interrupts"
- _ "github.com/influxdata/telegraf/plugins/inputs/ipmi_sensor"
- _ "github.com/influxdata/telegraf/plugins/inputs/ipset"
- _ "github.com/influxdata/telegraf/plugins/inputs/iptables"
- _ "github.com/influxdata/telegraf/plugins/inputs/ipvs"
- _ "github.com/influxdata/telegraf/plugins/inputs/kernel"
- _ "github.com/influxdata/telegraf/plugins/inputs/kernel_vmstat"
- _ "github.com/influxdata/telegraf/plugins/inputs/mdstat"
- _ "github.com/influxdata/telegraf/plugins/inputs/mem"
- _ "github.com/influxdata/telegraf/plugins/inputs/net"
- _ "github.com/influxdata/telegraf/plugins/inputs/netstat"
- _ "github.com/influxdata/telegraf/plugins/inputs/nstat"
- _ "github.com/influxdata/telegraf/plugins/inputs/ping"
- _ "github.com/influxdata/telegraf/plugins/inputs/powerdns_recursor"
- _ "github.com/influxdata/telegraf/plugins/inputs/processes"
- _ "github.com/influxdata/telegraf/plugins/inputs/procstat"
- _ "github.com/influxdata/telegraf/plugins/inputs/sensors"
- _ "github.com/influxdata/telegraf/plugins/inputs/sflow"
- _ "github.com/influxdata/telegraf/plugins/inputs/slab"
- _ "github.com/influxdata/telegraf/plugins/inputs/smart"
- _ "github.com/influxdata/telegraf/plugins/inputs/snmp"
- _ "github.com/influxdata/telegraf/plugins/inputs/snmp_legacy"
- _ "github.com/influxdata/telegraf/plugins/inputs/snmp_trap"
- _ "github.com/influxdata/telegraf/plugins/inputs/socket_listener"
- _ "github.com/influxdata/telegraf/plugins/inputs/socketstat"
- _ "github.com/influxdata/telegraf/plugins/inputs/syslog"
- _ "github.com/influxdata/telegraf/plugins/inputs/sysstat"
- _ "github.com/influxdata/telegraf/plugins/inputs/system"
- _ "github.com/influxdata/telegraf/plugins/inputs/systemd_units"
- _ "github.com/influxdata/telegraf/plugins/inputs/tail"
- _ "github.com/influxdata/telegraf/plugins/inputs/tcp_listener"
- _ "github.com/influxdata/telegraf/plugins/inputs/temp"
- _ "github.com/influxdata/telegraf/plugins/inputs/twemproxy"
- _ "github.com/influxdata/telegraf/plugins/inputs/udp_listener"
- _ "github.com/influxdata/telegraf/plugins/inputs/wireguard"
- _ "github.com/influxdata/telegraf/plugins/inputs/wireless"
- _ "github.com/influxdata/telegraf/plugins/inputs/x509_cert"
-)
diff --git a/scripts/package-build/telegraf/plugins/outputs/all/all.go b/scripts/package-build/telegraf/plugins/outputs/all/all.go
deleted file mode 100644
index 49f7e63d..00000000
--- a/scripts/package-build/telegraf/plugins/outputs/all/all.go
+++ /dev/null
@@ -1,9 +0,0 @@
-package all
-
-import (
- //Blank imports for plugins to register themselves
- _ "github.com/influxdata/telegraf/plugins/outputs/azure_data_explorer"
- _ "github.com/influxdata/telegraf/plugins/outputs/http"
- _ "github.com/influxdata/telegraf/plugins/outputs/influxdb_v2"
- _ "github.com/influxdata/telegraf/plugins/outputs/prometheus_client"
-)