giovedì 16 aprile 2020

Il PXE questo sconosciuto...


Siccome ho ancora un vecchio intel centrino che, nonstante tutta la sua età, non accenna a morire ma ha il lettore dvd andato e non supporta il boot da usb, ho deciso di documentarmi per capire meglio come fare per installare il sistema operativo su quell'affare senza avere assolutamente nulla in mano.

Fin dai tempi remoti, il bios ha una opzione di boot che si chiama "PXE", in pratica fa il boot del computer via rete locale, è necessario configurare un server dns e dhcp opportunamente per ottenere qualcosa.

La cosa mi ha solleticato, per Debian GNU/Linux ho trovato un programma che si chiama DNSMasq che include sia il server DNS che il server DHCP, ma io li ho entrambi sul router, e quindi la cosa si complica per via di interferenze.

Quel programmino consente di basarsi, se opportunamente programmato sui server DNS e DHCP esistenti e fornire solo la funzionalità di PXE.

Ho scopiazzato la configurazione del programma da internet e l'ho avviato.
Fio a qui tutto bene, però è necessario saper scriptare, perché i file di boot non sono subito pronti, ma si può far un menù e dire al programma quale scegliere.

C'è anche un altro aspetto da considerare: se i file vengono presi dalla rete locale, è necessario metterli da qualche parte (presumibilmente sul server che ospita DNSMasq, ma non solo), e come gestire la situazione.

Sono venuto a scoprire un protocollo che si chiama TFTP: "Trivial" ftp, in patica un ftp grezzo, che dnsmasq gestisce alla perfezione, quindi è possibile usare questo tftp per gestire sia i file di script che i file di installazione, basta solo amalgamare il tutto per ottenere qualcosa di funzionante.

Il punto adesso diventa: se volessi configurare qualcosa anche per le macchine a 64 bit?

Il gioco è semplice: in pratica il protocollo PXE prevede che la macchina annunci il tipo di architettura che monta, e quindi è sufficiente istruire DNSMasq per dire "se la macchina è a 32 bit invia i files a 32 bit", "se la macchina è a 64 bit invia i file a 64 bit".

E' relativamente semplice da gestire, un semplice scambio di messaggi.

Ed ovviamente alla macchina a 64 bit bisogna inviare grubx64.efi, tuttavia ho notato con mia profonda insoddisfazione che il package già pronto di debian per grub netboot soffre di un bug, in pratica grub il file di configurazione lo va a cercare da qualche parte (non si sa bene dove) ma non sulla rete locale, che ovviamente non risponde e quindi imputtana tutto il boot.

Per ovviare al problema, quindi, è necessario ricompilarsi il grubx64.efi con l'ip locale della macchina, il comando è il seguente:





grub-mkimage -d /usr/lib/grub/x86_64-efi/ -O x86_64-efi -o /mnt/bootx64.efi -p '(tftp,<ip della macchina>)/grub' efinet tftp




E fino a qua ci siamo, ancora una volta bisogna costruire il file di configurazione di grub, passando kernel e initrd per tutte le distro linux che si vuole inserire, che verranno scaricate da TFTP e il gioco è fatto.





Adesso la domanda diventa: in caso di una installazione di windows come si deve procedere?

I file di configurazione del boot loader di windows sono al massimo per il boot da usb, per la rete, che io sappia, non è stato (ancora) pubblicato nulla, quindi il semplice "chainload" dà errore.





Quasi tutte le fonti su internet riportano di mettere come kernel il programma binario "ramdisk" e come initrd il file iso, ma in questo modo anche se la macchina è a 64 bit il sistema viene avviato come se fosse a 32 bit e quindi il boot loader di windows non si installa sulla partizione efi, e gub richiede la partizione di compatibilità.

Per ovviare al problema ho trovato un progetto che si chiama wimboot, in pratica patcha al volo i files di configurazione esistenti per adattarli al boot via rete.
E' sufficiente impostare come kernel il wimboot e come initrd il file wim che si desidera "avviare".

Però con grub non funziona, per problemi di compatibilità.

