← tutti gli articoli

CachyOS su ThinkPad T450: guida completa all'installazione e configurazione

2026-04-21 · Thinkpad Cachyos Linux Nvidia Optimus

Questa guida è scritta per questo specifico T450, con le seguenti specifiche rilevate dal sistema: Intel Core i7-5500U (Broadwell, 2 core / 4 thread, frequenza base 2.4 GHz, boost fino a 3.0 GHz), 16 GB DDR3 1600 MT/s in configurazione dual channel (2× 8 GB), Intel HD Graphics 5500 come GPU integrata più NVIDIA GeForce 940M (architettura Maxwell, chip GM108M) come GPU dedicata in configurazione Optimus, SSD SATA da 238.5 GB, doppia batteria SANYO (BAT0 interna + BAT1 esterna), e scheda WiFi/Bluetooth Intel Wireless 7265.

Ogni passaggio è spiegato nel dettaglio per evitare errori. I comandi vanno eseguiti esattamente come scritti, salvo dove indicato diversamente.


1. Preparazione — creare la USB bootable

Prima di fare qualsiasi cosa sul T450, bisogna creare una USB avviabile con la ISO di CachyOS da un altro computer o dallo stesso T450 con il sistema attuale ancora funzionante.

Scaricare la ISO

Aprire il browser e andare su https://cachyos.org/download. Scaricare la versione x86_64 — l'unica disponibile per desktop/laptop moderni. Il T450 con i7-5500U è a 64 bit. Il file si chiamerà qualcosa come cachyos-x86\_64-YYYYMMDD.iso. Salvarlo in una posizione nota, ad esempio \~/Downloads.

Creare la USB con Ventoy (metodo consigliato)

Ventoy è uno strumento che formatta la USB in modo da poter copiare le ISO direttamente come file, senza doverla riscrivere ogni volta che se ne cambia una. Scaricare Ventoy da https://ventoy.net/en/download.html, estrarre l'archivio e aprire un terminale nella cartella estratta.

Prima identificare quale dispositivo è la USB:

lsblk

Nell'output, trovare il dispositivo che corrisponde alla USB in base alla dimensione. Non confonderlo con /dev/sda (SSD interno del T450) né con dischi esterni. Installare Ventoy sulla USB — sostituire /dev/sdX con il dispositivo corretto:

sudo bash Ventoy2Disk.sh -i /dev/sdX

Ventoy crea due partizioni sulla USB. Montare la partizione grande (chiamata "Ventoy") e copiarci dentro il file ISO scaricato. Nessun altro passaggio necessario: Ventoy mostrerà un menu all'avvio con tutte le ISO presenti.

Creare la USB con dd (metodo alternativo)

Se non si vuole usare Ventoy, dd scrive la ISO direttamente sulla USB sovrascrivendo tutto ciò che c'è senza chiedere conferma. Sostituire /dev/sdX con il dispositivo USB corretto:

sudo dd if=\~/Downloads/cachyos-x86\_64-\*.iso of=/dev/sdX bs=4M status=progress oflag=sync

Il parametro status=progress mostra l'avanzamento. Quando il comando termina e restituisce il prompt, la USB è pronta.

Attenzione dischi: il disco interno è /dev/sda (238.5 GB, SSD) e il disco esterno è /dev/sdb (7.3 TB con array RAID md127). Nessuno dei due va toccato durante la creazione della USB. Il target di installazione di CachyOS sarà /dev/sda.


2. Configurazione BIOS

Prima di avviare dalla USB, il BIOS del T450 va configurato correttamente. Il firmware rilevato è Lenovo JBET54WW v1.19 del 2015. Prima di procedere, è consigliabile verificare su https://support.lenovo.com se esiste una versione più recente: cercare "ThinkPad T450 BIOS update" e seguire le istruzioni Lenovo.

Accedere al BIOS

Spegnere completamente il T450 — non ibernazione, non sospensione, spegnimento completo. Premere il tasto di accensione e immediatamente, in modo ripetuto, premere F1 fino a quando appare la schermata del BIOS. Se il sistema avvia normalmente senza mostrare il BIOS, riprovare: la finestra temporale è breve. Navigare con i tasti freccia.

Modifiche da applicare

