(No verifique esta instalacion la hizo Claude AI con ayuda de la instalacion de ArchLinux que la habia hecho previamente).

Instalación Alpine Linux — Mini Root FS Bootstrap

Particionado (UEFI/GPT)

fdisk -l       # identificá disco destino, asumimos /dev/sdb
cfdisk /dev/sdb
# EFI: 300M tipo EFI System
# Swap: 4G tipo Linux swap
# Root: resto tipo Linux filesystem

O manualmente:

fdisk /dev/sdb
g
n; 1; 2048; +300M; t; 1; 1   # EFI
n; 2; default; +4G; t; 2; swap
n; 3; default; default
w

Formateo y montado

mkfs.ext4 /dev/sdb3
mkswap /dev/sdb2
mkfs.fat -F 32 /dev/sdb1
mount /dev/sdb3 /mnt
mkdir -p /mnt/boot/efi
mount /dev/sdb1 /mnt/boot/efi
swapon /dev/sdb2

Bootstrap

wget https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/x86_64/alpine-minirootfs-3.21.3-x86_64.tar.gz

# -p es OBLIGATORIO para preservar permisos
tar -xzpf alpine-minirootfs-3.21.3-x86_64.tar.gz -C /mnt

Última versión en: https://alpinelinux.org/downloads/


Chroot

mount -t proc none /mnt/proc
mount -t sysfs none /mnt/sys
mount --bind /dev /mnt/dev
mount --bind /dev/pts /mnt/dev/pts
cp /etc/resolv.conf /mnt/etc/resolv.conf
chroot /mnt /bin/sh

Si tenés arch-chroot:

arch-chroot /mnt

Dentro del chroot

Repositorios y sistema base

cat > /etc/apk/repositories << EOF
https://dl-cdn.alpinelinux.org/alpine/v3.21/main
https://dl-cdn.alpinelinux.org/alpine/v3.21/community
EOF

apk update
apk add alpine-base linux-lts linux-firmware

Timezone

apk add tzdata
cp /usr/share/zoneinfo/America/Argentina/Buenos_Aires /etc/localtime
echo "America/Argentina/Buenos_Aires" > /etc/timezone

Hostname y hosts

echo "alpine" > /etc/hostname

cat > /etc/hosts << EOF
127.0.0.1   localhost
::1         localhost
127.0.1.1   alpine.localdomain  alpine
EOF

Teclado español

En Alpine/OpenRC el teclado no va en /etc/vconsole.conf (eso es systemd). Va en /etc/conf.d/keymaps:

apk add kbd-bkeymaps

cat > /etc/conf.d/keymaps << EOF
keymap="es"
extended_keymaps=""
EOF

rc-update add keymaps boot

Reloj de hardware

En OpenRC va en /etc/conf.d/hwclock, no en hwclock --systohc:

cat > /etc/conf.d/hwclock << EOF
clock="UTC"
clock_args=""
EOF

Si el reloj de hardware no usa UTC: clock="local"

Locale

Alpine con musl no usa locale-gen. Se configura en /etc/environment:

apk add musl-locales

cat > /etc/environment << EOF
LANG=es_AR.UTF-8
LC_ALL=es_AR.UTF-8
EOF

DNS (Claro/Personal/Movistar bloquean sitios)

# Quad9
cat > /etc/resolv.conf << EOF
nameserver 9.9.9.9
nameserver 149.112.112.112
EOF

Password root

passwd

fstab

Alpine no tiene genfstab, se hace a mano:

blkid   # anotá los UUID

cat > /etc/fstab << EOF
UUID=<uuid-sdb3>  /          ext4  defaults,noatime  0 1
UUID=<uuid-sdb1>  /boot/efi  vfat  defaults          0 2
UUID=<uuid-sdb2>  none       swap  sw                0 0
EOF

Servicios base de OpenRC

alpine-base reemplaza todas estas líneas — las agrega a los runlevels automáticamente:

apk add alpine-base

NO hace falta si instalaste alpine-base:

