Alpine Linux

Last updated

Alpine Linux
Alpine Linux.svg
Developer Alpine Linux development team
OS family Linux (Unix-like)
Working stateActive
Source model Open source
Initial releaseAugust 2005;18 years ago (2005-08) [1]
Latest release 3.19.1 / 26 January 2024;2 months ago (2024-01-26) [2]
Repository
Marketing targetGeneral-purpose. Security, embedded systems and other resource-constrained systems, such as containers. [3]
Available in Multilingual
Package manager apk-tools
Platforms
Kernel type Monolithic (Linux)
Userland BusyBox
Default
user interface
Ash
Official website alpinelinux.org

Alpine Linux is a Linux distribution designed to be small, simple, and secure. [3] It uses musl, BusyBox, and OpenRC instead of the more commonly used glibc, GNU Core Utilities, and systemd. [4] [5] [6] [7] [8] This makes Alpine one of few Linux distributions not to be based on the GNU Core Utilities. [9]

Contents

For security, Alpine compiles all user-space binaries as position-independent executables with stack-smashing protection. [10]

Because of its small size and rapid startup, it is commonly used in containers providing quick boot-up times, [11] [12] on virtual machines as well as on real hardware in embedded devices, such as routers, servers and NAS.[ citation needed ]

History

Originally, Alpine Linux began as an embedded-first distribution for devices such as wireless routers, based on Gentoo Linux, [13] inspired by GNAP and the Bering-uClibc branch of the LEAF Project. [1] Founder Natanael Copa has said that the name was chosen as a backronym for "A Linux-Powered Network Engine" or some similar phrase, but that the exact phrase has since been forgotten. [14]

Alpine's package management system, the Alpine Package Keeper, [15] was originally a collection of shell scripts [16] but was later rewritten in C. [17] The aim of this package manager is to achieve a high install and update speed, which it does by writing new data directly in-place into the operating system's file system, rather than employing caching or compression. [14]

In 2014, Alpine Linux switched from uClibc to musl as its C standard library. [18]

A PaX hardened kernel was included in the default distribution to aid in reducing the impact of exploits and vulnerabilities, [19] but Alpine's maintainers chose to discontinue this support due to the PaX patch no longer being made publicly available. [20] Alpine still uses a hardened toolchain and position-independent executables to minimize the potential for stack-based attacks, [14] but is now based on the standard long term stable distribution of the Linux kernel.

Features

Alpine's primary feature is its small size, which enables it to start quickly and run in environments very low in memory and storage, such as containers or embedded devices.

Alpine Linux can optionally be installed as a run-from-RAM operating system. This allows Alpine to work reliably in demanding embedded environments or to (temporarily) survive partial disk failures as sometimes experienced in public cloud environments. By default, Alpine running in this mode will only load a few key packages, but a tool called LBU (Alpine Local Backup) [21] is made available that allow changes in this boot configuration to be written to a special file called an APK overlay file (usually shortened to apkovl), a tar.gz file that by default stores a copy of all files in /etc that have been changed from the default configuration, with the option to track more directories as needed.

Alpine offers a number of preinstalled configuration scripts which guide the user through initial configuration of the system for common computing tasks. [22] In addition, Alpine also offers a webserver-based tool known as the Alpine Configuration Framework, which allows users less familiar with Alpine or the command line to configure the operating system in a way similar to that allowed by Debian's debconf utility. Alpine's configuration scripts are written entirely as UNIX shell scripts, which call a small ISO image parsing utility written in C and distributed in Alpine. The Alpine Configuration Framework is scripted in Lua. [23]

Derivatives

postmarketOS, a Linux distribution for mobile devices, is based on Alpine Linux. [24]

Due to its robustness and compactness, Alpine Linux got tightly integrated with popular developer and system administrator environments and toolsets.

Related Research Articles

<span class="mw-page-title-main">Linux distribution</span> Operating system based on the Linux kernel

A Linux distribution is an operating system made from a software collection that includes the Linux kernel and often a package management system. Linux users usually obtain their operating system by downloading one of the Linux distributions, which are available for a wide variety of systems ranging from embedded devices and personal computers to powerful supercomputers.

