Building Linux machines CLI only vs Full Desktop - SteveCossy/IOT GitHub Wiki

This page outlines some thoughts on whether to install a full Linux desktop or just a Command Line Interface (CLI) and minimal software to run on that.

Introduction

One way in which one Linux machine can be distinguished from another is the primary type of use it will get and consequences:

  • The simplest approach is to install a full desktop. This is likely to include most software that can be required. Adding additional software is likely to be quick and easy. Installing a full desktop is great for learning, providing a simple, accessible, interface.
  • In a more formal, or 'production' environment, Linux best practise definitely supports a minimum install. Only install the programmes you need!

Benefits of Minimal Install

Some of the benefits of this approach include:

  • More secure - less software installed means fewer potential sources of security or stability bugs.
  • Faster install and updates - no need to update hundreds of programmes that you never use.
  • Lower power consumption - probably not very significant, but every bit helps if you are running on a battery.
  • Less 'wear' on the SD Card when installing on a System on a Chip (SOC) computer such as a Raspberry Pi (Pi). SD Cards do fail based on the number of read/write cycles. Fewer programmes installed means less writing to the card to install, check, run or maintain them.
  • For development, you really want to run an IDE on a powerful and consistent laptop or desktop system, accessing the Linux server remotely. This is particularly the case with a Pi, which is not going to run development tools very quickly.
  • Things do still work. You can still install the same software that is on the full desktop if you want to use a particular package. I only use a keyboard and monitor on my Pis for diagnostics. To run GUI apps, I use X Windows ('X11' or just 'X').
  • You'll understand what you are doing far better if you do everything at a command prompt. For an educational project, there is no need for an understanding beyond running Python on the desktop, but if you want to get seriously into using and developing in Linux, then the Linux machine should only be accessed remotely.