Linux is a pre-integrated Linux operating system and various application software for the average user. Linux distributions usually contain applications including desktop environments, office packages, media players, databases, etc. These operating systems usually consist of the Linux kernel, as well as a large library of functions from the GNU Project, and an X Window-based graphical interface. Some distributions do not come with X Window pre-installed due to capacity size, and use more lightweight software. There are now over 300 Linux distributions (Linux Distribution List). Most of them are under active development and are constantly being improved.
Since most packages are free and open source software, Linux distributions come in a variety of forms - from fully functional desktop systems as well as server systems to small systems. With the exception of some custom software (such as installation and configuration tools), distributions usually just install specific applications on a bunch of libraries and kernels to meet the needs of specific users.
There are quite a few factors to consider when choosing a distribution. There is often no perfect choice, only the best fit. Context, intended use, user base, software source, support cycle, update aggressiveness, quality, and ease of use are all factors to consider when choosing.
- Background : Background includes derivative relationships and origins. A Linux distribution comes from a commercial company, or a non-commercial community. Some distributions are derived from another distribution, and child distributions necessarily inherit many upstream features.
- Use: A distribution may be designed for one of several uses, such as general purpose, entertainment, business, education, work, server, or a particular use.
- User base : The size of the user base affects how well grounded it is. Linux is free software, but it cannot be separated from the power of the user base. A large user base will make it easier for you to search for the answer to a question or find software packaged by community users. Some software publishers may also give priority to distributing installers for popular distributions. When considering the user base, consider both the size of the worldwide user base and the domestic scope.
- Software Sources: Include the number of software included in the software repository. If the repository contains little software, the installation of software will not avoid the trouble of searching the Internet to download, compile, compile errors, and resolve dependencies. There are technologies such as static compilation, container, AppImage, Flatpak, snap, etc. that allow software to run across distributions, partially filling the gap between Linux distributions.
- Cycle : A short support cycle will force you to update frequently. Too long a support cycle means the software version in the repository may be out of date. You need to know the Major Release cycle, Minor Release cycle, and Extended Support cycle of the distribution. Take Ubuntu for example, it releases a new system version every six months, such as 04, 16.10, 17.04, 17.10, 18.04, 18.10, 19.04, 19.10, and an LTS (extended support) version every two years, where 16.04 and 18.04 are LTS. the non-LTS support cycle is 9 months, and the LTS support cycle is 5 years. Extended support exists primarily for environments such as servers that do not allow frequent updates. Upgrading the version of the system is theoretically just a single command, but in practice, it is a small undertaking.
- New Radicality : Radicality is the stage in which the repository will include software that is in the middle of testing, unstable, stable, and very stable. Frontier is unstable, moderate is both, and stable is an old version. Users need to choose.
- Quality : Quality can refer to the probability of running errors, hardware compatibility rate, software source maintenance quality, etc.. Quality is also a combination of the above factors.
- Ease of use: “ease of use” in this case mainly refers to out-of-the-box use, saving novices the trouble of making adjustments on their own, but also means a low level of security by default. Professional users may not like this. Those that are not easy to use may even have a purely console-based installation process.
Do not base your choice on whether the interface looks good or not. A distribution is a collection of kernels and various other packages. The desktop environment is also made up of several packages. In theory, any distribution can use any desktop environment, so there is no need to choose a distribution based on its interface. Furthermore, it is more difficult for people who want to look good to become Linux masters.
Introduction to Mainstream Distributions
RedHat / CentOS / Fedora
RedHat is an American company that develops, sells, and provides technical services for Linux packages, known as Red Hat Enterprise Linux, which is distributed in two ways: as a binary distribution and as a source code distribution. Either way, you can get it for free and redistribute it. However, if you use their online upgrades (including patches) or consulting services, you have to pay for them.
RedHat has always offered source code distribution, where the CentOS community downloads all the source code from RedHat’s website, recompiles it, and creates a working binary version of CentOS. Since the source code for LINUX is GNU, it is legal from the time RedHat’s source code is obtained to the time it is compiled into a new binary. Only Red Hat is a trademark, so the RedHat trademark must be removed from the new distribution.
RedHat’s attitude toward such distributions is: “We’re not really opposed to them, and the users who actually pay us for them value not the system itself, but the commercial services we provide.” So, CentOS gets all the features of RedHat. But CentOS does not provide commercial support to users, and it certainly does not carry any commercial liability.
Redhat has two major Linux product lines.
1、Free Fedora Core series
- Mainly for desktop version, provides more support for new features. Updated frequently, not suitable for server systems.
- Fedora is mainly used by Red Hat as a test platform for new technologies, and technologies that are considered available will eventually be added to Red Hat Enterprise Linux.
- Fedora about every June release a new version, support cycle of 1 year, every 3 Fedora versions will be followed by a Red Hat version of the emergence.
2、The fee-based Enterprise series is divided into branches such as AS/ES/WS.
- Red Hat Enterprise Linux AS (Advanced Server). Red Hat Enterprise Linux AS (Advanced Server) is the highest-end product in the enterprise Linux solution, designed for enterprise applications and data centers. Red Hat Enterprise Linux AS is the only product that supports IBM i-Series, p-Series, and z-Series/S-390 systems. On Intel X86 platforms, Red Hat Enterprise Linux AS can support more than 2 CPUs and more than 8GB of memory. Typical Red Hat Enterprise Linux AS application environments are: Database and Database Applications, WEB and Middleware, CRM, ERP, SCM
- Red Hat Enterprise Linux ES (Entry Server). Provides a server operating system for the Intel X86 market, from enterprise portals to mid-tier enterprise applications. It supports systems with 1-2 CPUs and less than 8GB of memory. It provides the same performance as Red Hat Enterprise Linux AS, except that it supports smaller systems and at a lower cost. Typical Red Hat Enterprise Linux ES application environments are: corporate WEB architectures, network edge applications (DHCP, DNS, firewalls, etc.), mail and file/print services, small to medium sized databases, and departmental applications.
- Red Hat Enterprise Linux WS (Workstation). A desktop/client partner for Red Hat Enterprise Linux AS and ES. With support for 1-2 CPU intel and AMD systems, Red Hat Enterprise Linux WS is the optimal environment for desktop applications. It includes a variety of popular desktop applications (Office tools, mail, instant messaging, browsers, etc.), and can run a variety of client-server configuration tools, software development tools, and applications (such as EDA and Oil/Gas applications). Red Hat Enterprise Linux Ws is compiled from the same source code as the server product, but it does not provide network services (e.g., DNS and DHCP) and is suitable only for client applications.
CentOS is compiled from the source code of Red Hat Enterprise Linux AS. The choice between CentOS and RedHat depends on your company’s technical capabilities and financial resources, and CentOS, like RHEL, has a 10-year lifecycle, meaning that a release will be maintained for 10 years.
SUSE Linux Enterprise(SLE) / openSUSE
SuSE Linux, based on Slackware Linux, was originally a version of Linux released by SuSE Linux AG in Germany. The first version was released in 1994, and in the early days there was only a commercial version, but after it was acquired by Novell in 2004, the OpenSUSE community was formed and launched its own community version, OpenSUSE.
OpenSUSE is aimed at developers and system administrators, and is very strict on security protocols. There are two main editions.
- Leap: uses the source code of SUSE Linux Enterprise, which makes it more stable, with a 3-year support cycle for each Major Release and a Minor Release updated within every 18 months. suitable for commercial applications.
- Tumbleweed: Based on Factory, OpenSUSE Major Development code base, following a rolling release model. This means that Tumbleweed contains the latest applications. Suitable for everyday use.
The openSUSE repository is careful to include software so that the number of software is slightly small, free software and non-free software are in separate repositories, and packages with disputed copyrights are placed in the packman repository and are disconnected from the company. To use openSUSE, you need to use three types of software sources: official sources, packman sources, and OBS sources.
Debian GNU/Linux
Debian, one of the first Linux distributions, was created as a project for public development and free distribution under the spirit of the GNU Project. It is a UNIX-like operating system composed entirely of free software, most of which is licensed under the GNU General Public License and packaged, developed, and maintained by a team of Debian Project participants.
Debian is known for its dedication to Unix and free software, and for the many choices it gives its users. Currently Debian offers over 25,000 pieces of software, over 50,000 packages, and official support for 10 computer system architectures.
Debian is ideal for individual users looking for performance and stability, and although ubuntu is based on Debian, it does not mean that Ubuntu is better than Debian. Debian is divided into three main versions: stable, testing, and unstable.
Debian releases a new version about every two years, and each version has a lifecycle of about three years, i.e. the old version is maintained for a year after the new version is released.
Debian is purely community-based, with no commercial component, and packages that conflict with free software are not included in the official sources. After installing Debian, by default it will not come with any closed-source software or things with disputed copyrights. No proprietary drivers are included by default; to install Flash, media codecs, etc. you have to add a few steps on your own.
Community-only Debian has been chosen as the upstream for many use-specific distributions. Such as Raspbian for open source hardware Raspberry Pi, Kali Linux and Parrot for hacker penetration testing, Tails for privacy and anonymity, etc.
Deepin Linux
Deep OS, also known as deepin, is a Linux distribution based on the stable version of Debian. Widely praised for its beauty and ease of use, deepin inherits all packages from Debian stable and provides popular software for its own repository. In addition, Deepin comes pre-installed with WPS Office, Sogou Input Method, Youdao Dictionary, NetEase Cloud Music, and some other applications developed specifically for Deepin, which are commonly used by users in mainland China. Deepin is a strategic partner of CodeWeavers. a version of CodeWeavers’ CrossOver is bundled with Deepin, now Deepin’s CrossOver license has expired, but Deepin has developed Deepin-wine based on wine, so Deepin can still It can still run some software on Windows, such as Tencent QQ.
Ubuntu
Ubuntu is a desktop application-based Linux distribution, Ubuntu is distributed by Canonical, who provide commercial support, Canonical generates revenue by selling technical support and other services related to Ubuntu.
Ubuntu is based on the Debian distribution and the GNOME desktop environment, and differs from Debian in that it releases a new version every 6 months (i.e., April and October each year) and an LTS long-term support release every 2 years. The regular desktop version gets support for 18 months after release, and the desktop version labeled LTS (Long Term Support) gets 5 years of support. Because Ubuntu is based on Debian’s unstable branch (unstable), it is more likely to encounter and pop up internal errors.
Ubuntu is one of the famous Linux distributions and it is also the most user-friendly version of Linux today. It is currently supported by a large community power and users can easily get help from the community.
Derived systems.
- Linux Mint, an Ubuntu derivative that uses the Cinnamon desktop system.
- Elementary OS: Based on Ubuntu with a cool graphical interface like Mac OS X.
- Zorin OS: Ubuntu-based Linux distribution designed especially for Linux novices. It has a Windows-like graphical user interface and many applications similar to those available under Windows. zorin OS also comes with programs that allow users to run a lot of Windows software. The ultimate goal of the distribution is to provide a Linux alternative that can be used as a Windows replacement and allow Windows users to enjoy all the features of Linux while avoiding the hassle.
- Pop!_OS: A Linux distribution based on Ubuntu that features a customized GNOME desktop. pop!_OS is designed to make the desktop less cluttered, thus allowing users to focus on their work without distractions. The distribution was developed by Linux computer retailer System76.
- KDE neon: An Ubuntu-based Linux distribution featuring the latest KDE Plasma desktop and other KDE community software. The project also provides a rapidly updated repository of all the latest KDE software. The distribution is offered in two styles. One is a user style, which is used to allow interested parties to experience the latest KDE software as it is released. The other is a developer style, which is created as a platform for testing the latest KDE applications.
Gentoo
Gentoo is arguably the most customizable Linux system out there, mainly because you need to compile it yourself from the kernel onwards. Gentoo uses source code for package management, which actually doesn’t just control how many packages are installed, you can also control the compilation options, making the resulting program more what you expect. The fastest version running on the same hardware environment. Geetoo is aimed at enthusiast users, so don’t bother if your level is not up to par.
Arch Linux / Majaro
Arch Linux is also a highly customizable linux distribution. Unlike Gentoo, which is a binary package based distribution, Arch uses a rolling upgrade policy, which allows a single installation to be continually upgraded without the need to reinstall or solve the complications of system version upgrades. Arch systems are kept up to date by entering a single command, and Arch provides only a minimal system right out of the box, allowing users to configure their ideal environment to their liking by installing only the software they need. There is no official GUI configuration tool, and most system configuration is done by editing simple text files from the command line.
Arch Linux is not an operating system for the average user, but rather for those who are willing to toss and turn. arch Linux is not very well known or used, mainly because its development strategy is not to get more people to use it (the development team is just trying to develop a better system). The community believes that natural growth is better than the many problems associated with forced growth.
Core features of Arch Linux.
- Simplicity
- The system is an empty shelf, the system does not come with any common software, all the software has to be installed later by yourself.
- The repository in the Rang room, basically and on there to maintain consistency, not to do UI customization, functional expansion, etc., the original kind is what kind.
- Does not support the graphical configuration interface, by modifying the configuration file to configure the content.
- Avant-garde
- Support rolling update, one command can upgrade the system and software to the latest.
- Pragmatic
- No “religious” beliefs, as long as the tools used will be included in the repository, even some closed source software.
- Customization
- For users who are willing to do things themselves and read documentation to solve their own problems. Replace “user-friendly” with “user-centric (autonomous)”.
- Trade-offs
- Support only x64_x64 architecture, concentrating the main development manager in one place.
Based on the above characteristics, Arch Linux is not suitable for users who.
- Users who do not want to tinker with the system themselves (users who do not have the desire, ability and time to take care of the system) and expect it to work out of the box
- Users who have very high requirements for system stability, and for whom the stability of the system is greater than the new features
Manjaro Linux (or simply Manjaro) is a Linux distribution based on Arch Linux that uses Xfce, GNOME and KDE Plasma as its default desktop environment and, like Arch, is updated on a rolling basis. Manjaro Linux is based on Arch Linux, but has its own separate repository, and Manjaro aims to make the powerful Arch more user-friendly, using the famous Pacman and taking advantage of resources directly from AUR. Three repositories: the Unstable repository, which contains immature Arch packages that have a 1-2 day delay from Arch sources; the Test repository, which is synchronized weekly and contains packages from unstable Arch sources; and the Stable repository, which contains software that has been confirmed stable by the development team.
FreeBSD / OpenBSD / NetBSD
Of the free BSDs, FreeBSD is the most notorious. It must be said that Apple’s Mac OS X and iOS are also based on FreeBSD, which also has the largest number of Chinese references. The differences between the three are that FreeBSD focuses on performance, OpenBSD focuses on security, and NetBSD focuses on portability.
FreeBSD , it is important to emphasize that FreeBSD is not a Linux system! FreeBSD has two branches: stable and current, and as the name implies, stable is the stable version, while FreeBSD uses the Ports package management system, similar to Gentoo, which is based on source code distribution and must be programmed on the local machine before it can be run, but the Ports system is not as easy to use as the Portage system and is slightly more complex to use. It is the best choice as a server operating system, but does not have as complete hardware support as Linux, so it is not suitable as a desktop system.
**The OpenBSD homepage reports that OpenBSD has had “only two security vulnerabilities in all the days of its default installation”, meaning that (as anyone knows) none of the OpenBS D versions released in the last four years have not been breached by an attack from the Internet.
NetBSD is also a type of free BSD, and it is the lightest operating system based on BSD. It is currently capable of running on over 46 different hardware architectures. This portability makes NetBSD the best choice for embedded systems (computers that run in other devices, out of sight).
Personal desktop operating system selection
System recommendations.
- Linux beginner users: Deepin
- Linux intermediate users: Manjaro
- Linux advanced users: all advanced but also recommended? Choose freely according to your needs
- Machine learning algorithm development: Ubuntu (graphics card driver support best)
Currently I am using Manjaro + Deepin desktop environment
Server operating system selection
CentOS and Ubuntu Server are the most used operating systems by users on cloud servers today. How to choose between the two servers can be really difficult for users with OCD.
Key differences.
- CentOS is built on the commercial version of RedHat source code, Ubuntu is built on the community version of Debian
- CentOS uses the yum package manager, Ubuntu uses the apt-get package manager
- Ubuntu updates faster and uses newer packages than CentOS
- Ubuntu provides relatively more documentation, while CentOS has better commercial support services
Personal opinion.
- CentOS is relatively conservative, resulting in a relatively more stable service for large company online service environments
- Ubuntu Server packages are relatively new, especially for individuals or small businesses who are new or exploratory.
- Ubuntu’s support for graphics cards is relatively good, and Ubuntu Server is recommended for servers that use machine learning.
I am currently using: Ubuntu Server 20.04 LTS (previously used CentOS 7)
Docker OS Selection
Docker host OS
As a host, it is best to choose a Linux distribution designed for Docker containers that is.
- fairly small → you need only a minimal operating system
- Minimal tooling overhead
- Atomic updates
- Automatically run Docker background programs
- Read-only root filesystem
- Atomic update rollback (dual partition update scheme)
- Improved stability and security
Common systems.
Container Linux by CoreOS
Container Linux (once called CoreOS) is a lightweight operating system based on the Linux kernel, built for computer clustering infrastructure with a focus on automation, easy deployment, security, reliability and scalability. As an operating system, CoreOS provides the base functional environment needed to deploy applications within application containers as well as a set of built-in tools for service discovery and configuration sharing.
Fedora CoreOS is the official successor to CoreOS Container Linux, which reaches the end of its life on May 26, 2020 and will no longer receive updates.
RedHat Project Atomic
Red Hat has slimmed down its Linux operating system to create a hybrid technology that incorporates traditional virtualization approaches supported by VMware, Microsoft and Citrix. Red Hat describes the new initiative as “a new community project to develop technologies for creating lightweight Linux container hosts based on next-generation capabilities in the Linux ecosystem.” This means creating a new RHEL variant called Red Hat Linux Enterprise Atomic Host. Essentially, Project Atomic will be identical to Atomic Host in the same way that Fedora Project’s Fedora Linux is to RHEL itself.
The CentOS Atomic Host is a lightweight operating system designed to execute Docker containers, created from the standard CentOS 7 components and following the component versions of the Red Hat Enterprise Linux Atomic Host.
Fedora CoreOS
In early 2018, Red Hat acquired CoreOS and in June of that year announced the release of Fedora CoreOS as a new upstream distribution of CoreOS.Fedora CoreOS is a new version of Fedora built specifically for security and running containerized workloads at scale, and it is the successor to Fedora Atomic Host and CoreOS Container Linux is the successor project to Fedora Atomic Host and CoreOS Container Linux.
Fedora CoreOS is an auto-updating, minimal, holistic, container-centric operating system that is not only suitable for clusters, but can also run standalone and is optimized for running Kubernetes. It is designed to combine the benefits of CoreOS Container Linux and Fedora Atomic Host, integrating technologies such as Ignition in Container Linux with rpm-ostree and SELinux hardening in Project Atomic. The goal is to provide the best container host to run containerized workloads securely, at scale.
Snappy Ubuntu Core
Snappy is a software deployment and package management system first designed and built by Canonical for the Ubuntu cell phone operating system. The package is called “snap” and the tool is called “snapd” and runs on multiple Linux distributions to complete distribution upstream-led software deployments. The system is designed for mobile, cloud, IoT, and desktops.
RancherOS
RancherOS is an open source project from Rancher Labs designed to provide the smallest and simplest way to run Docker at scale in a production environment. It contains only the software necessary to run Docker, and its binary download package is only about 20MB. in RancherOS, everything is a container managed by Docker. rancherOS starts two instances of Docker. One, called System Docker, is the first process started by the kernel, PID 1. It replaces the initialization system in other Linux distributions, such as sysvinit or system, and is responsible for initializing system services such as udev, DHCP, and console, and managing all system services as Docker containers. The system Docker creates a special system service container, the user Docker, which is mainly responsible for creating containers. All user containers run in the user Docker container, so deleting all user containers does not affect the system containers running RancherOS services.
VMware Photon
VMware Photon OS is a Container Host system made by VMware. Since Photon OS can be deployed directly on the vSphere platform, it allows the system to remove a lot of unnecessary hardware drivers, making the system very lean and efficient.
Mesosphere DCOS
DCOS (Data Center Operating System) is the “core” of Mesos and an ecosystem of services and functional components around it.
Other systems: SmartOS, ResinOS, MicroOS, ClearLinux, Nano Server
Since I am not familiar with containerized content, I usually use it directly on Ubuntu Server, but I have not used the above systems, so I do not recommend them here.
Docker base image system
For example, if you want to start building from a Linux OS base image, you can refer to the following table to choose the right base image.
mirror name | size | usage scenario |
---|---|---|
busybox | 1.15MB | for temporary testing |
alpine | 4.41MB | primarily for testing, but can also be used in production environments |
centos | 200MB | mainly for production environments, CentOS/Red Hat support, often used for enterprise applications seeking stability |
ubuntu | 81.1MB | mainly for production environments, often used for artificial intelligence computing and enterprise applications |
debian | 101MB | mainly for production environments |
BusyBox
BusyBox is a streamlined toolbox that integrates more than a hundred of the most commonly used Linux commands and tools (such as cat, echo, grep, mount, telnet, etc.), and is only a few MB in size, making it easy to perform various quick verifications. BusyBox can run on a variety of POSIX environments, such as Linux (including Android), Hurd, FreeBSD, and so on.
Although the busybox image is small, it includes a large number of common Linux commands, so you can use it to quickly familiarize yourself with Linux commands.
alpine
Alpine OS is a security-oriented and lightweight Linux distribution. It differs from the usual Linux distributions in that Alpine uses musl libc and BusyBox to reduce system size and runtime resource consumption, yet is much more functionally complete than BusyBox. While keeping it lean, Alpine also provides its own package management tool, apk, which can be used to query and install various software directly through https://pkgs.alpinelinux.org/packages查询包信息 or through the apk command. Alpine Docker images also inherit these advantages from the Alpine Linux distribution. Compared to other Docker images, it is very small, only about 5MB (Ubuntu series images are close to 200MB), and has a very friendly package management mechanism. The official image is from the docker-alpine project. Docker has now officially started recommending the use of Alpine as the base image environment instead of the previous Ubuntu. This will bring several benefits, including faster image download, improved image security, easier switching between hosts, and less disk space. Most of the official Docker images already support Alpine as the base image, so migration can be done easily.