Ho trovato un progetto che sapevo già da qualche tempo, che non avevo mai approfondito, che si chiama IPXE, in pratica un firmware uefi (e x86) programmato per bootare dalla rete. Tutto quello che bisogna fare è trovare il modo di far caricare all'avvio (tramite netboot, o tramite efi) il file ipxe.efi per avere una console preimpostata per bootare da rete, a cui è sufficiente passare come kernel il wimboot e come initrd il file wim per poter bootare windows.

In generale questo sistema a 64 bit è compatibile con tutti i winpe, ad eccezione di quelli generati da microsoft per eseguire le installazioni di windows. Per ovviare a questo problema bisogna crearsi un winpe apposito da cui far partire l'installazione di windows in maniera manuale.
Ci tengo a precisare che attualmente l'ipxe supporta solo il tftp e l'http, nfs e samba sono in fase di approvvigionamento, per cui se in giro leggete che con ipxe bisogna PER FORZA usare http, quella documentazione non è aggiornata.
E qui c'è un problema grosso quanto la casa: il winpe non supporta il tftp, quindi i file di installazione di windows vanno messi su una condivisione samba, ma abbiamo fatto anche questo.

Il wimboot per x86 non funziona tanto bene, tuttavia per x86 si può sempre usare il memdisk che è universale.

In queste giornate di sperimentazione, come potete vedere, molte cose sono andate storte, ma si è sempre trovato una soluzione a tutto.






https://youtu.be/nRjl0_stNug

lunedì 13 aprile 2020

Project piccolinux


Attenzione: per errore nei files sono ancora presenti i mainteiners originali, ma tutti i deb scaricabili dal mio gdrive sono opera mia.


In oltre negli script shell pi-ffcam e pi-ffplay è ancora presente il nome dell'autore originale, io mi sono occupato solo della traduzione della UI in italiano.

Il progetto, in oltre, è dismesso


Da quando ho deciso di dotarmi di un raspberry, ho avuto la bella idea di cucinarmi una distribuzione debian a 64 bit fin dal giorno prima che arrivasse, così quando è arrivato e l'ho montato, è stato sufficiente montare la sd sopra per ottenere un qualcosa di funzionante.

Il problema è che il sistema video è proprietario, e quindi i driver (ancora) non ci sono, per cui qualsiasi desktop grafico, fino ad ora, ha sempre girato molto lentamente.

Navigando in internet, ho trovato prima gli script che mi sono serviti per cucinare la prima distro, poi mi sono studiato gli script ed ho visto dove stava il kernel, in seguito nei repository del releaser del kernel ho trovato alcuni script, di cui non ne ho capito l'utilità fino a quando non li ho visti in funzione.

Il releaser pubblica settimanalmente una distro gentoo a 64 bit che sul raspberry pi 4 funziona decentemente, il problema è che, dopo averla provata, ho visto che gentoo a 64 bit per arm non ha quasi nulla di pronto.
Per cui sono tornato a debian, però mi sono studiato per bene sia quella gentoo che i tool che c'erano sopra.

Ho capito che il raspberry pi ha due modalità di avvio del video: la normale proprietaria e la legacy che è pubblica, per cui mi sono detto "perché non provare ad usare la modalità legacy?".

Ancora una volta, mi sono informato, ed ho letto che per la modalità legacy ci sono i driver da aggiornare, e quindi è stato un casino.
Buster ha i driver mesa vecchi, che non funzionano sul nuovo raspberry, bullseye, invece, ha i driver aggiornati ma è instabile.

Quindi le soluzioni sono due:





Usare bullseye
Compilare i driver aggiornati

Dalla seconda nasce project piccolinux, una distro debian interamente a 64 bit per il raspberry pi4 che funziona decentemente.
All'interno, ovviamente, oltre al kernel del releaser, si trovano anche i tool.
Se il releaser (o chi per lui) ha problemi sono disposto a rimuovere i suoi tool dalla distribuzione, anche se ufficialmente sono tutti pubblicati con licenza GPL.