<span class="mw-page-title-main">Package manager</span> Software tools for handling software packages

A package manager or package-management system is a collection of software tools that automates the process of installing, upgrading, configuring, and removing computer programs for a computer in a consistent manner.

Almquist shell is a lightweight Unix shell originally written by Kenneth Almquist in the late 1980s. Initially a clone of the System V.4 variant of the Bourne shell, it replaced the original Bourne shell in the BSD versions of Unix released in the early 1990s.

<span class="mw-page-title-main">Embedded operating system</span> Type of computer operating system

An Embedded Operating System (EOS) is an operating system designed specifically for embedded computer systems. These systems aim to enhance functionality and reliability to perform dedicated tasks. When the multitasking method employed allows for timely task execution, such an OS may qualify as a real-time operating system (RTOS).

<span class="mw-page-title-main">GNU GRUB</span> Boot loader package

GNU GRUB is a boot loader package from the GNU Project. GRUB is the reference implementation of the Free Software Foundation's Multiboot Specification, which provides a user the choice to boot one of multiple operating systems installed on a computer or select a specific kernel configuration available on a particular operating system's partitions.

<span class="mw-page-title-main">Arch Linux</span> Rolling release distribution of Linux

Arch Linux is an independently developed x86-64 general-purpose Linux distribution that strives to provide the latest stable versions of most software by following a rolling-release model. The default installation is intentionally minimal so that users can add only the packages they require.

uClibc Implementation of C standard library for embedded systems based on Linux

In computing, uClibc is a small C standard library intended for Linux kernel-based operating systems for embedded systems and mobile devices. uClibc was written to support μClinux, a version of Linux not requiring a memory management unit and thus suited for microcontrollers.

<span class="mw-page-title-main">UEFI</span> Operating system and firmware specification

Unified Extensible Firmware Interface is a specification that defines the architecture of the platform firmware used for booting the computer hardware and its interface for interaction with the operating system. Examples of firmware that implement the specification are AMI Aptio, Phoenix SecureCore, TianoCore EDK II, InsydeH2O. UEFI replaces the BIOS which was present in the boot ROM of all personal computers that are IBM PC compatible, although it can provide backwards compatibility with the BIOS using CSM booting. Intel developed the original Extensible Firmware Interface (EFI) specification. Some of the EFI's practices and data formats mirror those of Microsoft Windows. In 2005, UEFI deprecated EFI 1.10.

Technical variations of Linux distributions include support for different hardware devices and systems or software package configurations. Organizational differences may be motivated by historical reasons. Other criteria include security, including how quickly security upgrades are available; ease of package management; and number of packages available.

rm (Unix) Unix command utility

rm is a basic command on Unix and Unix-like operating systems used to remove objects such as computer files, directories and symbolic links from file systems and also special files such as device nodes, pipes and sockets, similar to the del command in MS-DOS, OS/2, and Microsoft Windows. The command is also available in the EFI shell.

<span class="mw-page-title-main">NetworkManager</span> Software

NetworkManager is a daemon that sits on top of libudev and other Linux kernel interfaces and provides a high-level interface for the configuration of the network interfaces.

A package format is a type of archive containing computer programs and additional metadata needed by package managers. While the archive file format itself may be unchanged, package formats bear additional metadata, such as a manifest file or certain directory layouts. Packages may contain either source code or executable files.

<span class="mw-page-title-main">Software remastering</span>

Software remastering is software development that recreates system software and applications while incorporating customizations, with the intent that it is copied and run elsewhere for "off-label" usage. The term comes from remastering in media production, where it is similarly distinguished from mere copying.

systemd Suite of system components for Linux

systemd is a software suite that provides an array of system components for Linux operating systems. The main aim is to unify service configuration and behavior across Linux distributions. Its primary component is a "system and service manager" – an init system used to bootstrap user space and manage user processes. It also provides replacements for various daemons and utilities, including device management, login management, network connection management, and event logging. The name systemd adheres to the Unix convention of naming daemons by appending the letter d. It also plays on the term "System D", which refers to a person's ability to adapt quickly and improvise to solve problems.

