sonic-buildimage/files/build_templates
Samuel Angebault 274e929f11
Reduce SONiC image filesystem size (#16948)
Why I did it
Running SONiC releases past 202012 has become really challenging on system with small storage devices (4GB).
Some of these devices can also be limited by only having 4GB of RAM which complicates mitigations.
The main contributor to these issues is the SONiC image growth.
Being able to reduce it by some decent amount should allow these systems to run SONiC longer.
It would also reduce some impacts related to space savings mitigations.

Work item tracking
Microsoft ADO (number only):
How I did it
Add a build option to reduce the image size.
The image reduction process is affecting the builds in 2 ways:

change some packages that are installed in the rootfs
apply a rootfs reduction script
The script itself will perform a few steps:

remove file duplication by leveraging hardlinks
under /usr/share/sonic since the symlinks under the device folder are lost during the build.
under /var/lib/docker since the files there will only be mounted ro
remove some extra files (man, docs, licenses, ...)
some image specific space reduction (only for aboot images currently)
The script can later be improved but for now it's reducing the rootfs size by ~30%.

How to verify it
Compare the size of an image with this option enabled and this option enabled.
Expect the fully extracted content to be ~30% less.

Which release branch to backport (provide reason below if selected)
This is a backport of #16729

Description for the changelog
Add build option to reduce final image size
2023-10-24 21:08:38 +08:00
..
per_namespace [nvidia] make sure shared storage with syncd is cleared on restarts (#14547) (#16046) 2023-08-07 09:27:43 +08:00
share_image [hostcfgd] Configure service auto-restart in hostcfgd. (#5744) 2021-06-29 09:06:21 -07:00
arp_update_vars.j2 chassis-packet: resolve the missing static routes (#14593) 2023-04-12 15:07:42 +08:00
backend_acl.j2 Add backend acl template (#11220) 2022-07-06 10:24:16 -07:00
buffers_config.j2 enable ethernet backplane port support in port config for packet mode T2 devices (#14533) 2023-06-12 14:02:22 -07:00
build_docker_cache.j2 02.Version cache - docker cache build framework (#12001) 2022-12-02 08:28:45 +08:00
cbf_config.j2 [CBF] Added configuration templates to generate configs for CBF (#8689) 2021-10-29 17:18:57 -07:00
config-chassisdb.service.j2 [ChassisDB]: bring up ChassisDB service (#5283) 2020-10-14 15:15:24 -07:00
config-setup.service.j2 Add support for platform topology configuration service (#12066) 2023-02-01 12:53:45 -08:00
database.service.j2 Multi-ASIC implementation (#3888) 2020-03-31 10:06:19 -07:00
dhcp_relay.service.j2 [hostcfgd] Configure service auto-restart in hostcfgd. (#5744) 2021-06-29 09:06:21 -07:00
docker_image_ctl.j2 [fast-reboot] Fix regression: set FAST_REBOOT state_db flag to support fast-reboot from older images (#16733) (#16753) 2023-09-29 05:29:20 +08:00
dockerd_regex.json Add Structured Events w/ YANG Models (#12270) 2022-10-09 20:23:31 -07:00
eventd.service.j2 Streaming structured events implementation (#11848) 2022-09-03 07:33:25 -07:00
events_info.json Add rsyslog plugin regex for select operation failure (#12659) 2022-11-13 21:41:33 -08:00
iccpd.service.j2 [services] introduce sonic.target (#5705) 2021-02-25 14:26:24 +02:00
init_cfg.json.j2 [cisco]: Enable Kdump config by default for cisco-8000 (#16224) 2023-10-18 00:37:30 +08:00
kernel_regex.json Add Structured Events w/ YANG Models (#12270) 2022-10-09 20:23:31 -07:00
kube_cni.10-flannel.conflist First cut image update for kubernetes support. (#5421) 2020-12-22 08:01:33 -08:00
lldp.service.j2 Changes for LLDP docker to support multi-npu platforms (#4530) 2020-05-11 11:05:44 -07:00
lldp.timer.j2 [Fastboot] Delay LLDP service for better fastboot performance (#10568) 2022-04-28 10:35:14 +03:00
manifest.json.j2 [infra] Support syslog rate limit configuration (#12490) 2022-12-20 10:53:58 +02:00
mgmt-framework.service.j2 [services] kill container on stop in warm/fast mode (#10510) 2022-09-19 19:34:33 +03:00
monit_regex.json Add fix to monit_regex.json for catching mem_usage and cpu_usage (#14954) 2023-05-08 11:48:17 -07:00
mux.service.j2 Delay mux/sflow/snmp timer after interface-config service (#14506) 2023-04-04 16:23:00 -07:00
nat.service.j2 [hostcfgd] Configure service auto-restart in hostcfgd. (#5744) 2021-06-29 09:06:21 -07:00
organization_extensions.sh Framework to plugin Organization specific scripts during ONIE Image build (#951) 2017-09-19 16:23:31 -07:00
p4rt.service.j2 [PINS] Build P4RT container for PINS (#9083) 2021-12-07 11:11:25 -08:00
packages.json.j2 [sonic_debian_extension] fix packages.json generation and make the build fail when packages.json is not generated (#8044) 2021-07-09 12:29:33 -07:00
pde.service.j2 [PDE]: introduce the SONiC Platform Development Env (#7510) 2021-07-24 16:24:43 -07:00
pmon.service.j2 [Fastboot] Delay PMON service for better fastboot performance (#10567) 2022-05-02 10:44:17 +03:00
qos_config.j2 qos template change for backend compute-ai deployment (#16150) 2023-09-21 18:34:11 +08:00
radv.service.j2 [hostcfgd] Configure service auto-restart in hostcfgd. (#5744) 2021-06-29 09:06:21 -07:00
restapi.service.j2 [hostcfgd] Configure service auto-restart in hostcfgd. (#5744) 2021-06-29 09:06:21 -07:00
rsyslog_plugin.conf.j2 Add events to host and create rsyslog_plugin deb pkg (#12059) 2022-09-21 09:20:53 -07:00
seu_regex.json Add Structured Events w/ YANG Models (#12270) 2022-10-09 20:23:31 -07:00
sflow.service.j2 [sflow]Delay starting sflow service until ports are created (#15333) 2023-06-09 16:28:15 -07:00
snmp.service.j2 [snmp] Check intfmgrd running before start (#16588) 2023-10-21 12:32:42 +08:00
sonic_debian_extension.j2 Reduce SONiC image filesystem size (#16948) 2023-10-24 21:08:38 +08:00
sonic_version.yml.j2 Support to add SONiC OS Version in device info (#14601) 2023-04-12 09:20:08 +08:00
sonic.target [services] introduce sonic.target (#5705) 2021-02-25 14:26:24 +02:00
sshd_regex.json Add events to host and create rsyslog_plugin deb pkg (#12059) 2022-09-21 09:20:53 -07:00
swss_vars.j2 [Mellanox] Support DSCP remapping in dual ToR topo on T0 switch (#12605) 2023-02-07 16:21:59 +02:00
syncd_regex.json Add rsyslog plugin regex for select operation failure (#12659) 2022-11-13 21:41:33 -08:00
systemd_regex.json Add Structured Events w/ YANG Models (#12270) 2022-10-09 20:23:31 -07:00
tacacs-config.service Add service to restore TACACS from old config (#7560) 2021-06-03 20:07:17 -07:00
tacacs-config.timer [services] Update "WantedBy=" section for tacacs-config.timer. (#11893) 2022-09-08 15:16:11 -07:00
telemetry.service.j2 [services] kill container on stop in warm/fast mode (#10510) 2022-09-19 19:34:33 +03:00
updategraph.service.j2 [config-setup]: create a SONiC configuration management service (#3227) 2019-12-04 07:15:58 -08:00