Alpine linux as desktop

Small. Simple. Secure.

Alpine Linux is a security-oriented, lightweight Linux distribution based on musl libc and busybox.

Downloads

Current Alpine Version 3.14.2 (Released Aug 27, 2021)

Standard

Alpine as it was intended. Just enough to get you started. Network connection is required.

aarch64 sha256 GPG
ppc64le sha256 GPG
s390x sha256 GPG
x86 sha256 GPG
x86_64 sha256 GPG

Extended

Most common used packages included. Suitable for routers and servers. Runs from RAM. Includes AMD and Intel microcode updates.

Netboot

Kernel, initramfs and modloop for netboot.

aarch64 sha256 GPG
armhf sha256 GPG
armv7 sha256 GPG
ppc64le sha256 GPG
s390x sha256 GPG
x86 sha256 GPG
x86_64 sha256 GPG

Raspberry Pi

Includes Raspberry Pi kernel. Designed for RPI 1, 2, 3 and 4. And much more.

aarch64 sha256 GPG
armhf sha256 GPG
armv7 sha256 GPG

Generic ARM

Has default ARM kernel. Includes the uboot bootloader. Supports armv7 and aarch64.

Mini root filesystem

Minimal root filesystem. For use in containers and minimal chroots.

aarch64 sha256 GPG
armhf sha256 GPG
armv7 sha256 GPG
ppc64le sha256 GPG
s390x sha256 GPG
x86 sha256 GPG
x86_64 sha256 GPG

Virtual

Similar to standard. Slimmed down kernel. Optimized for virtual systems.

aarch64 sha256 GPG
armv7 sha256 GPG
x86 sha256 GPG
x86_64 sha256 GPG

Built-in support for Xen Hypervisor. Includes packages targetted at Xen usage. Use for Xen Dom0.

Источник

Alpine newbie install manual

Alpine Linux can be installed via many ways, the most common ones are listed here, for more information see last section of this document.

  • Computer device like PC, laptop, or Raspberry, are forms or a name for machines that uses the software named «Operating System» like Alpine Linux, the target of a «install process» to property put the Alpine system.
  • Image file means it is a type of file that is downloaded and burned to a CD/DVD or dumped to a USB with popular programs (such as Nero, CloneCD, Brasero), although in the modern era it’s not the only way (Raspberri’s).
  • Boot or Booting means «Boot» (started from a media source) a disc recorded on DVD/CD or USB from the disc drive or from a USB port respectively, the computer boots this device and loads the Alpine operating system. Today that means involved with BIOS and UEFI systems.

Alpine Linux is an OS (Operating System) that runs on top of a machine, desktop, laptop, Virtual Machine, or Docker Container. Specifically, Alpine Linux is a [Linux OS Distribution] which provides the Linux kernel and a collection of userland programs and applications such as an internet web browser.

Setup_modes of Alpine operation: Alpine Linux is designed to run from RAM directly, which means the download image is already a fully installed, but a minimally configured system. Review the Setup_modes of Alpine operation for permanent installation options on most devices.

Contents

Additional Details

Requirements

Alpine Linux has low system requirements. Nowadays almost hardware is supported, More requirements documentation can be found on the Requirements wiki page:

Memory

  • At least 128 MB of RAM for a server without a GUI.
  • At least 1.6 GB for graphical desktop
  • At least 4 GB for heavy Firefox or Chromium usage!

More documentation is available on the Memory requirements section wiki page.

Storage

  • At least 1 GB storage device for a server without a GUI
  • At least 10 GB for graphical desktop, or 80 GB overall

More documentation regarding requirements is available on the Storage requirements section wiki page

The majority of GPUs are supported, but for advanced features, 3D acceleration is managed by the MESA project:

  • Intel: mostly any Intel with one exception, intel i810/i815 will lack features because of its 4Mb memory, Mesa and Linux have dropped their support.
  • ATI/AMD: Only Radeon series with the exception of the last two years with respect to the Alpine release, Rage r128/match64 series has limited support.
  • Nvidia: Limited. Only a few are completly supported. Not all features are enabled.
  • Matrox: Not all features are supported. Just because they are shipped on most servers.
  • Sis: Limited features are supported. Code not updated on Xorg and Linux kernel.
  • Via: Limited features are supported. Openchrome code not updated on Xorg and Linux kernel.

More documentation available on the Peripheral requirements section wiki page.

Ways to install Alpine into machines listed by user cases