Si basa sulla mia debian netinst, per cui oltre ad avere ssh attivo con la porta ssh aperta sul firewall, ha anche NTP, cinnamon (che uso), i driver mesa aggiornati, ed è impostata per l'italiano, per cui se non si è italiani bisogna seguire le medesime regole (tra cui anche quella di ridimensionare la partizione ext4 per occupare tutto lo spazio sulla sd) a mano.
Ha due utente di default attivi:





root con password debian





utente debian con password debian
E' importantissimo cambiare entrambe le password al primo avvio.





E' una distribuzione general pourpose.
Grande assente, al momento, è la briscola.





Vi posto un video dell'operato.





Per completezza riporto i link dei progetti dell'autore che ho incluso nel progetto.

https://github.com/sakaki-/bcm2711-kernel-bis
https://github.com/sakaki-/pi-ffcam
https://github.com/sakaki-/pi-ffplay
https://github.com/sakaki-/pyconfig_gen






https://www.youtube.com/watch?v=gWIb1Q-XlJc&feature=youtu.be




UPDATE 10/05/2020 ore 16.00

Il progetto piccolinux non vuole essere una distribuzione di GNU/Linux a tutti gli effetti, perché onestamente non ne ho ne le conoscenze, né la capacità, né la manodopoera per poter fare il progetto, ma vuole solo essere una patch per far arrivare Debian dove non può arrivare, perché di certo nessun sistema operativo può coprire tutto l'hardware esistente.

A tal proposito, di recente ho pubblicato i mesa pacchettizzati per debian che abilitano l'FKMS sul raspberry pi 4, il kernel pacchettizzato, alcuni binari della raspberry corp ricompilati e pacchettizzati e qualche altra bella cosuccia.

Adesso è arrivato il tempo di mettere tutto assieme e creare una nuova release di debian rpi64.

Sostanzialmente c'è una unica differenza rispetto alla vecchia release (che è stata rimossa), la roba dentro è la stessa, solo che è stata pacchettizzata per essere integrata col sistema operativo.

La parte principale sono i mesa, sono stati pacchettizzati usando le direttive di debian, là dove possibile.
Poi lo userspace, invece di essere stato copiato alla cazzo di cane, è stato trovato, ricompilato, pacchettizzato ed installato.
Anche il kernel è stato pacchettizzati ed installato.
pi-ffplay e pi-ffcam sono stati tradotti, pacchettizzati ed installati.
pyconfig_gen, invece, è stato modificato in modo da non basarsi più su sudo, ma non è stato pacchettizzato. E' possibile avviarlo anche da utente non root previo inserimento della password di root.
La cosa interessante, è che adesso il cambio della password è obbligatoria, sia per l'utente "debian" che per l'utente "root": al primo avvio bisogna per forza accedere da linea di comando (premendo ctrl+alt+f1 o accedendo tramite SSH) e inserire come nome utente "root" e come password "debian": verrà richiesto l'inserimento della nuova password per accedere, lo stesso vale per l'utente "debian".

E' stato aggiunto il supporto all'ntp e il supporto per la connessione a wifi da linea di comando.

E' stato, in oltre, installato il supporto grafico per il firewall, si chiama "gufw".

FFMPEG è stato ricompilato per abilitare il supporto all'accelerazione hardware, funziona poco e male ma funziona.

Anche qui la raccomandazione è quella di rigenerare le chiavi ssh una volta configurata la scheda sd, e se non siete italiani dovete riconfigurare il linguaggio, il layout da tastiera, il fuso orario ed installare i pacchetti per la traduzione di firefox, thunderbird, lightning e libreoffice.

Happy Hacking :)

https://drive.google.com/open?id=1jroR2ADGt0dVAOWa3YmE7qLbRkA78fnf


venerdì 10 aprile 2020

Snoccioliamo un po' di dati


Vi posto il resoconto attuale fatto dalla regione campania sul corona virus di oggi, e voglio rispondere al discorso di Conte di oggi, non con le parole, ma coi dati.









CI sono 3517 positivi in tutta la campania, dati di oggi.
Secondo i miei calcoli, questo numero sale di 1000 unità ogni 10 giorni, quindi vengono scoperti una media di 100 casi al giorno in tutta la campania, stando a quello che ho potuto vedere.

