La maggior parte delle persone installa una qualche forma di Linux quando configura un computer Raspberry Pi. Fino a poco tempo, gli strumenti di installazione per la creazione di una scheda SD avviabile erano disponibili solo per desktop Windows e MacOS. Se stavi eseguendo Linux sul tuo desktop, hai una pagina di istruzioni per farlo manualmente dalla riga di comando.
Che funzioni. Ma se sperimenti più schede Raspberry Pi, nel tempo diventa noioso. Come ingegnere e programmatore, ho iniziato a pensare di automatizzarlo per renderlo più semplice e, nel solito modo in cui iniziano i progetti open source, sono venuto fuori con PiFlash.
Ho scritto PiFlash solo per me stesso nel 2016. A febbraio 2017, si era evoluto abbastanza che l'ho presentato in una presentazione a SVPerl (Silicon Valley Perl) sull'uso di Perl su Raspberry Pi, quindi sono stato invitato a scrivere due articoli per Opensource. com:Guida introduttiva a Perl su Raspberry Pi e Come proteggere il tuo Raspberry Pi.
Caratteristiche PiFlash
PiFlash ha funzionalità che attirano principianti ed esperti.
Come la maggior parte degli altri strumenti software open source, non è necessario vedere la lingua in cui è scritto, se non ti piace. Ma il codice sorgente è disponibile per utenti esperti e partecipanti.
Per gli utenti esperti, PiFlash semplifica il processo di scrittura di una scheda SD. Quando scarichi un file "immagine" del sistema operativo avviabile, di solito si trova in un archivio ZIP o è compresso. Tutte le distribuzioni li impacchettano in modo leggermente diverso. Con PiFlash, non è necessario decomprimere o decomprimere l'immagine. Basta specificare il file scaricato come input e PiFlash farà la parte noiosa di estrarlo.
Per i principianti, c'è un'importante funzione di sicurezza:PiFlash scriverà solo su una scheda SD e rifiutarsi di scrivere su qualsiasi altro tipo di dispositivo. Dal momento che devi usare i permessi di root per scrivere la scheda, il sistema farà tutto ciò che gli dici. Pertanto, è possibile cancellare accidentalmente il dispositivo sbagliato, magari un disco rigido che si desidera conservare, quando si tenta di eseguire il flashing manuale di una scheda SD per un nuovo Raspberry Pi.
È qui che PiFlash ti protegge dai pericoli. Internamente, trova gli attributi del dispositivo con lsblk comando da util-linux pacchetto, che fa parte di tutte le distribuzioni Linux. È in grado di riconoscere le schede SD utilizzando vari driver. Si rifiuterà di scrivere su un dispositivo a blocchi se non è una scheda SD.
Fortunatamente, lo strumento GUI Etcher che Raspberry Pi Foundation utilizza nelle sue istruzioni per utenti Windows e MacOS è stato esteso a Linux, quindi ora c'è un'opzione GUI su Linux per coloro che la preferiscono. Ma se vuoi automatizzare il processo, o se vuoi livelli di personalizzazione per utenti esperti, solo uno strumento da riga di comando farà il lavoro.
L'ultima versione di PiFlash aggiunge moduli plug-in che possono modificare il filesystem della scheda SD dopo aver installato l'immagine del sistema operativo, così puoi iniziare a esplorare nuove opzioni per l'automazione.
Installazione di PiFlash
PiFlash è disponibile da CPAN, il Comprehensive Perl Archive Network, ma prima di procedere, assicurati di aver installato tutti i pacchetti di dipendenze. Per installare le dipendenze:
Su sistemi Linux basati su RPM (Red Hat Enterprise, Fedora, CentOS, ecc.):
sudo dnf install coreutils util-linux perl file-libs perl-File-LibMagic perl-IO perl-Exception-Class perl-Try-Tiny perl-Module-Pluggable perl-File-Path perl-YAML-LibYAML gzip unzip xz e2fsprogs dosfstools
Su sistemi Linux basati su Debian (Debian, Ubuntu, Raspbian, ecc.):
sudo apt-get install coreutils util-linux klibc-utils perl-base libmagic1 libfile-libmagic-perl libio-all-perl libexception-class-perl libtry-tiny-perl libmodule-pluggable-perl libyaml-libyaml-perl gzip xz-utils e2fsprogs dosfstools
Per le distribuzioni basate sul codice sorgente o altri sistemi di packaging, consulta la documentazione CPAN per l'elenco delle dipendenze.
Quindi, installa PiFlash utilizzando lo strumento CPAN:
cpan PiFlash
Ho la build basata su Dist::Zilla impostata per creare pacchetti DEB e RPM, ma non è ancora in nessuno dei principali archivi di pacchetti. Questo è possibile in futuro.
PiFlash in esecuzione
Se esegui semplicemente il piflash comando senza argomenti, stamperà le informazioni sull'utilizzo.
usage: piflash [--verbose] [--resize] [--config conf-file] input-file output-device
piflash [--verbose] [--config conf-file] --SDsearch
piflash --version
Scansiona il sistema alla ricerca di schede SD per ottenere il nome esatto del dispositivo, di cui avrai bisogno per il parametro del dispositivo di output Pi-Flash di seguito.
piflash --sdsearch
Se non vengono trovate schede SD, dice che non riesce a trovare nulla.
no SD cards found on system
Altro su Raspberry Pi
- Cos'è Raspberry Pi?
- eBook:Guida al Raspberry Pi
- Iniziare con il cheat sheet di Raspberry Pi
- eBook:eseguire Kubernetes sul tuo Raspberry Pi
- Whitepaper:applicazioni intelligenti ad alta intensità di dati in un progetto di cloud ibrido
- Capire l'edge computing
- Le nostre ultime novità su Raspberry Pi
A proposito, se hai uno scrittore di schede SD di cui PiFlash non è a conoscenza, faccelo sapere compilando un rapporto su GitHub. Per segnalazioni di problemi e risoluzione dei problemi, raccogli le informazioni interne del programma utilizzando il --verbose opzione in modo da poter vedere quale driver ha il tuo sistema che PiFlash non ha riconosciuto.
Il nome esatto del dispositivo può variare in base ai driver e ai nomi utilizzati da altri dispositivi sul sistema. Se hai un lettore/scrittore SD basato su USB, potrebbe dire qualcosa del genere:
SD cards found: /dev/sdb
Oppure, se hai uno slot per schede SD integrato, potrebbe utilizzare un driver diverso e avere un nome che indica che si tratta di una scheda SD che utilizza il driver MMC (MultiMediaCard):
SD cards found: /dev/mmcblk0
Quindi, scarica un'immagine di sistema da installare. La Raspberry Pi Foundation ha un vecchio elenco di possibilità che non è più aggiornato. Poiché Raspbian è la distribuzione Linux ufficiale per Raspberry Pi, il supporto del driver va prima lì. Ma altri funzionano:Ubuntu è nell'elenco, ma Fedora non lo è perché il supporto ARM e Raspberry Pi è arrivato dopo che l'elenco è stato creato, tuttavia puoi scaricarlo.
Il comando per eseguire il flashing della scheda SD è piflash
piflash 2018-11-13-raspbian-stretch-full.zip /dev/mmcblk0
piflash Fedora-LXDE-armhfp-29-1.2-sda.raw.xz /dev/sdb
PiFlash ora ha un --resize opzione, che ridimensionerà la partizione di root sulla scheda SD per riempire il resto del dispositivo. Funziona solo se la radice è un filesystem Linux ext2/3/4. La maggior parte delle distribuzioni lo rende disponibile come opzione che puoi eseguire manualmente dopo l'installazione, ma questo lo automatizza in un solo passaggio.
Plugin, automazione e sviluppo futuro
PiFlash 0.3.1 è aggiornato al momento della stesura di questo documento.
PiFlash 0.1.0 ha introdotto moduli plug-in, il che significa moduli Perl denominati come PiFlash::Plugin::Something sarà a disposizione del programma. Come precauzione di sicurezza, perché PiFlash può eseguire comandi come sudo-root , i plugin non vengono caricati automaticamente. Invece, devono essere abilitati tramite --plugin sulla riga di comando o in un file di configurazione. Il nome del plugin è il nome del modulo Perl senza il prefisso PiFlash::Plugin:: . Per più di un plug-in, è un elenco di nomi delimitato da virgole. I plug-in abilitati possono utilizzare un hook che viene chiamato quando i filesystem di avvio e root vengono montati dopo aver scritto la scheda SD. Ulteriori informazioni sui plug-in sono disponibili in PiFlash::Plugin documentazione del modulo.
Ecco alcune idee sulla mia lista di cose da fare per i prossimi moduli plug-in...
- Cambia la password dell'utente e gli account root sulla scheda SD prima che si avvii
- Imposta i parametri di rete e il nome host
- Modifica i parametri di configurazione del sistema che normalmente richiedono l'esecuzione manuale di raspi-config o modificando config.txt
- Configura un ambiente Linux personalizzato attorno ai kernel ARM che crei
Le mie idee sono, ovviamente, influenzate da ciò che voglio fare. Potresti voler andare in altre direzioni, quindi considera di contribuire con patch e plugin.
Il repository del codice sorgente per PiFlash è su GitHub. Si prega di inviare segnalazioni di problemi e contributi di codice/documentazione anche lì.