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
Schede madri BIOS
Cenni di teoria
Per fare a meno della tradizionale partizione di /boot ed utilizzare ZFS come unico filesystem si consiglia di partizionare il disco secondo il nuovo formato GPT.
Sarà comunque necessario creare due partizioni: una per il Grub ed una per gli zpool.
La prima, denominata Bios Grub Partition, è concettualmente l'equivalente del MBR nei sistemi GPT. A differenza del MBR, la Bios Grub Partition può però essere sufficientemente grande da contenere il codice per il supporto allo ZFS. Il vantaggio sta nel fatto che a differenza della tradizionale partizione /boot dove risiedono anche kernel e ramdisk, il contenuto di quest'ultima cambia esclusivamente nei rari casi di upgrade del Grub.
Partizionamento
Col seguente comando verrà creata la partizione di Grub (EF02) a partire dal 1MB, della grandezza di 64MB; il resto del disco resterà disponibile per lo i pool dello ZFS. 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:BF01 --change-name=2:"zfs" /dev/sda
Schede madri UEFI
Partizionamento
NB: NON avendo un computer con scheda madre UEFI non ho potuto verificare questa procedura e non ne ho potuto testare il funzionamento
Col seguente comando verrà creata la partizione EFI (EF00) a partire dal 1MB, della grandezza di 512MB; il resto del disco resterà disponibile per lo i pool dello ZFS.
# sgdisk \ --new=1:2048:1064960 --typecode=1:EF00 --change-name=1:"efi" \ --largest-new=2 --typecode=2:BF01 --change-name=2:"zfs" /dev/sda
La partizione EFI dovrà poi essere formattata in FAT32
# mkfs.vfat -T32 /dev/sda1
Impostare il fuso orario
# ln -s /usr/share/zoneinfo/Europe/Rome /etc/localtime
Impostare la mappatura della tastiera
# echo KEYMAP=it > /etc/vconsole.conf
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