I telegiornali non fanno altro che parlare e parlare di quanto sia pericoloso il corona virus, che bisogna starci lontano e via discorrendo, ma il punto è che tra un mese, quando cioé scadrà il nuovo decreto conte, la situazione non sarà tanto migliore.





Ci saranno sicuramente meno contagiati e quindi meno probabilità di prendere il virus, ma comunque bisognerà continuare con la "distanza sociale" al fine di evitare comunque il virus, perché circolerà comunque, non è che tra un mese se ne sarà andato.

Detto questo, ad oggi in campania con la media di 100 scoperti al giorno la situazione quanto è preoccupante?

Quanto casino si sta facendo? Quanti sono i positivi che sono nascosti e che se ne vanno in giro? Onestamente me ne fotto, i dati ufficiali esistono per un motivo e bisogna attenersi a quelli, non si può fare fanta-informazione.

Appuntata questa cosa, i dati ufficiali dicono che ad oggi in campania il pericolo di essere infettato è comunque basso.

Quindi che senso ha chiudere la grossa distribuzione di alimentari a pasqua e pasquetta? Che senso ha tenere chiusi i negozi? La distanza sociale serve e servirà ancora per molto tempo, finché non sarà commercializzato un vaccino, ma il lockdown in campania oggi, con questi dati, è utile o è un collasso per una economia già disastrata?

Con questi dati, quante sono le piccole aziende campane che sopravvivanno a due mesi di chiusura forzata?

Esistono davvero i salvatori della patria in campania?
Fatevi una vostra opinione, io la mia l'ho detta.
E sicuramente a pasquetta non andrò a fare una grigliata nel parco in mezzo a tante donne nude, tanto la distanza sociale va comunque tenuta per chissà quanto tempo.

Non sarebbe stato meglio, ad esempio, rendere lavorativi solo per quest'anno le due festività di fine mese?


lunedì 6 aprile 2020

Il secondo timelapse migliore di sempre


Quando ho cominciato ad usare uno slicer di terze parti, non quello proprietario della easythreed, la stampante 3d non ha fatto niente altro che asfaltarmi e ripulirmi il piatto.

Col senno di poi, mi è stato fatto vedere che il piatto non era stato livellato bene, e quindi l'ugello di stampa scendeva "troppo" rispetto al piatto e quindi creava dei buchi.

Ho provato a cercare un piatto di stampa nuovo, ma non ho trovato assolutamente niente, se non roba molto più grande di quanto effettivamente mi serve.

Mi sono state date tre soluzioni per riparare il piatto di stampa:





L'utilizzo di del nastro americano e della vinavil
L'utilizzo di dello scotch carta e della colla stick
L'utiltizzo di un pezzo di vetro.





Ho provveduto ad utilizzare la seconda, però mentre mi accingevo a stampare il filo si è rotto e non si riusciva ad estrarlo.
Ho provveduto a smontare l'ugello di stampa, ma il filo non c'era lì dentro ma era nel "serbatoio", e più provavo a farlo uscire meno usciva.

Per far la breve, ho preso anche del fil di ferro ed un giravite piccolino, ma ogni volta che tiravo fuori un pezzettino quello si rompeva ed era peggio di prima.

Alla fine sono riuscito ad estrarlo tutto ed ho provveduto a stampare.
La prima stampa non è venuta bene, il pezzo non aderisce bene al piatto di stampa e quindi si muove durante la stampa, però ho girato il pezzo in modo da avere il lato lungo sulla stampa e sono riuscito a stampare.

Posto il timelapse realizzato con octoprint, la seconda stampa fatta sul raspberry PI 4.








https://www.youtube.com/watch?v=sISPr2OOzAg






So che non frega niente a nessuno, ma è comunque una grandissima vittoria personale.
Ho ordinato i pezzi per la riparazione che mi era stampa consigliata, vediamo cosa succede.


sabato 4 aprile 2020

Debian per raspberry


