L'universo in un banco di RAM

Appunti di Alpine Linux

Il wiki di Alpine è solo indicativo sulle procedure da seguire, quindi è meglio se mi segno passo passo come si crea un sistema diskless, ovvero da far girare in RAM. Così impostato, è una base ideale per quelle vecchie macchine che non si meritano una SSD da 8€ (perché sono lente per un uso completo e l’unico modo è sfruttare la velocità della RAM; perché si useranno solo da terminale), per quelle nuovissime e potenti che hanno tanta RAM (in 32 GB entra l’universo), o per quelle né penose né speciali che però si vuole usare con il gusto del filesystem in sola lettura.

Alpine Linux in RAM
Fstab con partizione in read-only e dati sull'uso della RAM.

Installazione diskless

Due modi di farla: installare il sistema sul disco interno e poi all’avvio caricare tutto in RAM (usando comunque il disco per salvare eventuali modifiche; comando lbu); oppure installare il sistema su una seconda chiavetta USB da usare poi per l’avvio.

  • Boot da Live USB (nota: Standard; altrimenti Extended )
  • setup-alpine con dati approssimativi e none alle domande finali su disk, config e cache
  • apk add cfdisk e2fsprogs lsblk
  • lsblk per vedere il nome del disco che vogliamo usare per l’installazione
  • cfdisk /dev/disco-target
  • Creare partizione di tipo EFI
  • modprobe vfat
  • mkfs.vfat /dev/disco-target-partizione (nota: Installare su altri fs è complesso )
  • setup-bootable -v /media/sda/ /dev/disco-target-partizione (nota: /media/sda o chi per lei )
  • Togliere la Live USB e riavviare
  • setup-alpine, stavolta con dati corretti e none alla prima domanda disk (config e cache dovrebbero essere ok)
  • setup-apkrepos (poi “e”, passare ad edge e abilitare community+testing)
  • apk -U upgrade per aggiornare tutto
  • lbu commit -d
  • Riavviare

Da qui si aggiungono i pacchetti, si configurano i dotfiles, si aggiungono cartelle monitorate da lbu (soprattutto la /home), e si gestiscono servizi e permessi dell’utente a seconda della macchina e delle intenzioni.

Installazione criptata su disco

Questa è una installazione classica, più semplice da gestire e più adatta a quelle macchine con moduli SSD veloci, o quando serve tanto spazio, o quando non si hanno troppe stranezze in mente.

  • Boot da Live USB (nota: Standard; altrimenti Extended )
  • setup-alpine: selezione del disco di installazione quando richiesto, e poi metodo “cryptsys” (nota: Premere ? per info )
  • setup-apkrepos (premere e, passare ad edge e abilitare community+testing)
  • apk -U upgrade per aggiornare tutto
  • Riavviare

Come sopra, poi si aggiungono i pacchetti e si configurano i dotfiles (anche da un’altra macchina via ssh, soprattutto se il server è stato attivato durante setup-alpine). Restano da attivare i servizi e dare i permessi all’utente, ma questo cambia in base alla macchina.

Configurazione EFI Boot Stub

Con i metodi sopra viene già installato il bootloader syslinux ma si può velocizzare ancora l’avvio con una voce specifica nel firmware EFI (saltando del tutto il bootloader).

  • apk add efibootmgr
  • Copiare lo script da Alpine/Bootloader
  • Adattare i nomi delle partizioni di root e boot (nota: Potrebbe essere la stessa )
  • Avviare lo script da root
  • Copiare i file di “loader” e “initrd” da /boot a /boot/efi (nota: C'è una nota nel Wiki )

Nota: una Alpine Linux diskless con LabWC, Firefox, PCManFM, Tofi, Foot, Code OSS e poco altro, tutta configurata con sfondo e finezze, perfetta per il coding e la produttività web, occupa ~1.6 GB della eMMC di un Dell Chromebook 3100 e quindi entra abbondantemente nei 4 GB di RAM interna (anche dopo aver avviato tutti i programmi e attivato una certa swap). Le varie personalizzazioni, quindi tutti gli strati creati con il comando lbu dopo le modifiche, rallentano il boot (perché deve preparare più cose prima di copiarle in RAM) quindi converrebbe, una volta a regime, usare l’installazione locale per creare una nuova ISO e poi ripetere la procedura di installazione. Ad oggi non ho ancora provato a farlo.