# apk add busybox-syslogd
# rc-update add devfs sysinit
# rc-update add dmesg sysinit
# rc-update add mdev sysinit
# rc-update add hwclock boot
# rc-update add modules boot
# rc-update add sysctl boot
# rc-update add hostname boot
# rc-update add bootmisc boot
# rc-update add syslog boot
# rc-update add mount-ro shutdown
# rc-update add killprocs shutdown
# rc-update add savecache shutdown

Verificá que quedó todo bien con:

rc-update show

GRUB (UEFI)

apk add grub grub-efi efibootmgr

grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=alpine

# Si el firmware tiene bugs y borra la entrada EFI:
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --removable

grub-mkconfig -o /boot/grub/grub.cfg

BIOS/MBR legacy:

apk add grub
grub-install /dev/sdb
grub-mkconfig -o /boot/grub/grub.cfg

os-prober para detectar otras distros

apk add os-prober
echo "GRUB_DISABLE_OS_PROBER=false" >> /etc/default/grub
os-prober
grub-mkconfig -o /boot/grub/grub.cfg

Salir y reiniciar

exit
umount -R /mnt
reboot

Post-instalación (ya en Alpine)

Usuario

adduser -G users,video,audio tu_usuario
addgroup tu_usuario wheel

apk add sudo
echo "%wheel ALL=(ALL:ALL) ALL" > /etc/sudoers.d/wheel

Shell

apk add bash fish
chsh -s /bin/bash tu_usuario

Wifi con NetworkManager

En OpenRC no se usa systemctl. Se usa rc-update y rc-service:

apk add networkmanager networkmanager-wifi wpa_supplicant

rc-update add networkmanager default
rc-service networkmanager start

nmtui   # para conectarse

Cambiar DNS (para que NetworkManager no sobreescriba):

nmcli connection show
nmcli connection modify "nombre_conexion" ipv4.dns "9.9.9.9 149.112.112.112"
nmcli connection modify "nombre_conexion" ipv4.ignore-auto-dns yes
nmcli connection down "nombre_conexion"
nmcli connection up "nombre_conexion"

Paquetes

apk add \
  vim tmux git curl wget rsync openssh bash fish bash-completion \
  man-db man-pages htop btop fastfetch \
  mpv yt-dlp imagemagick \
  w3m lynx irssi fzf tree \
  unzip unrar zip \
  python3 py3-pip \
  alsa-utils pipewire pipewire-pulse \
  sway foot wl-clipboard grim slurp \
  xdg-desktop-portal xdg-desktop-portal-wlr wmenu \
  docker docker-compose \
  samba acpi bc translate-shell \
  noto-fonts font-terminus \
  cronie

Habilitar servicios:

rc-update add sshd default
rc-update add samba default
rc-update add docker default
rc-update add crond default

Samba

apk add samba
smbpasswd -a tu_usuario
rc-update add samba default
rc-service samba start

Docker

apk add docker docker-compose
rc-update add docker default
rc-service docker start
addgroup tu_usuario docker

Archivos de configuración OpenRC — diferencias con systemd

Función systemd (Arch) OpenRC (Alpine)
Teclado consola /etc/vconsole.conf /etc/conf.d/keymaps
Reloj hardware hwclock --systohc /etc/conf.d/hwclock
Red /etc/systemd/network/ /etc/conf.d/net o NetworkManager
Hostname hostnamectl /etc/hostname
Logger journald /etc/conf.d/syslog
Habilitar servicio systemctl enable X rc-update add X default
Iniciar servicio systemctl start X rc-service X start
Ver estado systemctl status X rc-service X status
Reiniciar servicio systemctl restart X rc-service X restart

apk vs pacman

pacman (Arch) apk (Alpine)
pacman -Syu apk upgrade
pacman -S pkg apk add pkg
pacman -Rcs pkg apk del pkg
pacman -Ss apk search
pacman -Si pkg apk info pkg
pacman -Qe apk list --installed
pacman -Ql pkg apk info --contents pkg
pacman -Scc apk cache clean