2025-09-05

Esperimenti con QEMU in RAM e microBASIC in Bash

QEMU in RAM: esperimento con /dev/shm

Ieri ho fatto un po’ di esperimenti con QEMU in RAM.
L’idea era semplice: prendere una macchina virtuale, copiare il suo disco qcow2 in /dev/shm e farla partire da lì. Se hai RAM a sufficienza per contenere il disco, in teoria dovresti avere un avvio e un utilizzo più veloci.

Lo script che ho scritto si occupa di:

  • controllare la dimensione del disco rispetto alla RAM libera,

  • creare la cartella della macchina,

  • copiarci dentro solo il disco,

  • affiancare a quella cartella il file .conf di quickemu.

Esempio di controllo RAM


# check
if [ ! -f "$CONF" ]; then
echo "❌ Config file not found: $CONF"
exit 1
fi
if [ ! -f "$DISK" ]; then
echo "❌ Disk not found: $DISK"
exit 1
fi

# check free RAM in /dev/shm
DISKSIZE=$(stat -c%s "$DISK")
FREESHM=$(df --output=avail -B1 /dev/shm | tail -1)
RESERVE=$((4 * 1024 * 1024 * 1024)) # 4 GB
NEEDED=$((DISKSIZE + RESERVE))

if [ "$FREESHM" -lt "$NEEDED" ]; then
echo "❌ Not enough free RAM in /dev/shm."
echo " Disk size: $((DISKSIZE/1024/1024)) MB"
echo " Free RAM: $((FREESHM/1024/1024)) MB"
echo " Required: $((NEEDED/1024/1024)) MB (disk + 4 GB margin)"
exit 1
fi

echo "✅ Enough RAM available. Proceeding..."

Risultati

  • Con Devuan: miglioramento di circa 10%

  • Con Alpine: nessun guadagno

Insomma, un esperimento simpatico ma non rivoluzionario.
Comunque apre la porta a possibili test con junest e alpinest, dove la gestione dei filesystem potrebbe dare risultati diversi. Ho deciso di relegarlo a esperimento e per ora non lo pubblico


microbasic.sh: un BASIC in Bash

Oggi ho cambiato completamente argomento e sono tornato alla Bash, scrivendo microbasic.sh.
È una piccola libreria che mette a disposizione comandi che ricordano il BASIC: PRINT, INPUT, LOCATE, INK, PAPER e così via.

Esempio di utilizzo

#!/bin/bash
source ./microbasic.sh

CLS
INK 2
PAPER 4
LOCATE 5 5
PRINT_ "CIAO "

NAME=$(INPUT "COME TI CHIAMI?")
LOCATE 0 7
PRINT "PIACERE, $NAME"

Il problema del case insensitive

La parte più complicata è stata la gestione dei colori e soprattutto la sensibilità al maiuscolo/minuscolo.

Per risolvere ho introdotto un error_handler che cattura i comandi non riconosciuti e li converte in minuscolo, invece di lasciare che Bash vada in crash.


In questo modo ho un controllo centralizzato e posso gestire tutto da un unico punto.

# case-insensitive commands
command_not_found_handle() {
cmd=$(echo "$1" | tr '[:upper:]' '[:lower:]')
if declare -F "$cmd" >/dev/null; then
shift
"$cmd" "$@"
else
echo "Syntax error: $cmd" >&2
return 127
fi
}

Nonostante ciò, per ora sono stato costretto a sdoppiare i comandi INK e PAPER in versioni maiuscole e minuscole. Non è elegante, ma funziona.
E già stasera, dopo cena, tornerò a lavorarci: sono convinto che esista un modo più pulito per risolvere il problema. Lo ho comunque già ora inserito sul mio github. Magari a qualcuno può servire


Big Tek: Google sempre più chiusa

Infine, una riflessione sul mondo delle Big Tek.
Google, ormai in piena fase “AI-centrica”, dominata da un management indiano, sembra aver perso interesse per la formazione di nuovi talenti. Ha smesso di pubblicare i tree di sviluppo di Android, ha tagliato concorsi di programmazione e tutte quelle occasioni che in passato permettevano a giovani sviluppatori di crescere.

In parallelo, chiude sempre più codice.
E un ambiente chiuso e segreto è il posto ideale dove i pirati prosperano: meno trasparenza significa più spazio per chi si muove nell’ombra. È paradossale che, nel tentativo di proteggere tutto, si finisca col favorire proprio ciò che si vorrebbe evitare.