We have here many ways listed how you can put Alpine Linux in your computer device, PLEASE CHOOSE A USE CASE MOST CLOSE TO YOUR SETUP:

by booting a source downloaded file ISO on USB or CD/DVD/BR

  1. Alpine Install: from a disc to a virtualbox machine single only, install Alpine into VirtualBox virtual machine, use if you have a VirtualBox virtual machine and only want to test it out
  2. Alpine Install: from a disc to a any computer single only boot, install Alpine into a real modern machine by burning a disc that will boot if you have
Читайте также:  Windows запретить смену времени

UEFI or BIOS hardware and will be installing Alpine via a CD/DVD drive.

  1. Alpine Install: from a usb to a any computer single only boot, install Alpine into real modern machine by creating a USB drive unit that will boot if you have UEFI or BIOS hardware and will be installing Alpine via a USB drive.
  2. Alpine Install: from a usb to any computer dual boot linux Debian, install Alpine into most machines by creating a USB drive unit that will boot if you have common hardware and want another Linux distro as your main OS via USB boot.
  3. Alpine Install: from a usb to any computer dual boot linux Alpine, install Alpine into most machines by creating a USB drive unit that will boot if you have common hardware and want Alpine Linux as your main OS via USB boot.
  4. Alpine Install: from a disc to a old computer single only boot, (special case for very very old PC or laptop hardware) by burning a disc that will boot if you have BIOS only hardware and will be installing Alpine on it via CD/DVD drive.
  5. Alpine Install: from a disc to PC Engines APU: to install Alpine onto a second generation PC Engines APU system. Tested with an apu2d4 using latest alpine.

by using from linux already started to new partition

  1. Alpine Install: from alpine mirror to a new computer by chroot, install Alpine on a real (i.e. not virtual) modern machine directly using the Alpine mirror sources if you will be using Alpine inside another Linux installation via chroot.
  2. Alpine Install: from alpine mirror to an external disc by chroot, install Alpine on a real (i.e. not virtual) modern machine directly using the Alpine mirror sources if you extracted the disc for use with an existing instance of Linux.
  3. Alpine Install: from a iso to a virtualbox machine with external disc, install Alpine on a VirtualBox external disc machine. Use if you have an older computer that doesn’t boot, but need to extract the disc to prepare it for use.

