Appunti Arch Linux
Arch Linux è una distribuzione Linux leggera ed improntata alla riga di comando. Non è dotata di un installer grafico e perciò non è considerata adatta ai principianti, l'installazione di default consiste in un sistema base sul quale l'utente potrà manualmente aggiungere e configurare tutto quello di cui necessita.
Fornisce l'ultima versione stabile della maggior parte del software opensource disponibile per Linux e lo fa seguendo un modello di distribuzione detto "rolling-release", il suo aggiornamento è quindi continuo e non richiede periodici passaggi da una versione stabile alla successiva.
Il prezzo da pagare è che talvolta gli aggiornamenti (soprattutto: kernel, driver video e librerie) possono determinare problemi talmente gravi al sistema da renderlo inutilizzabile. Per fortuna accorgimenti come lo snapshot del filesystem che, se utilizzati correttamente dall'utente, sono capaci di ovviare a tali problematiche.
Supporti d'installazione
- ISO ufficiale archlinux-x86_64.iso
- ISO con supporto per lo ZFS archlinux-archzfs-linux.iso
- ISO con installer grafico Calamares ALCI
Preparazione del disco
Su Linux si può scegliere (salvo casi estremamente particolari) tra due tipi di tabella delle partizioni
- msdos (Master Boot Record o più semplicemente MBR)
- GPT (GUID Partition Table)
In linea generale è consigliabile di scegliere il GPT perché è un formato più moderno ed ha meno limitazioni rispetto all'MBR risalente ai tempi dell'MS-DOS.
I casi in cui è preferibile utilizzare la tabella msdos sono:
- dual-boot con Windows (32-bit o 64-bit) con la scheda madre in modalità Legacy BIOS
- in schede madri molto datate il BIOS potrebbe non supportare lo schema GPT (esiste comunque un trucco per aggirare l'ostacolo)
Vantaggi di GPT su MBR:
- offre un sistema di denominazione delle partizioni indipendente dal filesystem (PARTLABEL, PARTUUID)
- supera il concetto di partizione primaria ed estesa (su MBR il numero massimo di partizioni primarie, quelle su cui si può installare un sistema operativo è limitato a 4). Su GPT, nella configurazione standard, si possono definire fino a 128 partizioni.
- la grandezza massima di un disco è di 2 ZiB, mentre su MBR 2 TiB
- permette di fare a meno della tradizionale partizione di /boot con i filesystem BTRFS e ZFS in modo da semplificare la gestione degli snapshot.
Schede madri BIOS
Creare due partizioni.
- BIOS GRUB Partition: concettualmente l'equivalente dell'MBR dei sistemi GPT. A differenza di quest'ultimo, la cui dimensione è di soli 512 byte, la BIOS GRUB Partition può però essere sufficientemente grande da contenere i driver per il supporto di un filesystem come ZFS o BTRFS. Il contenuto di questa partizione cambia esclusivamente nei rari casi di upgrade del GRUB perché non vi risiedono né kernel né ramdisk.
- Linux filesystem: successivamente da formattare col filesystem di nostra scelta: BTRFS, ZFS, ext4, XFS, JFS.
Partizionamento
Col seguente comando verrà creata la partizione BIOS GRUB (EF02) a partire dal 1MB, della grandezza di 64MB; il resto del disco resterà disponibile per il filesystem di Linux.
Se avete più dischi da utilizzare in raid, questa operazione andrà ripetuta per ciascun disco.
# sgdisk \ --new=1:2048:133120 --typecode=1:EF02 --change-name=1:"GRUB" \ --largest-new=2 --typecode=2:8300 --change-name=2:"ROOT" /dev/sda
Schede madri UEFI
Creare due partizioni.
- EFI: è una partizione in formato FAT32 necessaria per l'avvio dei sistemi operativi nei PC con schede madri UEFI.
- Linux filesystem: successivamente da formattare col filesystem di nostra scelta: BTRFS, ZFS, ext4, XFS, JFS.
Partizionamento
Col seguente comando verrà creata la partizione EFI (EF00) a partire dal 1MB, della grandezza di 512MB; il resto del disco resterà disponibile il filesystem di Linux.
# sgdisk \ --new=1:2048:1064960 --typecode=1:EF00 --change-name=1:"efi" \ --largest-new=2 --typecode=2:8300 --change-name=2:"ROOT" /dev/sda
La partizione EFI dovrà poi essere formattata in FAT32
# mkfs.vfat -T32 /dev/sda1
Filesystem
- EXT4: simply, stable, integrated encryption - BTRFS: raid01, snapshots, subvolumes, included in kernel - ZFS: raidz, support for encryption, snapshots, subvolumes, NOT included in the standard kernel - XFS + LVM: RedHat way to manage snapshots/subvolumes/raid
Snapshots
BTRFS
https://wiki.golem.linux.it/Btrfs
ZFS
XFS + LVM
Encryption
https://wiki.golem.linux.it/Installare_Arch_Linux_in_una_partizione_cifrata
EXT4
BTRFS + ENCFS
ZFS
RAID
EXT4 + mdadm
BTRFS
ZFS
XFS + LVM
Installazione Grub
Sistema con BIOS
# pacman -S grub # grub-mkconfig -o /boot/grub/grub.cfg # grub-install /dev/sda
Sistema UEFI
NB: NON avendo un computer con scheda madre UEFI non ho potuto verificare questa procedura e non ne ho potuto testare il funzionamento
# pacman -S grub # mkdir /boot/EFI # mount /dev/sda1 /boot/EFI # grub-install --target=x86_64-efi --efi-directory=$esp --bootloader-id=grub --recheck --debug # grub-mkconfig -o /boot/grub/grub.cfg
Modifiche a Grub
Per permettere il caricamento del sistema è necessario aggiungere zfs_force=1 zfs=bootfs alla riga di caricamento del kernel nel file /boot/grub/grub.cfg.
Esempio di configurazione
set timeout=2 set default=0 menuentry 'Arch Linux'{ insmod gzio insmod part_gpt insmod zfs set root='hd0,gpt2' linux /ROOT@/boot/vmlinuz-linux zfs_force=1 zfs=bootfs root=ZFS=rpool/ROOT rw quiet initrd /ROOT@/boot/initramfs-linux.img }
Stuff
Installer - manual (Linux From Scratch) - script (Arch, NixOS, Gentoo) - text (Arch, Slackware, Debian) - Calamares (Debian, NixOS, Arch spinoff)
Network - manual (net-tools, iproute2, wpa_supplicant) - iwd/iwgtk - ConnMan - systemd-networkd - NetworkManager (nmcli/nmtui/applet)
Boot Loader - GRUB: UEFI, BIOS, multiboot, internal shell - systemd-boot: UEFI only, integrated in systemd - LILO: only BIOS, multiboot, discontinued (but still default on Slackware)
Filesystem - EXT4: simply, stable, integrated encryption - BTRFS: raid01, snapshots, subvolumes, included in kernel - ZFS: raidz, support for encryption, snapshots, subvolumes, NOT included in the standard kernel - XFS (SGI Irix) + LVM: RedHat way to manage snapshots/subvolumes/raid - misc: ReiserFS, JFS (IBM AIX) - historic: minix, ext2, ext3 - cryptofs
RAID - hardware - standard: dmraid (mdadm) - LVM (logical volume manager): snapshots, cache, all raid type supported - ZFS: can't remove a storage from a pool - BTRFS: stable only raid 0 and 1, can add/remove storage from array
CONFIG
- Systemd
- Desktop Enviroment applications
- Distro tool (drakconf, Yast, etc...)
- configuration.nix
- rc.conf
- webmin/RHEL WEB CONSOLE
Package manager - pkgtools (Slackware) - dnf (rpm) - apt-get/dpkg (deb) - pacman - nix - zypper (Suse) - pkgsrc/pkgin (Netbsd) - snap - Flatpak - appimage - docker
Systemd
systemd-udevd - successor of devfsd, hwdetect and hotplug, manages device in /dev by adding, symlinking and renaming them systemd-boot — simple UEFI boot manager; systemd-cryptenroll — Enroll PKCS#11, FIDO2, TPM2 token/devices to LUKS2 encrypted volumes; systemd-firstboot — basic system setting initialization before first boot; systemd-homed — portable human-user accounts; systemd-logind — session management; systemd-networkd — network configuration management; systemd-nspawn — light-weight namespace container; https://wiki.archlinux.org/title/systemd-nspawn systemd-resolved — network name resolution; systemd-timesyncd — system time synchronization across the network; systemd/Journal — system logging systemd/Timers — alternative to cron
Installazione Arch - Partizionamento: -- gpt vs msdos -- btrfs + snapshots -- zfs - Grub2 - configurazione della rete da riga di comando (LAN) - wifi da riga di comando - systemd - gestori alternativi di pacchetti: nix, snap, flatpak, appimage - container: lxc, systemd-nspawn, toolbox/podman https://github.com/toolbx-images/images
Bibliografia
https://wiki.archlinux.org/title/Installation_guide
https://wiki.golem.linux.it/Howto
https://wwwcdf.pd.infn.it/AppuntiLinux/a21.htm
https://www.linuxfromscratch.org/lfs/downloads/stable/LFS-BOOK-11.2-NOCHUNKS.html