DocumentacióSistemaSistema operatiu

Sistema operatiu

Configurem el PC i instal·lem el sistema operatiu Alpine Linux.

Alpine Linux és una distribució Linux lleugera i orientada a la seguretat basada en musl libc i busybox.

Perquè aquesta guia sigui el més universal possible, només utilitza ordres estàndard compatibles amb POSIX. Com a resultat, hauria de funcionar sense problemes amb un ordinador personal tot i ser compatible amb la majoria de les altres plataformes de maquinari que executen un shell compatible amb POSIX.

Quin sistema operatiu utilitzar?

Utilitzem Alpine Linux. Això proporciona la millor estabilitat per a l’ordinador i fa que la configuració inicial sigui molt fàcil.

Alpine Linux està disponible per a la majoria de plataformes de maquinari. Hi ha tan poca necessitat de maquinari que es pot executar en un router.

Requisits

AlpineUbuntu
RAM128MB1GB
Emmagatzematge700MB2.5GB

Font(s):

Seguretat

Alpine Linux és petit, té una superfície d’atac mínima. Menys codi condueix a menys errors i vulnerabilitats, però no el fa més segur.

Alpine Linux diu que és més segur a causa de tots els binaris del camp d’usuari:

  • Es compilen com a Executables Independents de Posició (PIE)
  • Per defecte té activada la protecció Stack-Smashing (SSP)

Així, evitant l’explotació de zero-dia i altres vulnerabilitats. El PIE ho aconsegueix d’una manera interessant. Es carrega (i les seves dependències) en ubicacions aleatòries dins de la memòria virtual. La protecció contra l’eliminació de piles ajuda a detectar els excessos de la memòria intermèdia de la pila. L’SSP fa que els atacs de programació orientats al retorn siguin molt més difícils d’executar.

Ubuntu també ha implementat PIE per defecte a partir de 17.10 per a totes les arquitectures de l’arxiu Ubuntu. A més, l’Ubuntu té activada la protecció de la pila al nucli.

A més, Ubuntu està empaquetat amb un conjunt complet de biblioteques GNU C i eines estàndard. I, ja que GNU Compiler Collection conté aproximadament 15 milions de línies de codi (a partir de 2019). Per tant, es pot entendre que amb una gran biblioteca arriba la sobrecàrrega de mantenir-se.

En el moment d’escriure:

CVE Details va informar de 6 CVE per a Alpine Linux i 90 per a Ubuntu. Buscant un CVE Mitre, “Alpine Linux” troba 10 registres CVE, mentre que “Ubuntu” troba 7063 registres CVE.

Font(s):

Components del nucli

musl libc vs. GNU glibc

musl libc és una reescriptura completa de C i proporciona una base de codi neta i moderna. Com a resultat, musl libc és lleuger i requereix uns 600 KB vs. GNU, que requereix uns 10 MB. A més, musl libc és el més adequat en casos de cantonada (corner cases), especialment amb fils d’execució. La baixa memòria o altres condicions d’esgotament de recursos mai són fatals per a la libc musl. Finalment, musl libc proporciona suport de primera classe per a text UTF-8/multilingüe.

Font(s):

BusyBox vs. GNU Core Utils

BusyBox combina petites versions d’utilitats UNIX comunes en un sol executable. I proporciona un reemplaçament minimalista per a la majoria de les utilitats que utilitzeu. També conté eines de GNU Coreutils, util-linux i altres. Les utilitats de BusyBox generalment tenen menys opcions que GNU Core Utils. Però les opcions proporcionen la mateixa funcionalitat esperada. I BusyBox hauria de comportar-se de manera similar a GNU Core Utils. BusyBox elimina algunes extensions de GNU, dades de localització i molt més.

GNU Utilities ofereix moltes més eines i és retrocompatible. Per descomptat, això el fa més extens i complex que BusyBox. Podeu instal·lar GNU Core Utils a Alpine Linux si cal.

Font(s):

APK vs. APT

Ubuntu utilitza APT per a la gestió de paquets. Per tant, la instal·lació i eliminació del programari es gestiona mitjançant la utilitat apt. D’altra banda, Alpine utilitza l’APK per a la gestió de paquets. Per tant, la instal·lació del programari es gestiona mitjançant la utilitat apk add. De la mateixa manera, apk del es pot utilitzar per eliminar un paquet. Així, tant les utilitats APK com APT funcionen de manera similar.

Aquestes són algunes de les diferències quan s’utilitzen aquestes ordres:

APT (Ubuntu)APK (Alpine)
Actualitzacióapt updateapk update
Afegir paquetapt install pkg1 pkg2apk add pkg1 pkg2
Reinstal·lar paquetapt install --reinstall pkgapk del pkg; apk add pkg
Cercarapt-cache search keywordapk search keyword
Eliminar paquetapt remove pkgapk del pkg

APK és més ràpid que APT. APT requereix un consum intens de recursos, ja que requereix tres operacions de lectura i dues escriptures. L’APK, gairebé sempre, es completa abans que altres gestors de paquets. El procés APK només requereix una lectura i una escriptura.

Ash vs. Dash

Ubuntu utilitza el shell de Debian Almquist (Dash). El shell d’Almquist (també conegut com ash o sh) s’utilitza a Alpine Linux. Ash és més lleuger que Dash. Dash i Ash no són 100% compatibles, però poques vegades trobareu inconsistències.

Font:

Graveu la imatge d’Alpine Linux a USB/SD