Security → Secure Boot → Disabled. Secure Boot impedisce l'avvio di sistemi operativi non firmati da Microsoft. CachyOS non ha la firma richiesta, quindi va disabilitato. Senza questa modifica la USB non si avvierà.

Startup → UEFI/Legacy Boot → UEFI Only. Il T450 supporta sia UEFI che il vecchio BIOS legacy. CachyOS va installato in modalità UEFI, che è lo standard moderno e permette il partizionamento GPT. "UEFI Only" elimina l'ambiguità.

Startup → Boot Order. Spostare "USB FDD" o "USB HDD" in prima posizione, prima del disco interno. Questo permette al T450 di avviare dalla USB quando è inserita.

Config → Power → Wake on LAN → Disabled. Funzione non necessaria che consuma energia in standby.

Security → Anti-Theft → Disabled (se presente). Va disabilitata per evitare conflitti durante l'installazione.

Config → Display → Graphics Device. Il T450 ha la NVIDIA 940M: se l'opzione è presente, lasciarla su Hybrid Graphics (o "Switchable") per mantenere la configurazione Optimus. Scegliere "Discrete only" solo se si vuole usare solo la NVIDIA, disabilitando permanentemente l'Intel — sconsigliato per l'autonomia.

Salvare ed uscire con F10 → confermare con "Yes".


3. Avvio dalla USB e installazione con Calamares

Avviare dalla USB

Inserire la USB. All'accensione del T450 apparirà il menu Ventoy (o l'avvio diretto se si è usato dd). Selezionare la ISO di CachyOS e attendere il caricamento del live environment. Se il sistema avvia dal disco interno, spegnere e riprovare, oppure premere F12 appena acceso per il menu di avvio temporaneo.

Scegliere il profilo al boot

All'avvio della ISO, CachyOS mostra un menu con voci come "CachyOS (open drivers)" e "CachyOS (proprietary NVIDIA)". Selezionare la voce con i driver proprietari NVIDIA: carica il modulo corretto per la 940M già nel live environment e riduce il rischio di schermo nero durante l'installazione.

Partizioni

Una volta nel live environment, avviare Calamares dall'icona sul desktop. Seguire le schermate per lingua, fuso orario e tastiera, poi arrivare alla schermata Partizioni.

Scegliere "Cancella disco" e lasciare che Calamares gestisca tutto automaticamente: creerà la partizione EFI in FAT32, root e swap. Su questa schermata è possibile attivare la cifratura LUKS spuntando l'apposita opzione e inserendo una passphrase. Equivale alla configurazione LUKS+ext4 del sistema precedente, ma gestita interamente dall'installer senza configurazione manuale.

In alternativa, con il partizionamento manuale, lo schema consigliato per il disco da 238 GB è:

/dev/sda1  →  512 MB  → FAT32  → flag: esp  → mount: /boot/efi

/dev/sda2  →    1 GB  → ext4               → mount: /boot

/dev/sda3  →   60 GB+ → btrfs              → mount: /

/dev/sda4  →    4 GB  → swap

/dev/sda5  →  resto   → btrfs              → mount: /home

La partizione /boot separata da 1 GB è utile con LUKS: il kernel e GRUB devono essere leggibili prima che la cifratura venga sbloccata, quindi /boot rimane non cifrato mentre il resto è cifrato.

Filesystem

Il filesystem consigliato è btrfs. CachyOS integra snapper per gli snapshot automatici, che permettono di tornare indietro in pochi secondi se un aggiornamento del kernel dovesse rompere qualcosa — su una distribuzione con aggiornamenti frequenti come CachyOS è una funzionalità concreta. I subvolumi standard sono @ per /, @home per /home, @log per /var/log, @cache per /var/cache e @tmp per /tmp. Calamares li crea automaticamente se si sceglie btrfs con l'opzione subvolumi.

Kernel

Nell'apposita schermata, scegliere linux-cachyos: include lo scheduler BORE/EEVDF ottimizzato per la reattività. L'i7-5500U supporta AVX2 (x86-64-v3): se l'installer propone la selezione del profilo di ottimizzazione, scegliere x86-64-v3 per un miglioramento concreto rispetto al profilo generico.

Avviare l'installazione, attendere il completamento, rimuovere la USB quando richiesto e riavviare.


4. Post-installazione base