Un tempo Google sosteneva università e ricerca con servizi quasi gratuiti, quando non addirittura con vere e proprie donazioni.
Oggi invece sembra voler monetizzare ogni cosa, cercando di fare cassa ovunque.

Il risultato è che assomiglia sempre di più ad una Apple in versione negativa: chiusa, segreta, impenetrabile.

Stiamo andando verso un mondo digitale meno libero e meno aperto.

Io continuo a sperare nell’arrivo di qualcuno che sappia riportare trasparenza e condivisione, valori che hanno fatto crescere l’informatica fin dall’inizio.

 


2025-09-03

il declino di ubuntu

Questo post è vecchio di dieci anni ed era rimasto come bozza. Direi che sottoscrivo tutto quello che avevo scritto. 

 

C'era una volta una distribuzione Linux sudafricana. Questa distribuzione aveva potenziato la vecchia e un po' anatroccolo Debian e aveva creato  un bel cigno che cresceva diventando sempre più bella.
Ubuntu era il suo nome e tutti si deliziavano a guardarla.
Finché un giorno proprio quando compiva 10.4 anni il suo creatore mentore e sponsor non decise di usare un interfaccia nuova innovativa scomoda e brutta: Unity. Da li in poi è stato un declino continuo. Release sempre più buggate e grasse che facevano sempre rimpiangere la precedente fino alla 17.04.
Già ora sono ormai anni che nessuno usa più la versione Unity: tutti puntano a Kubuntu oppure le leggere Xubuntu, Ubuntu mate e Lubuntu sorellastre della bellissima. E ora dopo un annuncio scioccante via l'altro: l'epilogo.
Ubuntu non svilupperà più mir, mai decollato Windows manager e non svilupperà più Unity. Non supporterà più il 32bit e in definitiva diventerà solo una Debian con un altro nome. Il cigno torna brutto anatroccolo che nel frattempo però è cresciuto ed è un po' meno brutto. Una favola con un finale amaro... O forse no?

installation Party e il campo di carote

 


Installation Party Day 🚀

Oggi è stato installation party day! Linux Mint ha rilasciato la nuova versione 22.2 Zara, e ho colto l’occasione per aggiornare tutte le mie macchine. Resta fuori solo quella di mio suocero, che sistemerò nei prossimi giorni quando passerò da loro.

Durante l’aggiornamento ho dovuto anche ripristinare Plymouth, che avevo personalizzato con un’icona diversa. Le mie macchine non usano il tema standard: ho scelto Nordic con le icone Zafiro, quindi le novità estetiche introdotte da Mint le ho notate poco. Inoltre non ho dispositivi con il lettore d’impronte, quindi anche questa innovazione non mi riguarda.

Al netto di tutto, la mia impressione rimane la stessa: Linux Mint rasenta la perfezione per l’uso quotidiano. Con strumenti come junest, alpinest e quickemu ci puoi fare praticamente di tutto.

Una chicca che mi ha fatto scoprire Giulio è la gestione dei kernel: Mint Update li gestisce in maniera impeccabile. Io ero rimasto fedele a Synaptic (che ora non è più installato di default, e in effetti non serve più), ma devo ammettere che il sistema attuale è ormai maturo. Anche il Gestore Applicazioni ha raggiunto piena affidabilità.


 



Il futuro di CarrotCamp 🌱

Nel pomeriggio ho invece riflettuto sul futuro di CarrotCamp. La mia vecchia Raspberry Pi 1B, chiusa dentro un barattolo di Nescafé, ha ormai 13 anni. Debian non la supporta più: con Debian 12 sono fermo, perché Trixie non ha kernel per ARM6 a 32 bit. Avrò aggiornamenti fino al 2028, dopodiché quella board dovrà andare in pensione o restare con software vecchio e insicuro, non più adatto a stare esposta su internet.

Vorrei che il suo successore fosse un po’ più potente: capace di far girare AI locali, un Gitea aggiornato, il classico CarrotCamp, e magari fare anche da backup server per i miei sistemi. Questo mi permetterebbe di staccarmi un po’ da Google, che ultimamente ha smesso di essere “not evil”.

Tra l’altro non sono affatto soddisfatto del mio NAS Western Digital da 8TB. L’ho isolato da internet dietro il modem perché sospetto che invii all’esterno l’elenco dei file. Ho il presentimento che, anche con la porta chiusa sul modem, riesca comunque a farlo. Nei prossimi giorni voglio verificare se posso sostituire tutto con una soluzione open source, perché così non ho la sensazione di avere il controllo.