E' ufficiale: oggi sono entrato anche io nel mondo del raspberry.
Ho preso il PI 4.
Ho letto che era a 64 bit, ed ho provveduto a cercare in rete una distro per il prodotto a 64 bit, ne ho trovate alcune scrause, però ho letto che esisteva debian per arm64, e mi sono detto "ehi, debian è quello che uso io, perché non provarci".

Ho trovato in rete una guida, ma era astrusa e complicata, in seguito ho trovato una serie di script che permettono la creazione di un file di immagine debian arm64 per il raspberry pi4 e 3, mi sono precipitato a prenderli e mi è esploso il computer.

Non scherzo: sono abbastanza semplici da usare se si è del mestiere, ma per chi come me aveva solo leggiucchiato qualcosa, per farla breve, gli script non hanno creato il file da esportare sulla sd, ma hanno corrotto il sistema esistente, per cui l'ho ripristinato e me li sono studiati.

Posso dire, con certezza, che sono stati scritti malino, perché installano il sistema in inglese, fregandosene di chi, come me, non è anglofono.

Ad ogni modo, ho personalizzato l'installazione ed ho ottenuto un sistema BASE (si legge a linea di comando) funzionale su raspberry pi4 (è stato testato), che provvedo a pubblicare. Ripeto: il kernel è per il raspberry PI 4, non per il 3, non usatelo sul 3 che non funziona

Ha l'utente root con password debian ed un utente debian con password debian, il firewall alzato che consente solo ssh, e sopratutto la tastiera e la lingua sono configurati per l'italiano.
Sono abilitati gli aggiornamenti automatici (solo per il sistema debian: il kernel, il bootloader e i driver specifici vanno aggiornati a mano) e i repository backports e non-free.

Consiglio di usare gnome disk utility su debian per scompattare il file su una sd da 4 giga (non più piccola), oppure quello che vi pare (come win32disk imager su windows), una volta finita la scompattazione non estrate la sd, ma ridimensionate la partizione ext4 (ne sono due: una fat32 col bootloader e una ext4 col sistema base) fino a riempire tutto lo spazio rimasto libero (che non lo fa in automatico come il raspbian e derivate) magari con gparted, poi inserite la scheda nel pi4 ed avviatelo per avere un sistema debian arm a 64 bit puro A LINEA DI COMANDO, l'equivalente del cd netinst.

Una volta acceso, dovete digitare come nome utente "root" e password "debian".

La prima cosa da fare è digitare "passwd" per cambiare la password di root, poi se non siete italiani dovete digitare "dpkg-reconfigure locale" per selezionare i file relativi il proprio dialetto e "dpkg-reconfigure keyboard-configuration" per riconfigurare il layout della tastiera, che è impostato su italiano.
Poi dovete digitare "dpkg-reconfigure tzdata" per configurare l'ora locale, che è abilitato l'ntp.
In seguito dovete rigenerare le chiavi per ssh, o disinstallarlo, e cambiare la password all'utente debian, o eliminarlo e crearne uno nuovo.
Se non volete gli aggiornamenti automatici, dovete digitare "apt remove unattended-upgrades" e poi dovete installare il desktop.

Per connettersi al wifi, basta usare nmtui, che è l'interfaccia ncurses (quindi non a linea di comando, ma comunque non grafica) per network manager, che è installato.

A questo punto è sufficiente digitare una sola riga per installare il desktop preferito:







apt install task-xfce-desktop -y # per installare XFCE
apt install task-gnome-desktop -y # per installare GNOME
apt install task-kde-desktop-y # per installare KDE Plasma
apt install task-mate-desktop -y # per installare MATE
apt install task-lxde-desktop -y # per installare LXDE
apt install task-lxqt-desktop -y # per installare LXQT
apt install task-cinnamon-desktop -y # per installare cinnamon
apt install task-budgie-desktop -y # per installare budgie






Basta digitare una sola di queste righe, fino a -y o completa (funziona uguale) per installare il desktop preferito, quando apt ha finito di operare basta premere ctrl+alt+canc per riavviare e se tutto è andato a buon fine (e dovrebbe, perché non si compila nulla) si avvierà il login grafico.
A questo punto potete usare gnome-software-center (installatelo con apt) o synaptic per personalizzare l'installazione, come un qualsiasi sistema debian funzionante su qualsiasi pc.

