Installazione di Arch Linux
1. Verifica Firma
Si consiglia di verificare la firma dell'immagine prima dell'uso, in particolare durante il download da un mirror HTTP, dove i download sono generalmente soggetti a essere intercettati per fornire immagini dannose.
Su un sistema con GnuPG installato, scarica la firma ISO PGP nella directory ISO e verificala con:
$ gpg --keyserver-options auto-key-retrieve --verify archlinux-version-x86_64.iso.sig
In alternativa, da un'installazione esistente di Arch Linux eseguire:
$ pacman-key -v archlinux-version-x86_64.iso.sig
2. Configurazione iniziale
Per iniziare dobbiamo definire la lingua della tastiera, la lingua predefinita senza immettere il comando e' US
. I layout disponibili possono essere elencati con:
# ls /usr/share/kbd/keymaps/**/*.map.gz
impostiamo la lingua della nostra tastiera con il comando:
# loadkeys it
I caratteri della console si trovano in /usr/share/kbd/consolefonts/ e possono anche essere impostati con setfont. Ad esempio, per utilizzare uno dei caratteri più grandi adatti agli schermi HiDPI, eseguire:
# setfont ter-132b
3. Connessione Internet
Se avete connesso la machina a internet mediante cavo o macchina virtuale, possiamo verificare il nostro indirizzo ip acquisito attraverso questo comando :
# ip a
La connessione può essere verificata con un test tramite il comando ping:
# ping -c 3 archlinux.org
Collegarsi alla rete wifi utilizzando lo strumento iwctl:
# iwctl
Avviare iwctl# device list
Trova il nome del tuo dispositivo esempio wlan0# station wlan0 scan
Scansiona le reti wireless disponibili# station wlan0 get-networks
Acquisiamo la lista delle rete# station wlan0
connect nometuarete Connessione alla rete# exit
Se nel caso in cui i nostri dispositivi siano disabilitati e non riusciamo a eseguire iwctl:
# rfkill list
verifichiamo lo stato dei dispositivi blocked o unblocked# rfkill unblock all
sblocchiamo tutti i nostri dispositivi bloccati blocked# systemctl restart iwd
riavviamo il servizio iwd
Riprovare # iwctl
e procedere come sopra.
4. Preparazione del disco
Scegli quale tipo di installazione affrontare e dopo aver preparato il disco salta al punto (5)
Bios-MBR
Partizionamento
Individuamo il nostro disco per conoscere la nomenclatura da usare ad Esempio: in caso di SSD /dev/sda oppure nel caso di M.2 /dev/nvme0n1 infine il Disco Virtuale /dev/vda.
# lsblk -l
Una volta individuata la nomenclatura del nostro disco usiamo cfdisk, qui ipotizzeremo di avere /dev/sda. Potrebbe essere richiesto il tipo di tabella di partizionamento se il disco e' vergine, in questo caso andiamo a selezionare DOS:
# cfdisk /dev/sda
Creiamo le partizioni necessarie all'installazione base, ipotizzando di avere un disco SSD da 128GiB:
# 4Gib
Creiamo una partizione per la swap e selezioniamo tipo swap# 124Gib
Creiamo la partizione Root# write (yes)
equit
Scriviamo le modifiche e usciamo
Formattare le Partizioni
# mkswap /dev/sda1
La partizione per la swap# mkfs.ext4 /dev/sda2
La partizione Root in EXT4
Montaggio delle Partizioni
# mount /dev/sda2 /mnt
Montiamo la partizione root# swapon /dev/sda1
Montiamo la partizione di swap
UEFI ext4
Partizionamento
Individuamo il nostro disco per conoscere la nomenclatura da usare ad Esempio: in caso di SSD /dev/sda oppure nel caso di M.2 /dev/nvme0n1 infine il Disco Virtuale /dev/vda.
# lsblk -l
Una volta individuata la nomenclatura del nostro disco usiamo cfdisk, qui ipotizzeremo di avere /dev/sda. Potrebbe essere richiesto il tipo di tabella di partizionamento se il disco e' vergine, in questo caso andiamo a selezionare GUID Partition Table (GPT):
# cfdisk /dev/sda
Creiamo le partizioni necessarie all'installazione base, ipotizzando di avere un disco SSD da 128GiB:
# 512Mib
Creiamo la partizione EFI e scegliamo di tipo EFI system# 4Gib
Creiamo una partizione per la swap e selezioniamo tipo swap# 23.5Gib
Creiamo la partizione Root# 100Gib
Creiamo la partizione Home# write (yes)
equit
Scriviamo le modifiche e usciamo
Formattare le Partizioni
# mkfs.vfat -F32 /dev/sda1
La partizione EFI system in FAT32 per il boot# mkswap /dev/sda2
La partizione per la swap# mkfs.ext4 /dev/sda3
La partizione Root in EXT4# mkfs.ext4 /dev/sda4
La partizione Home in EXT4
Montaggio delle Partizioni
# mount /dev/sda3 /mnt
Montiamo la partizione root# mkdir -p /mnt/{home,boot}
creiamo la directory /home e la directory /boot# mount /dev/sda4 /mnt/home
Montiamo la partizione home# mount /dev/sda1 /mnt/boot
Montiamo la partizione di boot# swapon /dev/sda2
Montiamo la partizione di swap
UEFI btrfs
Partizionamento
Individuamo il nostro disco per conoscere la nomenclatura da usare ad Esempio: in caso di SSD /dev/sda oppure nel caso di M.2 /dev/nvme0n1 infine il Disco Virtuale /dev/vda.
# lsblk -l
Una volta individuata la nomenclatura del nostro disco usiamo cfdisk, qui ipotizzeremo di avere /dev/sda. Potrebbe essere richiesto il tipo di tabella di partizionamento se il disco e' vergine, in questo caso andiamo a selezionare GUID Partition Table (GPT):
# cfdisk /dev/sda
Creiamo le partizioni necessarie all'installazione base, ipotizzando di avere un disco SSD da 128GiB:
# 512Mib
Creiamo la partizione EFI e scegliamo di tipo EFI system# 27.5Gib
Creiamo la partizione Root# 100Gib
Creiamo la partizione Home# write (yes)
equit
Scriviamo le modifiche e usciamo
Formattare le Partizioni
# mkfs.vfat -F32 /dev/sda1
La partizione EFI system in FAT32 per il boot# mkfs.btrfs /dev/sda2
La partizione Root in BTRFS# mkfs.btrfs /dev/sda3
La partizione Home in BTRFS
Montaggio delle Partizioni
Creiamo i sottovolumi @ e @home
-
# mount /dev/sda2 /mnt
-
# btrfs su cr /mnt/@
-
# umount /mnt
-
# mount /dev/sda3 /mnt
-
# btrfs su cr /mnt/@home
-
# umount /mnt
-
# mount -o noatime,ssd,space_cache=v2,compress=zstd,discard=async,subvol=@ /dev/sda2 /mnt
-
# mkdir -p /mnt/{home,boot}
creiamo la directory /home e la directory /boot -
# mount /dev/sda1 /mnt/boot
-
# mount -o noatime,ssd,space_cache=v2,compress=zstd,discard=async,subvol=@home /dev/sda3 /mnt/home
UEFI lvm-ext4
Partizionamento
Individuamo il nostro disco per conoscere la nomenclatura da usare ad Esempio: in caso di SSD /dev/sda oppure nel caso di M.2 /dev/nvme0n1 infine il Disco Virtuale /dev/vda.
# lsblk -l
Ipotizzando di avere 3 dischi da 128GiB da usare con LVM sda sdb sdc useremo lo strumento cfdisk un operazione alla volta per disco:
# cfdifk /dev/sda
# 512Mib
Creiamo la partizione EFI e scegliamo di tipo EFI system# 127.5GiB
Creiamo la partizione e scegliamo di tipo LVM# write (yes)
equit
Scriviamo le modifiche e usciamo# cfdifk /dev/sdb
# 128GiB
Creiamo la partizione e scegliamo di tipo LVM# write (yes)
equit
Scriviamo le modifiche e usciamo# cfdifk /dev/sdc
# 128GiB
Creiamo la partizione e scegliamo di tipo LVM# write (yes)
equit
Scriviamo le modifiche e usciamo
Per creare partizioni sotto LVM dobbiamo prima creare un volume fisico:
Creazione volume fisico
# pvcreate /dev/sda2 /dev/sdb1 /dev/sdc1
Creazione gruppo volume
Crea e estendi il tuo gruppo volume, è necessario creare un gruppo di volumi su uno o piu' volumi fisici # vgcreate volume_group physical_volume
per esempio:
# vgcreate lvm /dev/sda2 /dev/sdb1 /dev/sdc1
Questo comando imposterà prima le tre partizioni come volumi fisici (se necessario) e quindi creerà il gruppo di volumi con i tre volumi. Il comando ti avviserà se rileva un filesystem esistente su qualsiasi dispositivo.
Creazione Volume Logici
Crea volumi logici, per una configurazione di base ne avremmo bisogno per root, swap e home.
# lvcreate -L 120G lvm -n root
# lvcreate -L 8G lvm -n swap
# lvcreate -l 100%FREE lvm -n home
Formattare le Partizioni
# mkfs.vfat -F32 /dev/sda1
La partizione EFI system in FAT32 per il boot
# mkfs.ext4 /dev/lvm/root
# mkfs.ext4 /dev/lvm/home
# mkswap /dev/lvm/swap
Montaggio delle Partizioni
# mount /dev/lvm/root /mnt
# mkdir -p /mnt/{home,boot}
creiamo la directory /home e la directory /boot# mount /dev/lvm/home /mnt/home
# mount /dev/sda1 /mnt/boot
# swapon /dev/lvm/swap
Estendere un gruppo lvm
Se in futuro vorrete aggiungere un nuovo volume fisico al gruppo vediamo quale comando usare, ipotizzando un quarto disco sdd e di averlo partizionato come prima di tipo lvm, estendiamo lo spazio per esempio a /dev/lvm/home
:
# pvcreate /dev/sdd1
# vgextend lvm /dev/sdd1
# lvextend -l +100%FREE /dev/lvm/home
5. Mirrorlist
Salviamo il mirrorlist per i repositoy in /etc/pacman.d/mirrorlist con lo strumento reflector, specificare il paese dove sincronizzare i server ad esempio it, e' possibile aggiungere piu paesi usando la virgola ad esempio it,us:
# reflector --verbose -c it -a 12 --sort rate --save /etc/pacman.d/mirrorlist
6. Pacstrap
Installiamo il kernel linux e i pacchetti base per creare il nostro arch, aggiungiamo anche un editor ad esempio vim, se stai seguendo l'installazione per lvm aggiungi al comando che segue il pacchetto lvm2
:
# pacstrap -K /mnt base base-devel linux linux-firmware vim
7. Generare Fstab
Il file /etc/fstab vi permette di controllare quali filesystem sono montati in fase di avvio sul vostro sistema Linux, comprese le partizioni di Windows e le condivisioni di rete:
# genfstab -U /mnt > /mnt/etc/fstab
8. Chroot
Passiamo in chroot e configuriamo i seguenti passaggi: Configurazione del localtime, del systemclock, lingua, keyboard mappings, localhost, Password Root, Creazione User e password.
entriamo in chroot:
# arch-chroot /mnt
Time zone
# ln -sf /usr/share/zoneinfo/Europe/Italy /etc/localtime
# hwclock --systohc
Localizzazione
# echo "it_IT.UTF-8 UTF-8" >> /etc/locale.gen
# locale-gen
# echo "LANG=it_IT.UTF-8" >> /etc/locale.conf
# echo "KEYMAP=it" >> /etc/vconsole.conf
Hostname e Hosts
# echo "NOMETUAMACCHINA" > /etc/hostname
# echo "127.0.0.1 localhost" >> /etc/hosts
# echo "::1 localhost" >> /etc/hosts
Utente e Root
Configuriamo la password di Root, fai attenzione!
# passwd
Configuriamo un nuovo utente in minuscolo creando con -m
la directory /home/NOMEUTENTE
, con -G
il gruppo wheel
e infine con -s
la shell:
# useradd -mG wheel -s /bin/bash NOMEUTENTE
Configuriamo il nome reale (quello che appare in grafica con l'iniziale maiuscola ad esempio "Alessio")
# usermod -c 'NOMEREALE' NOMEUTENTE
Configuriamo una password per l'utente appena aggiunto, fai attenzione!
# passwd NOMEUTENTE
Configuriamo il file sudoers per il gruppo wheel
# echo "NOMEUTENTE ALL=(ALL:ALL) ALL" >> /etc/sudoers.d/NOMEUTENTE
mkinitcpio per lvm
aggiungere lvm2 a hooks in /etc/mkinitcpio.conf
HOOKS="base udev ... block lvm2 filesystems"
quindi usare il comando:
# mkinitcpio -p linux
9. Bootloader
GRUB (Bios-MBR)
# pacman -S grub
# grub-install --target=i386-pc /dev/sda
# grub-mkconfig -o /boot/grub/grub.cfg
GRUB (UEFI)
# pacman -S grub
# grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
# grub-mkconfig -o /boot/grub/grub.cfg
GRUB supporta completamente l'avvio protetto utilizzando chiavi CA o shim, tuttavia il comando di installazione è diverso a seconda di quale si intende utilizzare.
Per utilizzare le chiavi CA il comando è:
# grub-install --target=x86_64-efi --efi-directory=esp --bootloader-id=GRUB --modules="tpm" --disable-shim-lock
Per utilizzare shim-lock il comando è:
# grub-install --target=x86_64-efi --efi-directory=esp --bootloader-id=GRUB --modules="normal test efi_gop efi_uga search echo linux all_video gfxmenu gfxterm_background gfxterm_menu gfxterm loadenv configfile tpm"
Systemd-boot (EXT4)
# pacman -S efibootmgr
# bootctl --path=/boot install
# echo "deafult arch-*" >> /boot/loader/loader.conf
# vim /boot/loader/entries/arch.conf
adesso creiamo la configurazione del file arch.conf aperto con vim, e' importante scrivere la partizione di avvio della root corretta ad esempio root=/dev/sdax
dove x
sta per il numero di partizione della root.
title Arch Linux
linux /vmlinuz-linux
initrd /initramfs-linux.img
options root=/dev/sdax rw quiet loglevel=3 rd.systemd.show_status=auto rd.udev.log_level=3
Systemd-boot (BTRFS)
# pacman -S efibootmgr
# bootctl --path=/boot install
# echo "deafult arch-*" >> /boot/loader/loader.conf
# vim /boot/loader/entries/arch.conf
adesso creiamo la configurazione del file arch.conf aperto con vim, e' importante scrivere la partizione di avvio della root corretta ad esempio root=/dev/sdax
dove x
sta per il numero di partizione della root, aggiungiamo il flag per il sottovolume @.
title Arch Linux
linux /vmlinuz-linux
initrd /initramfs-linux.img
options root=/dev/sdax rootflags=subvol=@ rw quiet loglevel=3 rd.systemd.show_status=auto rd.udev.log_level=3
Systemd-boot (LVM)
# pacman -S efibootmgr
# bootctl --path=/boot install
# echo "deafult arch-*" >> /boot/loader/loader.conf
# vim /boot/loader/entries/arch.conf
adesso creiamo la configurazione del file arch.conf aperto con vim, e' importante scrivere la partizione di avvio della root corretta ad esempio per lvm root=/dev/mapper/lvm-root
.
title Arch Linux (LVM)
linux /vmlinuz-linux
initrd /initramfs-linux.img
options root=/dev/mapper/lvm-root rw quiet loglevel=3 rd.systemd.show_status=auto rd.udev.log_level=3
10. Pacchetti Base
# pacman -S xorg wpa_supplicant wireless_tools netctl net-tools iw networkmanager alsa-utils pipewire-pulse mtools dosfstools mtools ntfs-3g f2fs-tools dosfstools exfatprogs fuse firewalld acpi cronie git reflector bluez bluez-utils cups reflector
11. Ambiente Grafico
Scegli tra alcuni dei piu famosi ambienti desktop suggeriti:
Gnome
Gnome completo con display manager GDM
# pacman -S gnome gnome-extra gdm
# systemctl enable gdm
Xfce4
xfce4 con display manager Lightdm
# pacman -S xfce4 xfce4-goodies lightdm lightdm-gtk-greeter lightdm-gtk-greeter-settings
# systemctl enable lightdm
lxde
lxde con display manger lightdm
# pacman -S lxde lxde-common lxsession openbox
# systemctl enable lightdm
Mate
mate con display manger lightdm
# pacman -S mate mate-extra
# systemctl enable lightdm
Plasma
plasma kde con display manager SDDM
# pacman -S plasma kde-applications sddm
# systemctl enable sddm
Cinnamon
cinnamon con display manager Lightdm
# pacman -S cinnamon nemo-fileroller gnome-terminal lightdm lightdm-gtk-greeter lightdm-gtk-greeter-settings xdg-user-dirs-gtk
# systemctl enable lightdm
12. Servizi
Se hai abilitato il servizio per il display manager puoi passare ad abilitare gli altri servizi necessari.
# systemctl enable NetworkManager
Fai attenzione e' case sensitive.# systemctl enable bluetooth
# systemctl enable reflector
# systemctl enable cronie
# systemctl enable firewalld
13. Zram
L'esempio seguente descrive come configurare lo scambio su zram automaticamente all'avvio con una singola regola udev. Non dovrebbe essere necessario alcun pacchetto aggiuntivo per farlo funzionare.
Carica esplicitamente il modulo all'avvio:
-
# vim /etc/modules-load.d/zram.conf
-
zram
Crea la seguente regola udev regolando l'attributo disksize come necessario per la misura della swap in questo esempio e' 16G:
-
# vim /etc/udev/rules.d/99-zram.rules
-
ACTION=="add", KERNEL=="zram0", ATTR{comp_algorithm}="zstd", ATTR{disksize}="16G", RUN="/usr/bin/mkswap -U clear /dev/%k" , TAG+="systemd"
Aggiungi /dev/zram al tuo fstab con una priorità superiore a quella predefinita:
-
# vim /etc/fstab
-
/dev/zram0 none swap defaults,pri=100 0 0
Creata: August 16, 2023