Al primo avvio, se è presente CachyOS Hello, eseguirlo: guida la configurazione iniziale e l'installazione di pacchetti comuni. È il punto di partenza ufficiale.

Aggiornare il sistema

sudo pacman -Syu

pacman è il gestore pacchetti. Il flag -S installa o aggiorna, -y sincronizza il database dai mirror, -u aggiorna tutti i pacchetti installati. Va sempre eseguito per primo, prima di installare qualsiasi altra cosa, per evitare conflitti di dipendenze.

Installare driver e firmware essenziali

sudo pacman -S linux-firmware intel-ucode \\

  thermald tlp tlp-rdw acpi\_call \\

  mesa lib32-mesa vulkan-intel lib32-vulkan-intel \\

  intel-media-driver libva-intel-driver libva-utils \\

  xf86-video-intel \\

  bluez bluez-utils networkmanager

Abilitare i servizi

Il flag --now avvia il servizio immediatamente, oltre ad abilitarlo per i boot futuri:

sudo systemctl enable --now thermald

sudo systemctl enable --now tlp

sudo systemctl enable --now NetworkManager

sudo systemctl enable --now bluetooth

Aggiornare il microcode Intel

Il microcode viene caricato dal bootloader all'avvio. Dopo aver installato intel-ucode, il bootloader va informato. Prima verificare quale bootloader ha installato Calamares:

ls /boot/grub   2>/dev/null \&\& echo "→ GRUB installato"

ls /boot/loader 2>/dev/null \&\& echo "→ systemd-boot installato"

Se GRUB:

sudo grub-mkconfig -o /boot/grub/grub.cfg

Se systemd-boot:

sudo bootctl update

Riavviare, poi verificare che il microcode sia stato caricato:

grep -m1 "microcode" /proc/cpuinfo

L'output deve contenere un numero di revisione del microcode dopo la parola "microcode". Se la riga è vuota, il bootloader non è stato configurato correttamente — ripetere il comando corretto e riavviare.


5. Ottimizzazione CPU e risparmio energetico

Configurare TLP

Il file di configurazione di TLP è /etc/tlp.conf. Aprirlo con nano:

sudo nano /etc/tlp.conf

