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.

 


Nessun commento:

Posta un commento