OpenWrt is an open-source project for embedded operating systems based on Linux, primarily used on embedded devices to route network traffic. The main components are Linux, util-linux, musl, and BusyBox. All components have been optimized to be small enough to fit into the limited storage and memory available in home routers.

dracut (software) Software to automate the Linux boot process

Dracut is a set of tools that provide enhanced functionality for automating the Linux boot process. The tool named dracut is used to create a Linux boot image (initramfs) by copying tools and files from an installed system and combining it with the Dracut framework, which is usually found in /usr/lib/dracut/modules.d.

musl Implementation of C standard library for Linux operating system

musl is a C standard library intended for operating systems based on the Linux kernel, released under the MIT License. It was developed by Rich Felker to write a clean, efficient, and standards-conformant libc implementation.

<span class="mw-page-title-main">Buildroot</span>

Buildroot is a set of Makefiles and patches that simplifies and automates the process of building a complete and bootable Linux environment for an embedded system, while using cross-compilation to allow building for multiple target platforms on a single Linux-based development system. Buildroot can automatically build the required cross-compilation toolchain, create a root file system, compile a Linux kernel image, and generate a boot loader for the targeted embedded system, or it can perform any independent combination of these steps. For example, an already installed cross-compilation toolchain can be used independently, while Buildroot only creates the root file system.

postmarketOS Free and open-source operating system for smartphones, based on Alpine Linux

postmarketOS is an operating system primarily for smartphones, based on the Alpine Linux distribution.

References

  1. 1 2 "Re: [leaf-devel] 2.6.x kernel support?". SourceForge.
  2. "Alpine 3.19.1 released". 26 January 2024. Retrieved 26 January 2024.
  3. 1 2 "about | Alpine Linux". alpinelinux.org.
  4. says, GigaTux (24 August 2010). "Alpine Linux 2 review | LinuxBSDos.com".
  5. Security-Oriented Alpine Linux 3.7 Has UEFI Support, GRUB Support in Installer, Softpedia News
  6. 10 Most Secure Linux Distros For Complete Privacy & Anonymity | 2017 Edition, FossBytes
  7. Noyes, Katherine (9 February 2016). "Is Docker ditching Ubuntu Linux? Confusion reigns". Network World.
  8. "OpenRC - Alpine Linux". wiki.alpinelinux.org.
  9. "What is Alpine Linux? | Definition from TechTarget". IT Operations. Retrieved 24 November 2023.
  10. "Alpine Linux official website under Secure section". alpinelinux.org/.
  11. "Meet Alpine Linux, Docker's Distribution of Choice for Containers". 28 March 2017.
  12. "Review: Alpine Linux is made for Docker". InfoWorld. 10 July 2017.
  13. "Re: [leaf-devel] 2.6.x kernel support?". SourceForge.
  14. 1 2 3 Small, Simple, and Secure: Alpine Linux under the Microscope , retrieved 30 June 2023
  15. "Alpine Package Keeper - Alpine Linux". wiki.alpinelinux.org.
  16. "apk-tools". SourceForge. 18 April 2013.
  17. "apk-tools - Alpine package manager". git.alpinelinux.org.
  18. "Release notes". alpinelinux.org. Retrieved 6 May 2018.
  19. "Alpine 3.8.0 released | Alpine Linux". alpinelinux.org. Retrieved 27 April 2022.
  20. "How does Alpine Linux harden its kernel? — alpinelinux lists". lists.alpinelinux.org. Retrieved 30 June 2023.
  21. "Alpine local backup - Alpine Linux". wiki.alpinelinux.org.
  22. alpine-conf, Alpine Linux, 17 June 2023, retrieved 30 June 2023
  23. "Alpine Configuration Framework Design - Alpine Linux". wiki.alpinelinux.org.
  24. "postmarketOS // real Linux distribution for phones". postmarketos.org. 28 April 2022.
  25. "Get Alpine WSL from the Microsoft Store". apps.microsoft.com. Retrieved 14 April 2023.
  26. "How to Use the Alpine Docker Official Image | Docker". www.docker.com. 8 September 2022. Retrieved 14 April 2023.
  27. sdwheeler (17 March 2023). "Installing PowerShell on Alpine Linux - PowerShell". learn.microsoft.com. Retrieved 14 April 2023.