by booting through network install media

  1. Alpine Install: from a tarball to a bootable ARM device, install Alpine on an ARM based device. Use if you have a ARM based network capable install device.
  • Alpine on ARM for those who need to dump to ARM based hardware
  • by booting from external devices

    If the computer does not automatically boot from the desired device, one needs to bring up the boot menu selection for choosing the media to boot from. Depending on the computer the menu may be accessed by quickly pressing pressing a key repeatedly when booting starts. Sometimes you need to press the button before starting the computer and hold it down during bootup. Typical keys are: `F9`-`F12`, sometimes `F7` or `F8`. If these don’t bring up the boot menu, it may be necessary to enter the BIOS configuration and adjust the boot settings. Typical keys are: `Del` `F1` `F2` `F6` or `Esc.`

      • Alpine Install: from a disc to PC Engines APU: to install Alpine into second generation PC Engines APU systems. Tested with an apu2d4 using latest Alpine.
      • Bootstrapping Alpine on PC Engines ALIX.3
      • Alpine on ARM fisrt main reference to any ARM device

    Ways to install Alpine listed by architectures

    x86_64 x86_32 x86

    The all popular 32 bit intel (i386 pc 32bit) and x86_64 (i686 pc 64bit and amd64)compatible (both)

      • Alpine Install: from a disc to a virtualbox machine single only, install Alpine into VirtualBox virtual machine, use if you have a VirtualBox virtual machine and only wants to take a shoot into it.
      • Alpine Install: from a disc to a any computer single only boot, install Alpine into a real modern machine by burning a disc that will boot if you have a UEFI or BIOS hardware and will be only Alpine into it through CD/DVD drive.
      • Alpine Install: from a usb to a any computer single only boot, install Alpine into real modern machine by creating a USB drive unit that will boot if you have a UEFI or BIOS hardware and will be only Alpine into it through USB drive.
      • Alpine Install: from a usb to any computer dual boot linux Debian, install Alpine into most common machine by creating a USB drive unit that will boot if you have common hardware and want another Linux as main OS through USB boot.
      • Alpine Install: from a usb to any computer dual boot linux Alpine, install Alpine into most common machine by creating a USB drive unit that will boot if you have common hardware and want Alpine Linux as main OS through USB boot.
      • Alpine Install: from a disc to a old computer single only boot, especial case for very very older hardware computers PC or laptops by burning a disc that will boot if you have a BIOS only older hardware and will be only Alpine into it through CD/DVD drive.
      • Bootstrapping Alpine on PC Engines ALIX.3
      • Alpine Install: from a disc to PC Engines APU: to install Alpine into second generation PC Engines APU systems, it were tested with an apu2d4 using alpine lasted.
    Читайте также:  Unity web player windows 10 что это

    ppc64le

    For the PowerPC devices with pure little-endian mode, mostly for POWER8 and POWER9

        Alpine Install: from a disc to a any computer single only boot, install Alpine on a real (i.e. ot virtual) modern machine by burning a disc that will boot if you have UEFI or BIOS hardware and will be installing Alpine on it via a CD/DVD drive.

      Alpine Install: from a usb to a any computer single only boot, install Alpine on real (i.e. ot virtual) modern machine by creating a USB drive that will boot if you have UEFI or BIOS hardware and will be installing Alpine on it via a USB drive.

      armhf armv7

      ARM based hardware that does not have CD/DVD/BR boot support, only execution state of the ARMv7 devices machines. Including video game consoles; the newer ARM hard-float for newer, more powerful, 32-bit as well as 64-bit devices.

      aarch64

      The 64-bit ARM only execution state of the ARMv8 device machines.

          Alpine Install: from a usb to a any computer single only boot, install Alpine on a real (i.e. not virtual) modern machine by creating a USB drive unit that will boot if you have UEFI or BIOS hardware and will be installing Alpine on it via a USB drive.

        s390x

        For the Super powered IBM mainframes, especially IBM Z and IBM LinuxONE servers

        Источник

        Зачем забивать гвозди микроскопом, если есть Alpine Linux?

        По зову сердца и работе в Digital Design в качестве системного инженера, мне часто приходится сталкиваться с переусложненными программными продуктами и архитектурными конструкциями. Это вызывает страстное желание минимизации и упрощения всего, что попадается под руку, и приводит к восторгу от человеческих решений, просто делающих свою работу , без регистрации и смс .

        Так я и познакомился с Alpine Linux.

        Этот дистрибутив может вам понравиться по следующим причинам:

        • Если вы любите минимализм и инструменты, ориентированные на выполнение поставленной задачи без лишних свистелок и украшений;
        • Если вы заметили, что имеющиеся «мэйнстримные» дистрибутивы немного (?) раздуты и избыточны;
        • Если вы захотели решить имеющуюся задачу простым способом.

        Под «мэйнстримом» я подразумеваю тройку CentOS — Debian — Ubuntu (конечно же, ими мир не заканчивается), да простят меня все верующие в эти замечательные дистрибутивы. При их использовании, периодически, на границе восприятия, возникает колкая мысль – «а может быть можно проще?».

        Оно нам действительно надо?

        $ holywar mode disable
        Неужели для решения вашей небольшой задачи требуется все это:

        Замечательная systemd. Система инициализации (уже не совсем), которая может произвести впечатление системы управления шаттлом?

        Подсистема журналирования / аудита, построенная на связке вроде journald → rsyslogd + auditd?

        Можно догадываться, почему это сделано именно так, но действительно ли для моей простой задачи требуется такая цепочка?

        Дублирование функциональности периодического выполнения задач как в systemd, так и в crond?

        Сосуществование нескольких подсистем управления сетью в разных сочетаниях: классический networking / networkd / NetworkManager?

        Сервисы вида tuned и firewalld?

        Локальный почтовый сервис. Вы точно будете его использовать?

        Раз уж мы вспомнили про минимализм, можно очень грубо сравнить наши дистрибутивы-лидеры в их минимальном варианте установки:

        • Лидером избыточности по дисковому пространству и числу пакетов оказывается Ubuntu 18.04 (2,8 ГБ дискового пространства, 342 пакета, 31 активный сервис systemd, 15 процессов при входе). Семейство systemd тут представлено в максимальном объеме — systemd, networkd, timesyncd, resolved, logind, есть dbus.
        • CentOS 7.5.1804 проигрывает по диску и числу пакетов, но лидер по вероятно-избыточным сервисам (1.1 ГБ дискового пространства, 299 пакетов, 34 активных сервиса systemd, 19 процессов при входе, среди которых — NetworkManager, firewalld, tuned, postfix, polkitd, auditd, journald + rsyslogd, dbus).
        • Debian 9.4.0 пытались сильно не надувать: 940 МБ, 334 пакета, 25 активных сервисов systemd, 14 процессов при входе. Само собой, тут тоже есть systemd (а также journald, timesyncd и сопутствующий dbus), но без особого фанатизма в части управления сетью.

        holywar: cannot change mode to ‘disable’: Permission denied

        Хочется странного

        От части перечисленного выше можно (попробовать) избавиться вручную, но вдруг все уже придумано за нас? В идеале, от дистрибутива серверной операционной системы общего назначения хочется видеть:

        • Как ни странно, загрузчик, который дотянет нас до ядра;
        • Само ядро ОС (в рассматриваемом случае — linux);
        • Система инициализации, которую ядро запустит по готовности. Желательно, по простоте недалеко ушедшая от топора;
        • Минимальный набор процессов, который запустит система инициализации. Ну например:
          • Окончательная инициализация устройств и определение дополнительных параметров ядра;
          • Обеспечение журналирования (можно с текстовыми журналами? Ну пожалуйста);
          • Конфигурация сети (хорошо бы, с меньшим числом управляющих прослоек);
          • Синхронизация времени (ntpd / chronyd);
          • Несколько локальных консолей;
          • Опционально — периодическое выполнение задач (сrond);
          • Опционально — удаленный доступ к системе (sshd);
          • Хорошо бы еще сохранять и восстанавливать конфигурацию межсетевого экрана.

        И на этом почти все, остальное — дело менеджера пакетов. Меньше исполняемого кода и конфигурации – меньше багов, меньше багов – меньше багов. А система все также запущена и доступна по сети. Идея выглядит неплохо, теперь посмотрим, насколько близок к ней дистрибутив Alpine Linux.

        Про Alpine

        Чем может очаровать Alpine, особенно после CentOS? Отчаянным минимализмом!
        Ну и, конечно, отсутствием необходимости сертификации «Linux Systemd Certified Voldemort».

        Что сделали авторы:

        • Понизили число используемых базовых компонентов;
        • Выбрали модули поменьше и попрозрачнее;
        • Упростили процесс конфигурирования системы.

        • Чрезвычайно лаконичный процесс установки с использованием консольной утилиты setup-alpine;
        • В качестве загрузчика взят extlinux из состава проекта syslinux;
        • Небольшой инструмент сборки mkinitfs для создания временной файловой системы, используемой при загрузке;
        • Система инициализации openrc с определением зависимостей между сервисами, уровнями запуска и щепоткой скриптования;
        • Замена стандартной библиотеки GNU libc на более легковесную musl libc;
        • Вместо пакета GNU coreutils большинство стандартных системных утилит в несколько урезанном исполнении входят в состав пакета busybox, который может быть Вам знаком по встраиваемым решениям;
        • По умолчанию используется командный интерпретатор ash в составе busybox. Само собой, никто не мешает при необходимости поставить bash , ну и systemd ;
        • Собственный пакетный менеджер apk и собственная инфраструктура распространения пакетов.

        Кроме того, авторы реализовали ряд мер, ориентированных на повышение уровня защищенности базовой системы:

        • Применили патчи ядра grsecurity/PaX (про их эффективность мнения расходятся, но все же); Уже нет, спасибо коллеге из комментариев. Как раз 26 июня вышла версия 3.8.0.
        • Собрали пакеты с использованием режимов, снижающих вероятность эксплуатации ряда возможных уязвимостей.

        В итоге мы получаем систему, снабженную рядом дополнительных механизмов защиты, позволяющую решить имеющуюся задачу и занимающую около 130 МБ. В запущенной системе установлен 41 пакет и выполняется 13 пользовательских процессов, можно стучаться по ssh.

        И больше ничего. Осталось добавить то, что нужно вам (да и iptables с возможностью восстановления конфигурации при старте поставьте).

        Приоткроем крышку

        Обратите внимание – Alpine может пригодиться как учебная площадка при ознакомлении с ОС Linux! Увидеть логику работы компонентов субъективно проще, чем пытаться охватить сходу CentOS или Ubuntu:

        • Загрузчик нашей установленной системы прост, его конфигурация влезает в 12 строк:

        • Да и в /boot не слишком многолюдно:

        • А вот и запущенный загрузчик без модных обоев:

        • Ядро загружается, подхватывает initramfs, отрабатывает собственные шаги инициализации и вызывает команду init (которая, на самом деле, тоже идет в составе busybox). Init использует файл /etc/inittab:

        • И тут в явном виде прописано, что нужно запустить для инициализации системы:
          • Запустить 6 процессов getty, ожидающих на 6 виртуальных консолях локального входа пользователя.
          • Запустить систему инициализации openrc для поочередного достижения требуемых уровней инициализации (openrc использует не классические уровни инициализации 0-6, а собственные уровни/группы sysinit — boot — default).

        Далее состояние системы зависит от конфигурации openrc, а именно:

        • Переменных, заданных в файлах каталога /etc/conf.d;
        • Скриптов запуска, находящихся в каталоге /etc/init.d;
        • Привязки скриптов запуска к «группам инициализации»:

        Осталось прочитать скрипты запуска и обработать их с учетом уровней запуска и зависимостей.
        Можем на примере syslog (/etc/init.d/syslog) посмотреть, как выглядит скрипт запуска openrc.

        Как видите, это не всегда эти ваши нелюбимые «портянки»:

        Переменные, используемые при выполнении скрипта, определяются в соответствующем файле /etc/conf.d/syslog. В нашем случае, в файле определена переменная SYSLOGD_OPTS=»-Z».
        Обратите внимание — в скрипте декларативно определены зависимости данного сервиса.

        Openrc честно перебирает в заданном порядке скрипты запуска, достигает уровня «default» — и вот она, рабочая система!

        Демоны под крышкой

        Что же именно скрывается под скриптами запуска openrc? Как ни странно — набор задач и демонов, перечисленных ниже.

        Сначала, на уровне sysinit:

        • dmesg — выставляется уровень журналирования для сообщений от ядра;
        • devfs — монтируется и настраивается /dev;
        • mdev — запускается менеджер устройств;
        • hwdrivers — загружаются модули устройств на основе информации из /sys и /dev;

        Следующим идет уровень boot:

        • modules — загружаются модули ядра, перечень которых определен в /etc/modules;
        • hwclock — настраиваются аппаратные часы реального времени;
        • sysctl — задаются параметры ядра, определенные нами в /etc/sysctl.conf;
        • swap — подключается swap-раздел;
        • bootmisc — очищаются временные каталоги;
        • urandom — настраивается генератор случайных чисел;
        • keymaps — инициализируется раскладка клавиатуры;
        • hostname — задается имя машины, которое определено в /etc/hostname;
        • networking — поиск и инициализация интерфейсов с использованием информации из /etc/network/interfaces;
        • syslog — запускается демон журналирования из состава busybox;

        И наконец, уровень default:

        • chrony — запускается NTP-сервис;
        • crond — запускается сервис выполнения задач по расписанию;
        • acpid — запускается сервис отслеживания событий питания;
        • sshd — запускается сервис удаленного доступа.

      Ура, после выполнения этих шагов система готова к работе! Не забудем и про зависимости от перечисленных выше сервисов, которые были заданы в init.d файлах:

      • sysfs — монтирование /sys;
      • fsck — проверка и исправление файловых систем;
      • root — монтирование корневой системы на запись/чтение;
      • localmount — монтирование всех файловых систем, перечисленных в /etc/fstab;
      • klogd — журналирование событий ядра.

      Открываем одну из локальных консолей, где нас поджидает getty, вводим логин, после чего передаем пароль процессу login и получаем доступ к запущенному командному интерпретатору ash (при запуске которого выполняется содержимое файлов /etc/profile, /etc/profile.d/* и

      /.profile для подготовки пользовательского окружения).

      Ура, никаких дополнительных сущностей (несомненно, полезных в ряде случаев, вроде PAM) — а мы в системе!

      Осталось воспользоваться пакетным менеджером apk, и поискать нужные нам для нашей задачи пакеты. (Есть ли они там? Можно оценить это через веб-портал).

      А еще

      Дистрибутив Alpine не идеален, но его лаконичность меня действительно впечатлила, особенно в роли контейнера (всего 6 процессов — init, 4*getty, syslogd). Для меня он выглядит так, как должна выглядеть минимальная серверная операционная система (прости меня, CentOS!).

      Кроме того, он вполне подходит на роль учебной площадки, позволяющей увидеть, из чего состоит современный дистрибутив, не погружаясь сразу в пучину whateverd-сервисов и многократного дублирования функциональности в великолепно-многоуровнево-конфигурируемых-средствах на все случаи жизни.

      Источник

      Читайте также:  Заменить владельца файла linux
    Оцените статью