Microbolt s’ha provat actualment amb Alpine Linux 3.20 en una arquitectura x86_64, no s’ha provat en altres distribucions, arquitectures o versions anteriors i no hi ha cap garantia que funcioni bé amb elles.

Baixeu Alpine Linux anant al lloc web oficial

https://alpinelinux.org/downloads/

NormalmentPCRaspberry Pi {3,4,5}
versióstandardraspberry pi
arquitecturax86_64aarch64

També hi ha imatges oficials pel núvol aquí, utilitzeu-les sota la vostra propia responsabilitat

Connecteu l’USB/SD al vostre ordinador amfitrió

Graveu-la

dd if=<arxiu-iso> of=<dispositiu-objectiu> bs=4M; eject <dispositiu-objectiu>

Inicieu l’ordinador

  • Connecteu el USB/SD al vostre ordinador
  • Connecteu una pantalla, un teclat i un cable Ethernet
  • Entreu al menú de configuració de la BIOS o d’arrencada i seleccioneu el USB/SD que heu gravat

Alguns ordinadors tenen l’opció d’iniciar-se automàticament després d’una pèrdua d’energia, és interessant activar-lo si voleu assegurar-vos que el vostre node estigui disponible el més aviat possible en la vostra absència.

Instal·lació d’Alpine Linux

Alpine Linux es pot utilitzar en qualsevol dels tres modes següents

Mode Diskless

Arranqueu des d’un mitjà de només lectura, com ara el CD d’instal·lació, una unitat USB o una targeta Compact Flash.

Quan utilitzeu Alpine en aquest mode, heu d’utilitzar Alpine Local Backup (lbu) per desar les vostres modificacions entre reinicis. Això requereix algun mitjà d’escriptura, normalment desmuntable. (Si el vostre mitjà d’arrencada és, per exemple, una unitat USB, podeu desar-hi les modificacions; no necessiteu una partició o una unitat separades.) Vegeu també Caché APK local.

Mode Data

Igual que en el mode diskless, el vostre sistema operatiu s’executa des d’un mitjà de només lectura. Tanmateix, aquí s’utilitza una partició escrivible (normalment en un disc dur) per emmagatzemar les dades a /var. S’accedeix a aquesta partició directament, en lloc de copiar-se en un tmpfs; de manera que això és més adequat per a usos on s’han de conservar grans quantitats de dades entre reinicis.

Mode Sys

Aquesta és una instal·lació tradicional de disc dur. Tant el sistema d’arrencada com les vostres modificacions s’escriuen al disc dur, en una jerarquia estàndard de Linux.

  • Inicieu sessió amb l’usuari root (no cal cap contrasenya)

  • Configura les variables d’entorn, els valors per defecte són:

Els valors predeterminats no és necessari configurar-los, aquest bloc de codi és per a referències si voleu personalitzar la vostra instal·lació

export BOOT_SIZE=100 #Size of the boot partition in MB; defaults to 100
export SWAP_SIZE= #Size of the swap volume in MB; set to 0 to disable swap
export ROOTFS=ext4 #Filesystem for / volume; supported: ext{2,3,4} btrfs xfs
export BOOTFS=ext4 #Filesystem for /boot volume; supported: ext{2,3,4} btrfs xfs
export VARFS=ext4 #Filesystem for /var volume; supported: ext{2,3,4} btrfs xfs
export BOOTLOADER=syslinux #Bootloader to use; supported: grub syslinux zipl
export DISKLABEL=dos #Disklabel to use; supported: dos gpt eckd
  • Executeu setup-alpine

Introduïu el següent a l’indicador de l’instal·lador:

Keymap

Select keyboard layout: none (o el que mes et convingui)

Hostname

Enter system hostname nakamoto01

Interface

Which one do you want to initialize? eth0

Ip address for eth0? dhcp (o el que mes et convingui)

Do you want to do any manual network configuration? n

Root Password

New password: changeme

Retype password: changeme

Timezone

Which timezone are you in? UTC (o el que mes et convingui)

Proxy

HTTP/FTP proxy URL? none (o el que mes et convingui)

Network Time Protocol

Which NTP client to run? busybox (o el que mes et convingui)

APK Mirror

Enter mirror number or URL: c

Enter mirror number or URL: f (o el que mes et convingui)

User

Setup a user? no

Which ssh server? dropbear (o el que mes et convingui)

Disk and install

Which disk(s) would you like to use: none

Enter where to store configs none

Enter apk cache directory none

  • Configuració del disc d’instal·lació
DEFAULT_DISK=none setup-disk -q

Which disk would you like to use: sdX (trieu el disc dur, normalment sda)

How would you like to use it? sys

WARNING: Erase the above disk(s) and continue? y

La vostra instal·lació haurà acabat quan vegeu això: Installation is complete. Please reboot.

  • Reinicieu
reboot
💡

Si heu exportat SWAP_SIZE=0, podeu crear un swapfile a l’arrencada següent

  • Assigna el fitxer d’intercanvi
dd if=/dev/zero of=/var/swapfile bs=1K count=4M
mkswap /var/swapfile
chmod 600 /var/swapfile
  • Posa el fitxer d’intercanvi a l’fstab
printf "%s\n" \
    "/var/swapfile none swap sw 0 0" \
    >> /etc/fstab
  • Inicieu i activeu el fitxer d’intercanvi a l’arrencada
rc-service swap start
rc-update add swap default