Arch Linux è una distribuzione Linux creata da Judd Vinet secondo la filosofia KISS
(Keep It Simple, Stupid).
Per la sua filosofia minimalista, l’installazione base non incorpora nessuno strumento di configurazione automatica, nessun ambiente desktop e nessun altro programma o tool che non sia strettamente necessario all’avvio del sistema; per questo non è indicata per coloro che non vogliono avere a che fare con la shell di comando. Inoltre, Arch Linux è una distribuzione rolling release
: tutti i pacchetti disponibili per l’installazione sono sempre aggiornati all’ultima versione distribuita dagli autori.
In questa guida viene documentato il processo di installazione step-by-step su una VM, cifrando la partizione di root per garantire una maggiore sicurezza. Al termine, il sistema sarà configurato come segue:
Opzione | Configurazione adottata |
---|---|
Crittografia disco | Yes |
Firmware | UEFI |
Tabella partizioni | GPT |
Boot loader | GRUB / systemd-boot |
Per ogni dubbio, si rimanda alla guida ufficiale.
Creazione della VM #
Per iniziare, procederemo con la creazione di una VM utilizzando Proxmox (o qualsiasi HV):
È possibile scaricare l’immagine ISO ufficiale direttamente dal sito di Arch Linux.
Verifica della modalità di boot #
Questa guida presuppone l’uso di UEFI
. Per verificare la modalità di boot, elencare la directory efivars con il comando:
ls /sys/firmware/efi/efivars
Se il comando restituisce 64
, significa che il sistema è avviato in modalità UEFI a 64 bit (x64). Se, invece, il comando restituisce No such file or directory, il sistema potrebbe essere avviato in modalità BIOS (o CSM).
Connessione alla rete internet #
Per consentire alla VM di accedere a Internet, seguire i seguenti passaggi. Innanzitutto, verificare il nome dell’interfaccia di rete con il comando ip -c a
.
Nel nostro caso, l’interfaccia é identificata come ens18
. Procedere quindi ad assegnare un indirizzo IP statico e un gateway:
ip a a 10.10.1.11/24 dev ens18
ip r a default via 10.10.1.1 dev ens18
I vari parametri, dipendono dalla propria configurazione di rete.
Impostare la timezone corretta #
Per assicurarsi che l’orologio di sistema sia sincronizzato, utilizzare il comando timedatectl
:
timedatectl set-timezone Europe/Rome
timedatectl status
Partizionamento #
Quando riconosciuti dal sistema, i dischi vengono assegnati a un dispositivo a blocchi, come /dev/sda
, /dev/nvme0n1
o /dev/mmcblk0
. Per identificare il dispositivo corretto, utilizzare il comando lsblk -f
.
Il layout finale del disco descritto in questa guida prevede due partizioni:
Partition | Size | fdisk code | Name |
---|---|---|---|
Boot (/dev/sda1) | 512.0 MiB | 1 | Partizione EFI |
Root (/dev/sda2) | Resto del disco | 19 | File system Linux |
Una volta individuato il dispositivo, per creare la tabella e le relative partizioni, si consiglia l’uso di fdisk
:
La sintassi è la seguente:
fdisk /dev/sda # Per selezionare il dispositivo a blocchi indicato
All’interno di fdisk, è possibile utilizzare i seguenti comandi:
g
: per creare una nuova tabella delle partizioni GPTn
: per creare una nuova partizionet
: per cambiare il tipo della partizionew
: per scrivere le modifiche sul disco
Partizione di root crittografata #
Per crittografare la partizione di root, creare un file system e montare la partizione, seguire i passaggi elencati di seguito. Assicurarsi di scegliere una passphrase sicura per la crittografia.
cryptsetup luksFormat /dev/sda2
cryptsetup open /dev/sda2 cryptroot
mkfs.btrfs /dev/mapper/cryptroot
mount /dev/mapper/cryptroot /mnt
Partizione di boot #
Formattare la partizione EFI in FAT32
utilizzando il comando mkfs.fat
:
mkfs.fat -F 32 /dev/sda1
mkdir /mnt/boot
mount /dev/sda1 /mnt/boot
Installazione del sistema base #
Eseguire un’installazione di base:
pacstrap -K /mnt base linux linux-firmware man vim nano sudo dhcpcd udev
Questo comando installerà il sistema di base, il kernel Linux e il firmware necessario per supportare l’hardware più comune nella partizione montata. Sono stati aggiunti anche alcune utility, come man
, vim
, sudo
ecc.
Configurare il sistema #
Generare fstab #
Per garantire che i file system necessari siano montati all’avvio, generare il file fstab
. Utilizzare l’opzione -U
o -L
per definire i file system tramite UUID o label, rispettivamente.
genfstab -U /mnt >> /mnt/etc/fstab
chroot #
arch-chroot /mnt
Il comando precedente serve a cambiare la root directory in /mnt
, consentendo di interagire direttamente con il nuovo sistema come se fosse il sistema attualmente in esecuzione.
Fuso orario #
Impostare il fuso orario:
ln -sf /usr/share/zoneinfo/Europe/Rome /etc/localtime
hwclock --systohc
Impostazione della lingua #
Per utilizzare la formattazione corretta specifica per la regione e la lingua (come date, valuta, separatori decimali), modificare il file /etc/locale.gen
, decommentando le localizzazioni UTF-8
che si intende utilizzare, per esempio en_US.UTF-8 UTF-8
.
Quindi eseguire:
locale-gen
Creare il file /etc/locale.conf
e impostare la variabile LANG
di conseguenza:
echo LANG=en_US.UTF-8 > /etc/locale.conf
export LANG=en_US.UTF-8
Network configuration #
Innanzitutto, impostare l’hostname della macchina col comando hostnamectl set-hostname archlinux
. Quindi aggiungere le seguenti righe nel file /etc/hosts
:
127.0.0.1 localhost
::1 localhost
127.0.1.1 archlinux
Sostituire archlinux con un hostname a scelta.
initramfs #
Modificare il file /etc/mkinitcpio.conf
per aggiungere gli hook
per la crittografia. Si tratta di script o comandi che vengono eseguiti durante il processo di creazione dell’immagine initramfs. Questi hook consentono di personalizzare e configurare il comportamento del sistema all’avvio, permettendo di includere o escludere determinati moduli, servizi o funzionalità.
Spostare la funzione keyboard
prima di encrypt
, in modo da poter digitare la passphrase.
Dopo questa modifica, la riga HOOKS
dovrebbe apparire come segue:
HOOKS=(base udev autodetect modconf block keyboard encrypt filesystems fsck)
Poiché sono state apportate modifiche manuali al file /etc/mkinitcpio.conf
, è necessario rigenerare l’immagine initramfs con le impostazioni aggiornate:
mkinitcpio -P
CPU microcode #
Per garantire che la CPU funzioni in modo ottimale, è importante applicare le patch appropriate:
- Per processori AMD installare il pacchetto
amd-ucode
- Per processori Intel installare il pacchetto
intel-ucode
Ad esempio, per installare il microcode per processori Intel, eseguire il seguente comando:
pacman -S intel-ucode
Nel caso di installazione su VM, questo passaggio puó essere omesso.
Gestione degli utenti #
Impostare la password di root #
Impostare una password sicura per l’utente root:
passwd
Creazione utente standard #
Per creare un utente standard, che appartenga al gruppo sudo
, utilizzare il comando useradd
:
useradd -m -G wheel,audio,video,storage,lp,power -s /bin/bash dado
passwd dado
Infine, per consentire agli utenti creati di eseguire comandi come root utilizzando sudo, è necessario modificare il file visudo
. In particolare, la riga che si riferisce al gruppo wheel
deve essere decommentata. Per aprire il file visudo
, eseguire semplicemente il comando visudo
.
Una volta aperto il file, cercare la riga che contiene %wheel ALL=(ALL) ALL
e decommentarla.
Bootloader #
Un bootloader è un componente fondamentale del sistema operativo. Dopo che il bootloader ha completato il caricamento dell’OS, trasferisce il controllo al sistema operativo, consentendogli di gestire le risorse hardware del computer.
GRUB
è spesso il bootloader predefinito in molte distribuzioni Linux, grazie alla sua flessibilità e alle sue ampie capacità di configurazione: consente infatti di gestire più sistemi operativi, offre opzioni avanzate di avvio, rendendolo ideale per utenti che necessitano di personalizzazione e controllo.
systemd-boot
è una scelta più semplice e leggera, progettata per chi cerca un bootloader veloce e robusto, facile da configurare, con meno opzioni rispetto a GRUB.
Di seguito, vedremo come configurare entrambi i bootloader.
systemd-boot #
Installare EFI boot manager
col comando:
bootctl install
Creare il file /boot/loader/entries/arch.conf
. Sostituire intel-ucode.img
con amd-ucode.img
se si dispone di una CPU AMD. Sostituire l’UUID con quello del dispositivo a blocchi /dev/sda2
.
Il contenuto del file dovrebbe apparire come segue:
title Arch Linux
linux /vmlinuz-linux
initrd /intel-ucode.img
initrd /initramfs-linux.img
options cryptdevice=UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX:cryptroot root=/dev/mapper/cryptroot rw
Creare il file /boot/loader/loader.conf
:
default arch.conf
timeout 5
console-mode max
editor no
Per rivedere la configurazione, torna utile il comando bootctl list
.
GRUB #
Installare i pacchetti necessari:
pacman -S grub efibootmgr
Creare la directory in cui verrà montata la partizione EFI:
mkdir /boot/efi
Ora, montare la partizione ESP (EFI System Partition) nella directory appena creata:
mount /dev/sda1 /boot/efi
Installare GRUB con il seguente comando:
grub-install --target=x86_64-efi --bootloader-id=GRUB --efi-directory=/boot/efi
Modificare le seguenti righe nel file /etc/default/grub
:
GRUB_CMDLINE_LINUX_DEFAULT="quiet systemd.show_status=1"
GRUB_CMDLINE_LINUX="cryptdevice=UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX:cryptroot root=/dev/mapper/cryptroot rw"
GRUB_ENABLE_CRYPTODISK=y
GRUB_TERMINAL_OUTPUT=console
Aggiornare infine la configurazione di GRUB:
grub-mkconfig -o /boot/grub/grub.cfg
Reboot #
Uscire dall’ambiente chroot, digitando exit
o premendo Ctrl+d
. Successivamente, smontare la directory /mnt
. Infine riavviare il sistema col comando reboot
. Se non ci sono stati errori, ci troveremo dinnanzi alla seguente schermata:
Adesso é possibile installare un Desktop Environment a scelta, seguendo anche le General recommendations della wiki di Arch Linux.
Video #
Di seguito, alcuni video utili, che riassumono la maggior parte dei passaggi:
oppure