Sudo non è attivo, è attivo su.

Ricordatevi di cambiare la password dell'account debian e di aprire le porte sul firewall (per esempio con gufw) per ottenere un sistema decentemente sicuro.

Per esempio, se volete installare octoprint, basta digitare





apt install pip3
pip3 install octoprint
ufw allow 5000/tcp #apre la porta 5000 nel firewall, necessaria per il collegamento al server octoprint




Happy hacking.





UPDATE 4/4/2020 ore 22.58
Ho avuto modo di uscire dal seminato, smanettando con la debian: il kernel ed il boot loader sono vecchi, lo script non era aggiornato.
In oltre non viene riconosciuto l'audio su HDMI, col jack da 3.5 pollici non ho provato.

Se trovo il modo di perfezionare il difetto dell'audio lo pubblico, intanto sapete che bisogna aggiornare il kernel che "quello nuovo" va più veloce e, se volete, anche il boot loader.






https://www.youtube.com/watch?v=4T3384tZbbs





https://www.youtube.com/watch?v=1u4sQNxf3Js




UPDATE 05/04/2020 ore 00.25

Dal momento che sono costretto a stare a casa per ovvi motivi, ho aggiornato la net inst, ve la riporto.





UPDATE 13/04/2020 ore 11.34

Ho aggiornato di nuovo la net inst:
ho aggiornato il kernel all'ultima build
ho installato il supporto per l'NTP
ho inserito un config.txt un attimino più completo





UPDATE 04/05/2020 ore 20.38





Nuovo aggiornamento per la netinst, adesso ha network manager per consentire un'interfacciamento più comodo, anche se comunque testuale, al wifi, ntp con fuso orario programmato su roma, kernel pacchettizzato e userland di raspberry integrata.
Con lo userland intendo il contenuto dei pacchetti libraspberrypi-bin e libraspberrypi-dev ufficiali, solo a 64 bit, che contengono, tra le altre cose, il layer mmal per l'interfacciamento all'accelerazione hardware e i tool per gestire l'overlay e la raspicam da linea di comando, non il raspi-config.
Si consiglia caldamente di disabilitare ssh se non serve, oppure di rigenerare le chiavi per la crittazione della connessione.

I package del kernel e dello userland sono stati pubblicati speratamente.





UPDATE 10/05/2020 17.45





Pubblicata l'ultima versione del netinst, causa aggiornamento di debian alla 10.4.

L'unica differenza di rilievo con la versione pubblicata qualche giorno fa è fatta dai seguenti comandi, che si possono lanciare anche separatamente:





dpkg-reconfigure tzdata #per un mio errore il fuso orario non era configurato
apt update
apt upgrade
apt remove brcm2711-kernel-bis #rimuove il kernel installato, se non s'installa il nuovo non si può più avviare il sistema
dpkg -i bcm2711-kernel-bis_4.19.120.20200505-1_arm64.dpkg #https://drive.google.com/drive/folders/11MGNKNxmKxnDgFA_AV5cvMw6UI_yGs71?usp=sharing




Oppure, se volete, potete scaricare la nuova release e rifare la vostra configurazione.

La nuova release obbliga al cambio della password sia dell'utente di root che dell'utente di debian, appena ci si collega, ma solo per la prima volta.


giovedì 2 aprile 2020

JBriscola 0.2


Dopo opportune considerazioni e test, JBriscola sembra apparentemente stabile, forse per la prima volta nella storia.





E' stato aggiunto il supporto a IFTTT tramite webhook, così è possibile far finire su twitter il risultato della partita, mandare una notifica sul cellulare o sullo smartwatch android oppure accendere una lampadina.





Procedo quindi alla pubblicazione di questa nuova release.

https://github.com/numerunix/JBriscola/releases/tag/0.2prerease2


Il backup di windows si è evoluto

  Adesso è legato a microsoft 365, che permette di avere 1 tb di spazio su onedrive. La lista delle app salvate è quella scaricata dal windo...