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