In nano: navigare con le frecce, salvare con Ctrl+O poi Invio, uscire con Ctrl+X. Cercare le righe esistenti (alcune saranno commentate con #) o aggiungere in fondo al file:

CPU\_SCALING\_GOVERNOR\_ON\_AC=performance

CPU\_SCALING\_GOVERNOR\_ON\_BAT=powersave

CPU\_ENERGY\_PERF\_POLICY\_ON\_AC=performance

CPU\_ENERGY\_PERF\_POLICY\_ON\_BAT=balance\_power

CPU\_MIN\_PERF\_ON\_AC=0

CPU\_MAX\_PERF\_ON\_AC=100

CPU\_MIN\_PERF\_ON\_BAT=0

CPU\_MAX\_PERF\_ON\_BAT=60

SCHED\_POWERSAVE\_ON\_BAT=1

NMI\_WATCHDOG=0

PLATFORM\_PROFILE\_ON\_AC=performance

PLATFORM\_PROFILE\_ON\_BAT=low-power

DISK\_APM\_LEVEL\_ON\_AC=192

DISK\_APM\_LEVEL\_ON\_BAT=128

Dopo aver salvato, applicare le modifiche senza riavviare:

sudo tlp start

Parametri kernel per l'i7-5500U

Aprire il file di configurazione di GRUB:

sudo nano /etc/default/grub

Trovare la riga GRUB\_CMDLINE\_LINUX\_DEFAULT. Avrà un contenuto simile a "quiet splash". Aggiungere i parametri all'interno delle virgolette, separati da spazi, senza andare a capo:

GRUB\_CMDLINE\_LINUX\_DEFAULT="quiet splash intel\_idle.max\_cstate=4 intel\_pstate=active i915.enable\_fbc=1 i915.enable\_psr=1 i915.enable\_rc6=1 nowatchdog nmi\_watchdog=0"

Dopo aver salvato, rigenerare la configurazione GRUB:

sudo grub-mkconfig -o /boot/grub/grub.cfg

Questo comando legge /etc/default/grub e scrive la configurazione finale in /boot/grub/grub.cfg. Le modifiche saranno attive al prossimo riavvio.

Nota su mitigations=off: aggiungere questo parametro disabilita le patch software per Spectre e Meltdown, vulnerabilità che affliggono l'i7-5500U. Il guadagno in performance è reale (circa 10–15%) ma aumenta il rischio di sicurezza. Sconsigliato se il laptop si connette a reti WiFi pubbliche o non fidate.

Monitoraggio temperature

Il sistema espone già i sensori thinkpad-isa-0000 e coretemp. Installare gli strumenti:

sudo pacman -S s-tui stress lm\_sensors

sudo sensors-detect --auto

sensors-detect rileva i sensori hardware e li configura. Il flag --auto risponde "sì" a tutte le domande senza input manuale. Dopo l'esecuzione, sensors mostra le temperature. s-tui è un'interfaccia interattiva che mostra frequenze, temperature e utilizzo CPU in tempo reale in un unico pannello.


6. GPU: Intel HD 5500 + NVIDIA 940M (Optimus)

Questo è il passaggio più delicato. Il T450 ha due GPU: Intel HD Graphics 5500 (iGPU, integrata nella CPU) e NVIDIA GeForce 940M — chip GM108M, architettura Maxwell — (dGPU). Questa configurazione si chiama NVIDIA Optimus: l'iGPU gestisce il display e il rendering quotidiano, la dGPU viene attivata per i carichi grafici intensi.

Non installare bumblebee: è un progetto abbandonato, incompatibile con i kernel recenti e con Wayland.

Passo obbligatorio: verificare quale driver ha installato CachyOS

Dal maggio 2025, CachyOS tenta di rilevare automaticamente la GPU e installare il driver corretto. Tuttavia, per le schede Maxwell in configurazione Optimus è documentato un bug per cui lo strumento chwd installa nvidia-open-dkms (driver 590xx, per GPU Turing e successive) invece del corretto nvidia-580xx-dkms. Il 590xx non supporta Maxwell: se viene installato, il sistema può avviarsi con schermo nero.

Verificare subito dopo il primo avvio, prima di qualsiasi altra configurazione GPU:

pacman -Q | grep -i nvidia

Leggere l'output:

Correggere il driver sbagliato

Rimuovere il driver incompatibile. I comandi usano 2>/dev/null per sopprimere i messaggi di errore se qualche pacchetto non è presente:

sudo pacman -Rns nvidia-open-dkms 2>/dev/null

sudo pacman -Rns nvidia-dkms 2>/dev/null

sudo pacman -Rns nvidia-utils lib32-nvidia-utils 2>/dev/null

Installare il driver Maxwell corretto dai repository CachyOS:

sudo pacman -S nvidia-580xx-dkms nvidia-580xx-utils lib32-nvidia-580xx-utils

Se pacman risponde "target not found", il pacchetto non è nei repo ufficiali in quel momento. Installarlo dall'AUR. Prima installare yay se non è già presente:

sudo pacman -S --needed base-devel git

git clone https://aur.archlinux.org/yay.git

cd yay

makepkg -si

Poi installare il driver:

yay -S nvidia-580xx-dkms nvidia-580xx-utils lib32-nvidia-580xx-utils

Il pacchetto AUR è mantenuto da ventureo del team CachyOS — è la fonte di riferimento ufficiale per Maxwell e Pascal su Arch.

Rigenerare gli initramfs e riavviare:

sudo mkinitcpio -P

sudo reboot

mkinitcpio -P rigenera tutte le immagini di avvio iniziale del kernel, includendo il nuovo modulo NVIDIA. Senza questo passaggio il modulo potrebbe non caricarsi correttamente al boot.

Recupero da schermo nero o TTY

Se all'avvio il sistema non mostra l'ambiente grafico, accedere alla TTY con Ctrl+Alt+F2 (o F3, F4). Inserire nome utente e password. Da lì si opera normalmente da riga di comando.

Opzione 1 — disabilitare l'avvio grafico temporaneamente, installare il driver corretto, poi ripristinare:

sudo systemctl set-default multi-user.target

\# installare il driver corretto come sopra

sudo systemctl set-default graphical.target

sudo reboot

Opzione 2 — usare nomodeset da GRUB. Al menu GRUB, premere e sulla voce di avvio. Trovare la riga che inizia con linux e aggiungere nomodeset alla fine prima di --. Premere Ctrl+X per avviare. Una volta nel sistema, installare il driver corretto, poi aprire /etc/default/grub, rimuovere nomodeset e rigenerare GRUB.

Configurazione Optimus: Opzione A — nvidia-prime (consigliata)

Con nvidia-prime, l'iGPU Intel gestisce sempre il display. La 940M si attiva solo esplicitamente tramite il prefisso prime-run. È la configurazione con il miglior equilibrio tra prestazioni e autonomia.

sudo pacman -S nvidia-580xx-dkms nvidia-580xx-utils lib32-nvidia-580xx-utils \\

  nvidia-prime mesa lib32-mesa \\

  vulkan-intel lib32-vulkan-intel \\

  intel-media-driver libva-intel-driver

Verificare che il modulo sia caricato:

lsmod | grep nvidia

L'output deve mostrare nvidia, nvidia\_drm, nvidia\_modeset. Per usare la 940M su un'applicazione specifica:

prime-run nome-applicazione

\# esempi concreti:

prime-run glxgears

prime-run blender

prime-run steam

Configurazione Optimus: Opzione B — optimus-manager

Permette di cambiare la GPU attiva in modo persistente, senza prime-run per ogni applicazione. Richiede il riavvio del display manager a ogni switch — salvare il lavoro prima di usarlo.

yay -S optimus-manager optimus-manager-qt

sudo systemctl enable --now optimus-manager

optimus-manager-qt aggiunge un'icona nel system tray per cambiare GPU graficamente. Da terminale:

optimus-manager --switch intel    # usa solo l'iGPU Intel (massima autonomia)

optimus-manager --switch nvidia   # usa solo la dGPU 940M (massima performance)

optimus-manager --switch hybrid   # Optimus automatico

Risparmio energetico: spegnere la 940M quando non è in uso

Anche con nvidia-prime, la 940M può rimanere alimentata in idle consumando 3–5W. Per abilitare il runtime power management, aggiungere in /etc/tlp.conf:

RUNTIME\_PM\_ON\_AC=auto

RUNTIME\_PM\_ON\_BAT=auto

Con questa impostazione TLP istruisce il kernel a spegnere i dispositivi PCI inattivi, inclusa la 940M. Si riaccenderà automaticamente quando si usa prime-run.

Configurazione iGPU Intel per X11

Su X11 (non Wayland), creare il file di configurazione:

sudo nano /etc/X11/xorg.conf.d/20-intel.conf

Inserire:

Section "Device"

  Identifier "Intel Graphics"

  Driver "intel"

  Option "TearFree" "true"

  Option "AccelMethod" "sna"

  Option "DRI" "3"

EndSection

TearFree elimina il tearing video. AccelMethod sna è il metodo più stabile per HD 5500. Su Wayland questo file non è necessario.

Verificare che tutto funzioni

\# Accelerazione hardware video Intel:

vainfo

\# Deve mostrare VAEntrypointVLD (decodifica) e VAEntrypointEncSlice (codifica)



\# GPU attiva di default:

glxinfo | grep "OpenGL renderer"

\# Deve mostrare "Intel HD Graphics 5500"



\# GPU con prime-run:

prime-run glxinfo | grep "OpenGL renderer"

\# Deve mostrare "GeForce 940M"

7. Batteria (doppia)

Il T450 supporta due batterie contemporaneamente: BAT0 (interna) e BAT1 (esterna nella bay anteriore). Entrambe rilevate e funzionanti. Stato misurato: BAT0 a 18.21 Wh su 23.2 Wh di design (78.5% di capacità residua), BAT1 a 19.88 Wh su 23.2 Wh (85.7%). TLP gestisce automaticamente l'ordine di scarica. Al momento del rilevamento il drain era 18W a riposo — con le ottimizzazioni descritte dovrebbe scendere a 8–12W, per un'autonomia stimata di 3–4 ore.

Soglie di carica

Tenere le batterie costantemente al 100% accelera la degradazione chimica. Le soglie di carica limitano il range di carica per preservare la durata nel tempo. Aprire /etc/tlp.conf e aggiungere o modificare:

START\_CHARGE\_THRESH\_BAT0=75

STOP\_CHARGE\_THRESH\_BAT0=80

START\_CHARGE\_THRESH\_BAT1=75

STOP\_CHARGE\_THRESH\_BAT1=80

Con questa configurazione TLP avvia la carica solo quando la batteria scende sotto il 75% e la interrompe all'80%. Funziona perché acpi\_call permette a TLP di comunicare direttamente con il firmware ThinkPad per controllare il circuito di carica — senza acpi\_call installato queste righe non avrebbero effetto.

Applicare le modifiche:

sudo tlp start

Powertop — analisi e ottimizzazione dei consumi

sudo pacman -S powertop



\# Ottimizzazione automatica una tantum:

sudo powertop --auto-tune



\# Analisi interattiva in tempo reale:

sudo powertop

Nell'interfaccia interattiva, la scheda "Tunables" mostra le impostazioni con stato "Bad" o "Good". Premere Tab per navigare tra le schede, Invio per attivare una voce "Bad". Per rendere l'auto-tune permanente ad ogni avvio, creare un servizio systemd:

sudo nano /etc/systemd/system/powertop.service

Inserire:

\[Unit]

Description=Powertop auto-tune

After=multi-user.target



\[Service]

Type=oneshot

ExecStart=/usr/bin/powertop --auto-tune



\[Install]

WantedBy=multi-user.target
sudo systemctl enable powertop

Verificare lo stato delle batterie

\# Riepilogo completo con soglie di carica attive:

tlp-stat -b



\# Dettagli singola batteria (energia, capacità, tasso di scarica):

upower -i /org/freedesktop/UPower/devices/battery\_BAT0

upower -i /org/freedesktop/UPower/devices/battery\_BAT1

8. SSD, filesystem e RAM

TRIM

Il TRIM segnala all'SSD quali blocchi non sono più in uso, permettendo al controller di gestirli internamente. Senza TRIM le performance degradano nel tempo. fstrim.timer esegue un TRIM sull'intero filesystem settimanalmente:

sudo systemctl enable --now fstrim.timer

Per verificare che il timer sia attivo e quando verrà eseguito:

systemctl status fstrim.timer

noatime nel filesystem

Ogni volta che un file viene letto, Linux per default aggiorna il campo "atime" (access time) dei metadati. Su un SSD queste scritture continue consumano cicli di scrittura inutilmente. noatime le disabilita.

Aprire /etc/fstab:

sudo nano /etc/fstab

Trovare la riga che monta la partizione root (/) e aggiungere noatime alle opzioni. Non modificare il valore UUID=xxxx, che è già corretto. Il risultato dipende dal filesystem scelto:

\# Per ext4:

UUID=xxxx  /  ext4   defaults,noatime,errors=remount-ro  0 1



\# Per btrfs (con compressione zstd):

UUID=xxxx  /  btrfs  defaults,noatime,compress=zstd:1,subvol=@  0 0

Con btrfs, compress=zstd:1 attiva la compressione trasparente al livello più veloce. Su file di testo, codice e documenti riduce l'occupazione su disco del 20–40% senza impatto percettibile sulle prestazioni.

zRAM

CachyOS installa zram-generator di default. zRAM crea un dispositivo di swap in RAM compressa: invece di scrivere su disco, usa RAM compressa che è ordini di grandezza più veloce. Verificare la configurazione:

cat /etc/systemd/zram-generator.conf

La configurazione ottimale per 16 GB di RAM è:

\[zram0]

zram-size = ram / 2

compression-algorithm = zstd

Se il file non esiste o ha valori diversi, crearlo o modificarlo, poi ricaricare:

sudo systemctl daemon-reload

sudo systemctl restart systemd-zram-setup@zram0.service

Parametri sysctl

Creare un file di configurazione dedicato:

sudo nano /etc/sysctl.d/99-performance.conf

Inserire:

vm.swappiness=10

vm.vfs\_cache\_pressure=50

vm.dirty\_ratio=10

vm.dirty\_background\_ratio=5

kernel.nmi\_watchdog=0

Applicare immediatamente senza riavviare:

sudo sysctl --system

IRQ balance

irqbalance distribuisce le interruzioni hardware tra i core della CPU. Senza di esso, tutte le interruzioni vengono gestite dal core 0, creando un collo di bottiglia. Con i 4 thread dell'i7-5500U il beneficio è modesto ma misurabile in scenari di I/O intensivo:

sudo pacman -S irqbalance

sudo systemctl enable --now irqbalance