linux

Arch linux: installare un pacchetto quando il sistema non è aggiornato da tempo

arch

Può capitare di voler installare un pacchetto sul proprio sistema non aggiornato da tempo e questo non è possibile perchè ormai il pacchetto stesso o le sue dipendenze, nelle versioni volute dal sistema attualmente installato, non si trovano più nei mirror. La soluzione corretta sarebbe fare un aggiornamento di tutto il sistema, ma questo a volte può far perdere molto più tempo del voluto.

Si può risolvere la cosa velocemente aggiungendo tra i mirror di pacman il repository con l'archivio COMPLETO dei pacchetti di arch linux.

Editiamo il file "/etc/pacman.d/mirrorlist" e aggiungiamo la riga:

Server = https://archive.archlinux.org/packages/.all

Impostare risoluzione console testuale con driver NVIDIA

nvidia

Se usate i driver NVIDIA proprietari è probabile che la console testuale della macchina vada con risoluzioni bassissime. La soluzione è modificare la configurazione di grub in /etc/default/grub in questo modo:

#GRUB_GFXMODE=auto
GRUB_GFXMODE=1920x1080x32
# Uncomment to allow the kernel use the same resolution used by grub
GRUB_GFXPAYLOAD_LINUX=keep

In pratica si toglie "auto" da GRUB_GFXMODE e si mette la risoluzione volta (larghezza x altezza x bit colore), e si mette "keep" in GRUB_GFXPAYLOAD_LINUX.

P.S. Per sapere le risoluzioni supportate si deve fare il boot su grub, premere "C" e quindi usare il comando "vbeinfo".

 

Ottimizzare accelerazione video su Chromium (e Stadia)

chrome

Tutto è partito per cercare di far funzionare bene Stadia su Linux, che sul mio sistema linux + nvidia a 1080p lagga da far paura, anche quando la connessione internet è buona.

Da questo è partita una attività di ottimizzazione di chromium per gestire al meglio l'accelerazione hardware su NVIDIA e la riproduzione di video che voglio documentare, a prescindere da Stadia (che, comunque, continua ad andare male).

 

Systemd: abbassare il periodo di attesa in caso di "A stop job is running..."

linux

Se durante la procedura di shutdown uno dei job si blocca con la dicitura "A stop job is running..." di solito rimane bloccato per 1 minuto e mezzo! Se capita significa che qualcuno dei task di chiusura ha dei problemi, e quindi la soluzione corretta sarebbe indagare sullo specifico servizio systemd, guardare i log, capire e risolvere il problema. Intanto però abbassare quel minuto e mezzo aiuta!

Basta modificare la voce "DefaultTimeoutStopSec" all'interno del file "/etc/systemd/system.conf", impostandola ad esempio a "10s". Oppure, per evitare di modificare un file di sistema, aggiungere un file "/etc/systemd/user.conf.d/99-stop-fast.conf":

[Manager]
DefaultTimeoutStopSec=5s

CUPS: Stampante condivisa e errore 'Filter Failed'

cups

Il problema che sto per descrivere l'ho avuto con una stampante HP (e quindi installandola con HPLIP), ma è probabilmente comune anche ad altre stampanti.

Scenario: installo la stampante su una macchina server, la imposto come condivisa, poi su una macchina client, usando l'interfaccia di cups (ma anche quella di HP), installo la stampante remota.

Problema: tutte le stampe che faccio dal client vanno in errore per "Filter failed".

Earlyoom: Evitare il blocco del sistema a causa della fine della memoria

linux

I miei pc sono configurati per avere uno swap minimo dal momento che in genere la memoria ram basta e avanza, ma ogni tanto capita, a causa di sviste o bug, che la memoria si riempie completamente e il sistema diventa inutilizzabile.

Basterebbe riuscire a fare un kill, anche solo poter entrare in un terminale testuale per farlo, ma spesso è impossibile. In teoria il kernel dovrebbe avere un "OOM killer" (out of memory killer) che si occupa di eliminare un processo per rendere il sistema nuovamente reattivo, ma in pratica non viene eseguito mai.

 

Recentemente ho trovato una soluzione che sembra molto promettente e sto testando su tutte le mie macchine desktop:

https://github.com/rfjakob/earlyoom

Attivare gigabit ethernet sulla scheda di rete

ethernet

Poco tempo fa ho scoperto che uno dei pc che ho a casa non attivava la gigabit ethernet: avevo appena montato un nuovo switch di rete, e c'era qualcosa che decisamente non andava con le velocità. Per verificare la cosa ho usato il comando ethtool, seguito dal nome dell'interfaccia da controllare (per capire il nome dell'interfaccia ci sono vari metodi, io uso ifconfig). Questo il risultato:

[bash]

> sudo ethtool enp3s0

 

Impostare un limite di banda per un singolo processo: il comando trickle

linux

Se si vuole impostare un limite banda su una intera interfaccia di rete esistono diverse guide in rete che spiegano come farlo. Più difficile trovare il modo per limitare un singolo processo.

Ci viene in aiuto il comando TRICKLE.

Una volta installato (è presente nelle più comuni distribuzioni), è sufficiente usarlo prima del comando che vogliamo lanciare, ad esempio in questo modo:

trickle -d 20 comando parametri ...

Per avviare "comando" con un limite di download di 20KB/sec

 

Per maggiori informazioni, e per capire come funziona il limite e il processo di "smoothing":

https://github.com/mariusae/trickle

Montare l'immagine di un disco

linux

Montare l'immagine di disco (effettuata con dd o altro) è semplicissimo, nel caso questa sia di una singola partizione:

mount -o loop path_image.iso /mnt/mount_point

Se invece l'immagine è di un disco completo delle sue partizioni (e quindi l'immagine contiene piu' di una partizione), occorre scoprire in che posizione parte la partizione.

Per farlo eseguire questo comando:

fdisk -l path_image.iso
# in alternativa (ma non ci dicono il sector_size)
parted path_image.iso unit s print
# oppure
file -s path_image.iso

Segnarsi il settore di inizio della partizione che vogliamo (per esempio "1000"), e la dimensione dei settori (normalmente "512"), quindi eseguire:

[bash]