Operazioni preliminari
Verifico installazione virt-manager
sudo systemctl status libvirtd.serviceRestituisce warning per mancanza del seguente pacchetto:
sudo pacman -S dmidecodeVerifico la rete virsh
sudo virsh net-list --allUtilizzo UEFI
sudo pacman -S edk2-ovmf
sudo systemctl restart libvirtd.serviceDownload ISO
mv ~/downloads/archlinux-2026.06.01-x86_64.iso ~/VM/Preparazione Macchina
- Apro virt-manager
- Seleziono QEMU/KVM
- Click con destro New
Seleziona parametri
- Seleziono Local install media
- Seleziono architettura x86_64
- AVANTI
- Seleziono il file ISO
- AVANTI
- Memoria 4GB
- CPU 4
- AVANTI
- Disco Fisso 50GB
- AVANTI
- Nome arch
- Flag attivo su Customize configuration before install
- Network selection Virtual network ‘default’ : NAT
- FINE
Alla schermata Overview ultima voce in basso seleziono Firmware UEFI x86_64: /usr/share/edk2/x64/OVMF_CODE.4m.fd. Quindi Apply e Begin Installation.
Begin Installation
Imposta tastiera
loadkeys itImposta un font più grande
setfont ter-132bVerifica Internet
ip link
ping -c 4 ping.archlinux.orgVerifica UEFI
cat /sys/firmware/efi/fw_platform_sizeImposta oraio
timedatectl
timedatectl set-timezone Europe/RomePartizionamento, formattazione e montaggio delle partizioni
Wipe signature filesystem
lsblk
wipefs -a /dev/vdaPartizionamento con Tabella GPT
lsblk
cfdisk /dev/vda- Scegli il tipo di tabella: gpt
- Partizione EFI:
- Seleziona New > Dimensione: 1GB
- Vai su Type > Seleziona EFI System
- Partizione di Root:
- Seleziona lo spazio libero rimasto
- Seleziona New > dimensione massima
- Vai su Type > Seleziona Linux root (x86-64)
- Seleziona Write > digita yes e premi
Invio - Seleziona Quit
Configura la crittografia
cryptsetup luksFormat --type luks2 /dev/vda2- digita YES
- inserisci password
- ripeti password
cryptsetup open /dev/vda2 cryptFormatta filesystems
mkfs.fat -F 32 /dev/vda1
mkfs.btrfs /dev/mapper/cryptCrea subvolumes
mount /dev/mapper/crypt /mnt
btrfs subvolume create /mnt/@
btrfs subvolume create /mnt/@home
btrfs subvolume create /mnt/@log
btrfs subvolume create /mnt/@pkg
btrfs subvolume create /mnt/@snapshots
btrfs subvolume create /mnt/@swap
umount /mntMonta i subvolumes
mount -o subvol=@,compress=zstd,noatime /dev/mapper/crypt /mnt
# Create mount points for other subvolumes
mkdir -p /mnt/{home,var/log,var/cache/pacman/pkg,.snapshots,swap,boot}
# Mount secondary subvolumes
mount -o subvol=@home,compress=zstd,noatime /dev/mapper/cryptroot /mnt/home
mount -o subvol=@log,compress=zstd,noatime /dev/mapper/cryptroot /mnt/var/log
mount -o subvol=@pkg,compress=zstd,noatime /dev/mapper/cryptroot /mnt/var/cache/pacman/pkg
mount -o subvol=@snapshots,compress=zstd,noatime /dev/mapper/cryptroot /mnt/.snapshots
mount -o subvol=@swap,noatime /dev/mapper/cryptroot /mnt/swapMonta partizione EFI
mount /dev/nvme0n1p1 /mnt/bootCreazione e attivazione swapfile
btrfs filesystem mkswapfile --size 4g /mnt/swap/swapfile
chmod 600 /mnt/swap/swapfile
swapon /mnt/swap/swapfile
swapon --showInstallazione sistema e chroot
pacman -Sy archlinux-keyring
pacstrap -K /mnt base linux linux-firmware btrfs-progs neovim networkmanager amd-ucode
# creazione /etc/fstab
genfstab -U /mnt >> /mnt/etc/fstab
# chroot
arch-chroot /nmtConfigurazione sistema
Fuso Orario e Orologio
ln -sf /usr/share/zoneinfo/Europe/Rome /etc/localtime
hwclock --systohcLocalizzazione (Lingua e Tastiera)
echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
locale-gen
echo "LANG=en_US.UTF-8" > /etc/locale.conf
echo "KEYMAP=it" > /etc/vconsole.confNome del Computer (Hostname)
echo "arch" > /etc/hostnamePopola il file /etc/hosts come segue:
127.0.0.1 localhost
::1 localhost
127.0.1.1 arch.localdomain archAbilita networmanager
systemctl enable NetworkManagerImposta password di root
passwdConfigura initramfs
Nel file /etc/mkinitcpio.conf modifica HOOKS come segue:
HOOKS=(base systemd autodetect microconde modconf kms keyboard sd-vconsole block sd-encrypt filesystem fsck)Quindi:
mkinitcpio -PSystemd boot manger
bootctl install
blkid -s UUID -o value /dev/vda2Segnati il codice UUID per inserirlo nel file /boot/loader/entries/arch.conf:
title Arch Linux
linux /vmlinuz-linux
initrd /intel-ucode.img
initrd /initramfs-linux.img
options rd.luks.name=<PARTITION_UUID>=cryptroot root=/dev/mapper/cryptroot
rootflags=subvol=@ rwInfine creo il menu di scelta nel file /boot/loader/loader.conf con il seguente contenuto:
default arch.conf
timeout 3
console-mode max
editor noConclusione e primo avvio
exit
swapoff -a
umount -R /mnt
rebootInstallazione Sway ed utente max
pacman -Syu
pacman -S mesa xorg-wayland
pacman -S sway waybar wofi mako alacritty polkit-gnome grim slurp
# creazione utente
useradd -m -G wheel,video,audio -s /bin/bash max
passwd max
pacman -S sudo
visudoAbilitare l’utilizzo di sudo togliendo il commento alla seguente riga:
%wheel ALL=(ALL:ALL) ALLConfigurazione
mkdir -p /home/max/.config/sway
mkdir -p /home/max/.config/waybar
cp /etc/sway/config /home/max/.config/sway/config
chown -R max:max /home/max/.configImpostazione meta tasto
Per evitare conflitti con i3wm utilizzato nella macchina Host, modifico il tasto funzione da Start a Alt modificando la seguente riga all’interno del file di configurazione di Sway ~/.config/sway/config:
set $mod Mod1Terminale e Launcher
Modificare quanto segue all’interno del file ~/.config/sway/config:
# Your preferred terminal emulator
set $term alacritty
# Your preferred application launcher
set $menu wofi --show runConfigurazione Tastiera Italiana in Sway
Aggiungere alla fine del file ~/.config/sway/config:
input * {
xkb_layout "it"
}Creare un Keybinding su i3wm per avviare la VM
Trova il nome esatto della tua macchina virtuale eseguendo questo comando sul terminale del tuo Arch Host:
sudo virsh list --allIpotizzando che la VM si chiami arch, all’interno del file di configurazione ~/.config/i3/config:
bindsym $mod+Shift+v exec --no-startup-id virsh --connect qemu:///system start arch && sleep 1 && virt-viewer --connect qemu:///system --wait archRicarica i3wm e la combinazione tasti $mod+Shift+v dovrebbe aprire il visualizzatore:
i3-msg reload && i3-msg restartVerifica accelerazione 3D
Entrare in sway, aprire un terminale e digitare:
sudo pacman -S weston
weston-simple-egl
sudo pacman -R westonRisoluzione schermo
sudo pacman -S wlr-randrVerifica il nome dello schermo, nel mio caso Virtual-1, ed inserisci nel file ~/.config/sway/config:
set $display Virtual-1
bindsym $mod+F1 output $display mode 1280x720
bindsym $mod+F2 output $display mode 1920x1080La combinazione tasti con $mod+F2 va utilizzata a schermo intero, pertanto effettua la seguente veriazione nel file di confgurazione ~/.config/sway/config:
bindsym $mod+f fullscreen toggleEffettuato SNAPSHOT
virt-manager
Selezionare internal come Snapshot Mode.
btrfs
Riga di comando dall’interno della macchina Guest per effettuare lo snapshot:
suod btrfs subvolume snapshot -r / /.snapshots/root_base_$(date +%F)Eventualmente per ripristinare lo snapshot:
sudo btrfs subvolume list /
sudo mkdir -p /mnt/btrfs-root
sudo mount -o subvolid=5 /dev/mapper/crypt /mnt/btrfs-root
sudo btrfs subvolume snapshot /mnt/btrfs-root/.snapshots/root_base_XXXX-XX-XX /mnt/btrfs-root/@_new
sudo mv /mnt/btrfs-root/@ /mnt/btrfs-root/@_old
sudo mv /mnt/btrfs-root/@_new /mnt/btrfs-root/@
sudo umount /mnt/btrfs-root
rebootE per eliminare lo snapshopt:
sudo btrfs subvolume delete /.snapshots/root_base_XXXX-XX-XX/Continua configurazioni
Creazione cartella condivisa
Spengo la macchina virtuale e vado View > Details.
- Seleziono a sinistra Memory
- Seleziono Enabled shared memory
- Premo Apply
- Seleziono in basso a sinistra Add Hardware
- Seleziono Filesystem
- Driver: virtiofs
- Source path: /home/max
- Target path: host_max
- Premo Finish
Avvio la macchina virtuale e verifico:
cd
mkdir home_max
sudo mount -t virtiofs host_max /home/max/host_max
ls host_max
sudo umount /home/max/host_maxInserisco la seguente riga nel file /etc/fstab:
host_max /home/max/host_max virtiofs defaults,nofail,rw 0 0Quindi verifico:
sudo mount -a
sudo systemctl daemon-reloadCopia/incolla bidirezionale
Sulla macchina Host:
sudo pacman -S xclip xselSulla macchina virtuale:
sudo pacman -S spice-vdagent wl-clipboard xclipPoichè abbiamo a che fare con macchina Host con Xorg e macchina Guest con Wayland dobbiamo inserire dei comandi nel file ~/.config/sway/config che travasino la clipboard nelle 2 direzioni:
exec spice-vdagent -x
# FLUSSO 1: VM > Host, Monitora Wayland e scrive su X11/Spice
exec wl-paste --type text --watch xclip -selection clipboard
# FLUSSO 2: Host > VM, Sincronizzazione forzata temporizzata
exec_always bash -c 'last=""; while true; do current=$(xclip -selection clipboard -o 2>/dev/null); if [ -n "$current" ] && [ "$current" != "$last" ]; then echo -n "$current" | wl-copy; last="$current"; fi; sleep 0.5; done'All’uscita da sway insiste un output di errore/warning sulla console come il seguente:
Note: WAYLAND_DISPLAY is set to wayland-1
Note: XDG_RUNTIME_DIR is set to /user/1000
Please check whether /run/user/1000/wayland-1 socket exists and is accessible.Per evitare questa noia (anche se è sufficiente digitare exit) ho inserito il seguente codice in ~/.bash_profile:
In questo modo entro immediatamente in sway dalla TTY1 e quando esco lo faccio anche dalla TTY1.
# If we are on TTY1 and Sway is not already running, launch it
if [ -z "$DISPLAY" ] && [ "$(tty)" = "/dev/tty1" ]; then
exec sway 2> /home/max/.sway-session.log
fiPassaggio a zsh
cat /etc/zsh/zshenv