| #!/bin/sh -eux |
| |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| # Delete all Linux headers |
| dpkg --list \ |
| | awk '{ print $2 }' \ |
| | grep 'linux-headers' \ |
| | xargs apt-get -y purge; |
| |
| # Remove specific Linux kernels, such as linux-image-3.11.0-15-generic but |
| # keeps the current kernel and does not touch the virtual packages, |
| # e.g. 'linux-image-generic', etc. |
| dpkg --list \ |
| | awk '{ print $2 }' \ |
| | grep 'linux-image-.*-generic' \ |
| | grep -v `uname -r` \ |
| | xargs apt-get -y purge; |
| |
| # Delete Linux source |
| dpkg --list \ |
| | awk '{ print $2 }' \ |
| | grep linux-source \ |
| | xargs apt-get -y purge; |
| |
| # Delete development packages |
| dpkg --list \ |
| | awk '{ print $2 }' \ |
| | grep -- '-dev$' \ |
| | xargs apt-get -y purge; |
| |
| # delete docs packages |
| dpkg --list \ |
| | awk '{ print $2 }' \ |
| | grep -- '-doc$' \ |
| | xargs apt-get -y purge; |
| |
| # Delete X11 libraries |
| apt-get -y purge libx11-data xauth libxmuu1 libxcb1 libx11-6 libxext6; |
| |
| # Delete obsolete networking |
| apt-get -y purge ppp pppconfig pppoeconf; |
| |
| # Delete oddities |
| apt-get -y purge popularity-contest installation-report command-not-found friendly-recovery bash-completion fonts-ubuntu-font-family-console laptop-detect; |
| |
| # 19.10+ don't have this package so fail gracefully |
| apt-get -y purge command-not-found-data || true; |
| |
| # Exlude the files we don't need w/o uninstalling linux-firmware |
| echo "==> Setup dpkg excludes for linux-firmware" |
| cat <<_EOF_ | cat >> /etc/dpkg/dpkg.cfg.d/excludes |
| #BEGIN |
| path-exclude=/lib/firmware/* |
| path-exclude=/usr/share/doc/linux-firmware/* |
| #END |
| _EOF_ |
| |
| # Delete the massive firmware packages |
| rm -rf /lib/firmware/* |
| rm -rf /usr/share/doc/linux-firmware/* |
| |
| apt-get -y autoremove; |
| apt-get -y clean; |
| |
| # Remove docs |
| rm -rf /usr/share/doc/* |
| |
| # Remove caches |
| find /var/cache -type f -exec rm -rf {} \; |
| |
| # truncate any logs that have built up during the install |
| find /var/log -type f -exec truncate --size=0 {} \; |
| |
| # Blank netplan machine-id (DUID) so machines get unique ID generated on boot. |
| truncate -s 0 /etc/machine-id |
| |
| # remove the contents of /tmp and /var/tmp |
| rm -rf /tmp/* /var/tmp/* |
| |
| # clear the history so our install isn't there |
| export HISTSIZE=0 |
| rm -f /root/.wget-hsts |