mercoledì 16 luglio 2025

Hal91 quando linux stava in un floppy

 

 

Eccoci per la pagina nostalgia canaglia....... 

Hal91 è stata forse la terza distribuzione Linux che ho provato.
Mi ha sempre affascinato e colpito per l'obiettivo, all'epoca impensabile: far stare un'intera distribuzione Linux in un floppy da 1.44 megabyte.
Sembra incredibile anche solo pensarlo oggi, quando 8 giga byte non bastano più per nulla...

Scordatevi Xorg e il browser ma anche midnight commander  o curl pensate piuttosto a un sistema essenziale con lo stretto indispensabile anzi un po meno.

Al momento Hal91 non è più recuperabile da internet, quindi ho deciso di allegarla in fondo a questo post, così da renderla nuovamente disponibile (almeno finché Blogspot non chiude!).


Estrazione del contenuto del floppy

Per studiarla meglio, ho scritto due script.

🛠 extract.sh

#!/bin/bash
# Estrae hal91.img montandolo in loop

IMG="hal91.img"
MOUNTDIR="mnt_hal91"
DESTDIR="hal91"

mkdir -p "$MOUNTDIR" "$DESTDIR"

sudo mount -o loop "$IMG" "$MOUNTDIR"
cp -r "$MOUNTDIR"/* "$DESTDIR"
sleep 1
sudo umount "$MOUNTDIR"
rmdir "$MOUNTDIR"

Perché usare mount e non mtools?
Perché mtools non supporta le cartelle, e nel floppy c’è una cartella importante (hal91/) che altrimenti andrebbe persa.


📁 Contenuto del floppy

├── hal91
│   ├── add.tgz
│   ├── docs.gz
│   ├── hal91.ini
│   ├── loadlin.exe
│   ├── modules
│   │   ├── 3c501.gz
│   │   ├── 3c503.gz
│   │   ├── 3c509.gz
│   │   ├── loop.gz
│   │   ├── ne.gz
│   │   └── plip.gz
│   └── no-map.gz
├── HAL91.BAT
├── hal91.msg
├── initrd.gz
├── LDLINUX.SYS
├── SYSLINUX.CFG
└── vmlinuz

🔍 Analisi di initrd.gz

Con un secondo script ho estratto il contenuto di initrd.gz.

Ecco la struttura:

/bin     → bash, gzip, tar, mount, ecc.
/dev     → console, hda, sda, ram, tty, ecc.
/etc     → mtab, ld.so.cache
/lib     → libc5, ld-linux.so.1
/proc    → vuoto, viene montato
/linuxrc → lo script init

Ecco il contenuto di /linuxrc

#!/bin/sh
#
# hal91's initfile (/linuxrc), the bootup script of the system
#

VERSION=0.2.0

#
echo "c[hal91], ver. $VERSION by Øyvind Kolås (okolaas@online.no) initializing" 

PATH="/bin:/usr/bin:/usr/local/bin:."
TERM=linux
ignoreeof=10
no_exit_on_failed_exec=yes
export PATH DISPLAY TERM ignoreeof
umask 022

echo -n "mounting proc: "
mount /proc/ /proc -v -t proc 

INIT_LOC=`cat /proc/sys/kernel/real-root-dev`

echo -n "Loading init-script from: "
case $INIT_LOC in
  769) echo "hda1"
	mount /dev/hda1 /mnt/tmp
	;;
  770) echo "hda2"
	mount /dev/hda2 /mnt/tmp
	;;
  771) echo "hda3"
	mount /dev/hda3 /mnt/tmp
	;;
  772) echo "hda4"
	mount /dev/hda4 /mnt/tmp
	;;
  775) echo "hdb1"
	mount /dev/hdb1 /mnt/tmp
	;;
  776) echo "hdb2"
	mount /dev/hdb1 /mnt/tmp
	;;
  777) echo "hdb3"
	mount /dev/hdb1 /mnt/tmp
	;;
  778) echo "hdb4"
	mount /dev/hdb1 /mnt/tmp
	;;
  2201) echo "hdc1"
	mount /dev/hdb1 /mnt/tmp
	;;
  2202) echo "hdc2"
	mount /dev/hdb1 /mnt/tmp
	;;
  2203) echo "hdc3"
	mount /dev/hdb1 /mnt/tmp
	;;
  2204) echo "hdc4"
	mount /dev/hdb1 /mnt/tmp
	;;
  8805) echo "hdd1"
	mount /dev/hdb1 /mnt/tmp
	;;
  8806) echo "hdd2"
	mount /dev/hdb1 /mnt/tmp
	;;
  8807) echo "hdd3"
	mount /dev/hdb1 /mnt/tmp
	;;
  8808) echo "hdd4"
	mount /dev/hdb1 /mnt/tmp
	;;
   *) echo "floppy"
	echo -n " mounting: "
	mount /dev/fd0 /mnt/tmp -t msdos
esac;

[ -f /mnt/tmp/hal91/hal91.ini ] && cat /mnt/tmp/hal91/hal91.ini \
| tr -d '\r' >/hal91.ini
[ -f /hal91.ini ] && chmod 777 /hal91.ini
[ -f /hal91.ini ] && exec /hal91.ini

echo
echo "** hal.ini failed.. starting a shell"
echo
exec bash

⚙️ Il file hal91.ini

Ecco lo script che avvia il sistema:

#!/bin/sh
cd /
echo
echo -n "Extracting filesystem: "
tar -xozf /mnt/tmp/hal91/add.tgz 2>/dev/zero
echo

echo -n "Starting update:"
/bin/update
echo

echo -n "Copying documentation: "
[ -f //mnt/tmp/hal91/docs.gz ] && gunzip -c /mnt/tmp/hal91/docs.gz > /UserGuide.txt
echo

# (Configuring norwegian keyboard layout),
#echo -n "Setting keyboard mappings: "
#
#gunzip -c /mnt/tmp/hal91/no-map.gz > /tmp/key.map
#loadkeys /tmp/key.map
#echo
#rm /tmp/key.map

echo "Initializing gpm-services: "
#
gpm -m /dev/cua0 
echo 

umount /mnt/tmp
rm -r /mnt/tmp

echo -n "Loading loop-device module: "
gunzip -c /mnt/tmp/hal91/modules/loop.gz >/tmp/loop.o
insmod /tmp/loop.o 
rm /tmp/loop.o

echo "Opening Virtual Consoles: "
#
open -c 2 -- bash -rcfile /etc/bashrc
open -c 3 -- bash -rcfile /etc/bashrc
open -c 4 -- bash -rcfile /etc/bashrc
open -c 5 -- bash -rcfile /etc/bashrc
open -c 6 -- bash -rcfile /etc/bashrc
open -c 7 -- bash -rcfile /etc/bashrc
open -c 8 -- bash -rcfile /etc/bashrc
exec bash -rcfile /etc/bashrc

Il sistema funziona interamente in RAM, crea un FS temporaneo di 3MB, e vi estrae add.tgz e docs.gz.


🖥️ Requisiti minimi

  • CPU: 486 DX o superiore

  • RAM: almeno 8MB

  • Supporto: Floppy da 1.44MB o avvio da DOS con loadlin

Nel 1998 era incredibile. Oggi, un capolavoro da studiare!


🔄 Avvio con QEMU

start.sh

#!/bin/bash
# Avvia HAL91 con QEMU

qemu-system-i386 -fda hal91.img -boot a -m 16 -vga std

Funziona anche con VirtualBox, impostando l’immagine floppy come disco.


📦 Download

hal91.zip

 

giovedì 30 dicembre 2021

usare Git impostato su un server tor

Se abbiamo un repository su un server tor potrebbe sembrare impossibili fare clone push e pull del repository stesso in realta è molto piu semplice di quanto sembri. basta aggiungere il paramentro -c al comando seguito dalle informazioni sul proxy tor locale attivo. Un semplice esempio dovrebbe renderlo piu esplicativo:
git -c http.proxy=socks5h://127.0.0.1:9050 clone [indirizzo del repositori onion]
git -c http.proxy=socks5h://127.0.0.1:9050 push origin master
git -c http.proxy=socks5h://127.0.0.1:9050 pull
ovviamente lo scaricamento e il caricamento sono piu lenti che con la normale rete

martedì 23 novembre 2021

onion.ws

Volete visitare la darknet TOR senza installare tor-browser? onion.ws fa per voi: questo gateway permette di visitare qualque sito .onion dal vostro browser. Ovviamente la privacy ne risente e non lo userei per cose riservate ma per servizi normali non ha controindicazioni. Se avete un server casalingo TOR e volete renderlo fruibile dovete solo aggiungere all'URL .onion l'estensione.ws Infine per completare e semplificare usate un servizio come tinyurl per semplificare l'indirizzo. un esempio è il nostro sito micro dei cantinari visitabile al link https://tinyurl.com/paviacantinari

giovedì 14 ottobre 2021

JuNest

Se volete provare arch linux e non volete diventare scemi avete problemi questa è un ottima soluzione.
JuNest è un applicazione che scarica e installa una micro distribuzione arch dentro alla vostra distro preferita. Non dovrete neppure installare xorg in quanto userà lo schermo della distro madre e sarà possibile avere entrambi i mondi contemporaneamente. Si installa da git con questo comando:
git clone git://github.com/fsquillace/junest ~/.local/share/junest
export PATH=~/.local/share/junest/bin:$PATH
se volete usare i comandi dentro al vostro terminale senza prima invocare junest senza parametri aggiungete questo comando
export PATH="$PATH:~/.junest/usr/bin_wrappers"
per rendere permanenti i path vi consiglio di copiare
export PATH="$PATH:~/.junest/usr/bin_wrappers" export PATH=~/.local/share/junest/bin:$PATH
nel file .bashrc della vostra cartella home.

SETUP
il comando di installazione è semplicemente
junest setup
Dopodiche per accedere potete usare semplicemente junest senza parametri
Da qui in poi siete in una distribuzione vuota di archlinux e con pacman potrete esplorare anche questo mondo senza perdere la sicurezza della vostra distro preferita.
Per rimuove tutta la distro dal sistema cancellare la cartella .junest e la cartella .local/share/junest
infine ecco il link da cui scaricare tutto e per maggiori info:

https://github.com/fsquillace/junest

quickemu

Qemu è un ottimo virtualizzatore di sistemi operativi completi che nelle ultime versioni ha prestazioni paragonabili ai migliori software del settore. Tuttavia è davvero difficile da configurare. Quickemu risolve alla grande il problema. E' possibile virtualizzare una distro con 2 comandi e quickemu scarica la iso, configura tutto e lancia qemu con tutti i parametri ottimizzati.

Ma andiamo con ordine:

il primo passo è installare quickemu. Le dipendenze sono notevoli ma se abbiamo una distro ubuntu based tutto si riduce a 2 comandi
sudo apt-add-repository ppa:flexiondotorg/quickemu
sudo apt install quickemu
Installato il pacchetto e le dipendenze si puo procedere ad installare la prima macchina virtuale con 2 comandi
quickget ubuntu-mate hirsute
quickemu --vm ubuntu-mate-hirsute.conf
Quickemu lancia Qemu ottimizzato e vi trovate in un ambiente perfettamente funzionate veloce e leggero.
Quickemu può installare anche immagini di macosx (anche recenti) e perfino windows11 con il tpm2 attivato.
Per cancellare una macchina virtualizzata è sufficente rimuovere dalla home il file .conf e la cartellla con lo stesso nome (ex. cartella ubuntu-mate-hirsute e ubuntu-mate-hirsute.conf).
Per i dettagli vi rimando al repositori git, sede del progetto.

https://github.com/wimpysworld/quickemu

 Firma digitale su Linux

(aggiornamento maggio 2023)

Vediamo come riuscire ad utilizzare la firma digitale su Linux, ad esempio per firmare documenti da inviare al proprio comune.


Innanzitutto è stato necessario recarsi in comune o asl o forse anche tramite sito regione lombardia per i lombardi per abilitare la carta nazionale servizi (codice fiscale, tessera sanitaria) alla firma digitale. Fatta la richiesta, si ottiene il codice pin.

Purtroppo il lettore usato non ha una configurazione plug & play su linux, si tratta di un vecchio Manhattan.



Queste le istruzioni per renderlo funzionante, distribuzione linux mint 20.2 64 bit

Una volta inserito nella porta usb, il comando lsusb restituisce questo id:

Bus 002 Device 002: ID 0ca6:0010 Castles Technology Co., Ltd EZUSB PC/SC Smart Card Reader

https://www.castlestech.com/it/products/ez100-series/

Andiamo a scaricare il driver da questo indirizzo

https://www.castlestech.com/wp-content/uploads/2016/08/201511920271676073.zip

unzip 201511920271676073.zip

unzip EZUSB_Linux_x86_64_v1.5.3.zip (nel caso di sistema operativo a 64 bit)

cd driver_ezusb_v1.5.3_for_64_bit

Installiamo il demone pcscd che serve per accedere alle smart card

sudo apt install pcscd


controlliamo che tutte le dipendenze sian soddisfatte:

sh ./check_env


in caso positivo,


./install


[nuovo] installiamo un po' di dipendenze...

sudo apt-get install pcscd libpcsclite1 pcsc-tools libccid libnss3-tools opensc-pkcs1 opensc

il servizio non parte di default... sudo pcscd lo avvia

per rendere definitivo dovrebbe bastare, con sistemi systemd, 

sudo systemctl enable pcscd.socket

ora è necessario installare i driver per la propria carta... dal sito agenzia entrate

https://sistemats1.sanita.finanze.it/portale/elenco-driver-cittadini-modalita-accesso

se la nostra cns è ACTALIS o OBERTHUR IDEMIA (fino 2019) e il nostro sistema linux 64 bit debian based, libbit4xpki-idemia-amd64.1.4.10-622.deb

se la carta è successiva (sulla carta stessa vicino al chip c'è scritto ST):  SafeDive2022.zip ver 4.9.1

ho provato solo con il primo pacchetto debian...


ora installiamo il software per la firma digitale, Firma4NG di infocamere


https://id.infocamere.it/infocamere/download_software/download_software

Scarichiamo, scompattiamo ed eseguiamo
./setup.run -i

Per lanciarlo (viene comunque creata una entry nei menu) usiamo
/opt/Firma4NG/launcher_linux.com


Per firmare basta connettere il lettore, inserire la card come nella prima foto, premere su Firma, inserire il pin e es. per firmare un pdf scegliere firma invisibile e aggiunti al pdf.

 


Cifratura di un file pdf

Cifratura di un qualsiasi tipo di file

 

Se vogliamo abilitare l'accesso ai siti statali con la card al posto che con spid o altre soluzioni... con firefox dobbiamo andare su impostazioni - certificati - dispositivi di sicurezza ( about:preferences#privacy ), nuovo modulo PKCS#11 , scegliere nella parte destra il pulsante carica, e inseirire, per le card non STM, questo collegamento: /usr/lib/x86_64-linux-gnu/pkcs11/opensc-pkcs11.so .

Chromium ecc. non provati.


Per le tessere stm è necessario eseguite lo script contenuto nell'archivio, solo per sistemi x64 ubuntu a quanto pare...

estratto del readme...

=========================================
SafeDive 2022 ver. 4.9.1 Setup Ubuntu x64
=========================================
Prerequisiti:
1)libpcsclite1_1.8.23-1_amd64
2)OpenSSL 1.1.1k
Questi due pacchetti dovrebbero essere già presenti su un'installazione Ubuntu.
Per verificarlo, da terminale eseguire, come amministratore di sistema ("sudo su"),  i comandi:
a. dpkg -s openssl
b. dpkg -s libpcsclite1
La libreria libcrypto.so.1.1.1 contenuta in OpenSSL è disponibile nella cartella /outerlibs del presente pacchetto di installazione.  
 
Installazione di SafeDive 2022 ver. 4.9.0:
1) Aprire il terminale (utente NO ROOT), posizionarsi nella cartella dove si trova il file "SafeDive2022-4.9.0_x64.sh" ed eseguire il comando:
./SafeDive2022-4.9.0_x64.sh --target "percorso_della_cartella_di_installazione".
 
Per eseguire l'applicazione PIN Manager:
1) Aprire la cartella di installazione e fare doppio click sul file "PIN Manager" per avviare l'applicazione.
In alternativa:
1) Fare click sul file "PIN Manager" con il tasto destro del mouse e selezionare "Proprietà".
2) Nel tab "Permessi" accertarsi che il flag "Consenti l'esecuzione del file come programma" sia selezionato.
3) Fare doppio click sul file "PIN Manager" per avviare l'applicazione.
oppure
1) Fare click sul file "go.sh" con il tasto destro del mouse e selezionare "Proprietà".
2) Nel tab "Permessi" accertarsi che il flag "Consenti l'esecuzione del file come programma" sia selezionato.
3) Eseguire il file "go.sh" da da riga di comando (terminale).
 
 
Creazione del file di log:
1) Creare la cartella "stP11Logs" sotto la cartella /tmp lanciando il comando "mkdir /tmp/stP11Logs".
2) Fornire alla cartella creata al punto 1 i diritti in scrittura lanciando il comando "chmod 777 /tmp/stP11Logs"
 
In caso di problemi o per ulteriori informazioni, far riferimento al file SafeDive-Guida-Problemi.pdf


Complicato? io direi troppo.


Buone firme, un saluto da Giulio


martedì 16 febbraio 2021

Supertuxkart

Stavolta si gioca!



Supertuxkart     

Gioco molto carino e di fantasia, open source e gratuito, disponibile per Linux, Windows, Android, Mac.


Video installazione su Linux Mint 20.1 , Supertuxkart versione 1.2

Nota: il video è registrato a soli 10 frame al secondo, il gioco è decisamente più fluido hardware permettendo ;)

Buon divertimento, Giulio.

16 febbraio 2021

Hal91 quando linux stava in un floppy

    Eccoci per la pagina nostalgia canaglia.......  Hal91 è stata forse la terza distribuzione Linux che ho provato. Mi ha sempre affasci...