aboutsummaryrefslogblamecommitdiff
path: root/bootstrap.d/99-reduce.sh
blob: 128e7a6a430d115a535159ff3e2db4ddea3ab482 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12











                                                                  
                                                                             


                                     


                                                                                       

                            

                                               



                                    

                                                                                 



                                       
                                                                                                                                                 



                                       
                                                                                   






















                                                                                                     



                                  

    

                                                                   

                                  

    
                                  
                                   

                                   
#
# Reduce system disk usage
#

# Load utility functions
. ./functions.sh

# Reduce the image size by various operations
if [ "$ENABLE_REDUCE" = true ] ; then
  if [ "$REDUCE_APT" = true ] ; then
    # Install dpkg configuration file
    if [ "$REDUCE_DOC" = true ] || [ "$REDUCE_MAN" = true ] ; then
      install_readonly files/dpkg/01nodoc "${ETCDIR}/dpkg/dpkg.cfg.d/01nodoc"
    fi

    # Install APT configuration files
    install_readonly files/apt/02nocache "${ETCDIR}/apt/apt.conf.d/02nocache"
    install_readonly files/apt/03compress "${ETCDIR}/apt/apt.conf.d/03compress"
    install_readonly files/apt/04norecommends "${ETCDIR}/apt/apt.conf.d/04norecommends"

    # Remove APT cache files
    rm -fr "${R}/var/cache/apt/pkgcache.bin"
    rm -fr "${R}/var/cache/apt/srcpkgcache.bin"
  fi

  # Remove all doc files
  if [ "$REDUCE_DOC" = true ] ; then
    find "${R}/usr/share/doc" -depth -type f ! -name copyright | xargs rm || true
    find "${R}/usr/share/doc" -empty | xargs rmdir || true
  fi

  # Remove all man pages and info files
  if [ "$REDUCE_MAN" = true ] ; then
    rm -rf "${R}/usr/share/man" "${R}/usr/share/groff" "${R}/usr/share/info" "${R}/usr/share/lintian" "${R}/usr/share/linda" "${R}/var/cache/man"
  fi

  # Remove all locale translation files
  if [ "$REDUCE_LOCALE" = true ] ; then
    find "${R}/usr/share/locale" -mindepth 1 -maxdepth 1 ! -name 'en' | xargs rm -r
  fi

  # Remove hwdb PCI device classes (experimental)
  if [ "$REDUCE_HWDB" = true ] ; then
    rm -fr "/lib/udev/hwdb.d/20-pci-*"
  fi

  # Replace bash shell by dash shell (experimental)
  if [ "$REDUCE_BASH" = true ] ; then
    echo "Yes, do as I say!" | chroot_exec apt-get purge -qq -y --force-yes bash
    chroot_exec update-alternatives --install /bin/bash bash /bin/dash 100
  fi

  # Remove sound utils and libraries
  if [ "$ENABLE_SOUND" = false ] ; then
    chroot_exec apt-get -qq -y --force-yes purge alsa-utils libsamplerate0 libasound2 libasound2-data
  fi

  # Re-install tools for managing kernel moduless
  chroot_exec apt-get -qq -y --force-yes install module-init-tools

  # Remove GPU kernels
  if [ "$ENABLE_MINGPU" = true ] ; then
    rm -f "${BOOTDIR}/start.elf"
    rm -f "${BOOTDIR}/fixup.dat"
    rm -f "${BOOTDIR}/start_x.elf"
    rm -f "${BOOTDIR}/fixup_x.dat"
  fi

  # Remove kernel and initrd from /boot (already in /boot/firmware)
  if [ "$BUILD_KERNEL" = false ] ; then
    rm -f "${R}/boot/vmlinuz-*"
    rm -f "${R}/boot/initrd.img-*"
  fi

  # Clean APT list of repositories
  rm -fr "${R}/var/lib/apt/lists/*"
  chroot_exec apt-get -qq -y update
fi