La scena homebrew della console PlayStation 4 e PlayStation 5 continua a sfornare strumenti sempre più interessanti, soprattutto per chi ama sperimentare e gestire i propri contenuti direttamente su console.

Tra i progetti che meritano particolare attenzione troviamo MkPFS, un tool open-source sviluppato da PSBrew che punta a semplificare la creazione, la gestione e la compressione delle immagini PFS utilizzate dall’ecosistema PlayStation.

La cosa più interessante è che non si tratta del classico strumento pensato esclusivamente per gli utenti più esperti: oltre alla riga di comando, MkPFS mette a disposizione anche una semplice interfaccia grafica.
MkPFS è un tool da riga di comando, disponibile anche come libreria Python, progettato per creare, gestire, verificare ed estrarre immagini del file system PlayStation (PFS).
Detto in modo più semplice, permette di prendere una cartella contenente i file di un gioco oppure immagini in formato .exfat e .ffpkg e trasformarle in immagini PFS/PFSC compresse.
Il vantaggio è immediato: ridurre sensibilmente lo spazio necessario per archiviare i propri contenuti, soprattutto quando si ha a che fare con giochi moderni che possono occupare decine di gigabyte.
Uno dei problemi più comuni per chi gestisce backup e contenuti homebrew su PlayStation 4 e PlayStation 5 è proprio lo spazio disponibile.
Hard disk e unità USB possono riempirsi rapidamente, soprattutto quando si accumulano giochi di grandi dimensioni. MkPFS cerca di risolvere proprio questo problema sfruttando la compressione PFSC.
Secondo i test riportati dal progetto, il risparmio può arrivare mediamente a circa 40-60% dello spazio occupato, mantenendo la compatibilità con il kernel PlayStation.
Le immagini generate possono inoltre essere utilizzate con strumenti molto conosciuti nella scena, tra cui ShadowMountPlus e MicroMount.
Tutte le principali funzioni
MkPFS mette a disposizione un insieme piuttosto completo di strumenti per lavorare con le immagini PFS:
- Creazione di immagini
.ffpfsce.ffpfsa partire da cartelle o file. - Compressione dei file attraverso diversi backend, tra cui zlib, zlib-ng e ISAL.
- Verifica dell’integrità delle immagini.
- Estrazione dei contenuti.
- Visualizzazione ad albero dei file presenti nell’immagine.
- Supporto per immagini firmate e criptate.
- Modalità batch per convertire più giochi contemporaneamente.
- Interfaccia grafica semplice e multilingua.
Insomma, non manca praticamente nulla per chi vuole avere un maggiore controllo sulla gestione delle immagini PFS.
Come installare MkPFS
L’installazione è piuttosto semplice e può essere effettuata direttamente tramite Python.
Per installare MkPFS insieme ai componenti necessari per la GUI è sufficiente utilizzare il comando python -m pip install -U "mkpfs[gui]"
Una volta completata l’installazione, è possibile creare un’immagine compressa partendo da una cartella contenente i file del gioco: python -m mkpfs pack folder './MioGioco' './MioGioco.ffpfsc'
Il progetto permette inoltre di convertire direttamente un file .exfat in un’immagine .ffpfsc: python -m mkpfs pack file './MioGioco.exfat' './MioGioco.ffpfsc'
Chi preferisce evitare completamente la riga di comando può invece avviare l’interfaccia grafica con il comando python -m mkpfs.gui
Compressione e prestazioni
Uno degli aspetti più interessanti di MkPFS riguarda naturalmente il rapporto tra compressione e prestazioni.
Nei test riportati dal progetto, un gioco delle dimensioni di circa 6,5 GB può essere ridotto a circa 3,4 GB, con un risparmio vicino al 47%.
Si tratta di un risultato particolarmente interessante quando si devono conservare numerosi giochi su un’unità con spazio limitato.
Il formato PFSC viene inoltre gestito nativamente dal kernel PlayStation, permettendo di utilizzare i contenuti compressi senza dover necessariamente ripristinare ogni volta i file nella loro dimensione originale.
Limitazioni e problemi noti
exfat->ffpfscè il formato più stabile per i backup compressi dei giochi.pack folderproduce questo layout per impostazione predefinita: racchiude la cartella in un’immagine exFAT e la comprime in un unico passaggio nel file.ffpfsc, senza creare alcun.exfattemporaneo sul disco.pack folder --rawinserisce la cartella direttamente in un’immagine PFS senza il contenitore exFAT. Quando la compressione dei file è abilitata, l’immagine viene creata e la verifica viene completata correttamente, ma la console legge i file in modo errato a causa di limitazioni tecniche; pertanto, questa opzione avanzata non offre alcun vantaggio pratico per i backup dei giochi. È preferibile utilizzare il layout predefinito con contenitore.- Con il valore predefinito
--block-size 65536, i file molto piccoli possono causare un significativo spreco dovuto all’allineamento dei blocchi, facendo sì che in alcuni casi particolari l’immagine risultante sia più grande dell’origine.- Per le cartelle contenenti molti file di piccole dimensioni, è preferibile utilizzare la strategia a due passaggi (
raw-folder -> .dat -> .ffpfsc) oppure provare una dimensione dei blocchi inferiore, come--block-size 16384o--block-size 32768.
- Per le cartelle contenenti molti file di piccole dimensioni, è preferibile utilizzare la strategia a due passaggi (
- La scansione antivirus può ridurre la velocità di conversione, soprattutto durante la fase di scrittura o quando vengono elaborati molti file separati. Se ti fidi di questo software nel tuo ambiente e hai bisogno di una maggiore velocità di elaborazione, disabilitare temporaneamente la scansione in tempo reale può essere d’aiuto. Se non sei sicuro, mantieni attivo l’antivirus e considera che le conversioni potrebbero essere più lente.
Changelog
Breaking
- Aggiunto prototipo dell’interfaccia grafica (#73)
@RenanGBarreto,@Phoenixx1202
Nuovo
- Aggiunto output dettagliato per ogni elemento e protezioni alla conversione batch (#118)
@RenanGBarreto - Cluster exFAT predefinito impostato a 64 KiB (#109)
@RenanGBarreto - Aggiunto il supporto alla conversione batch per convertire più giochi con un singolo comando (#100)
@RenanGBarreto,@dependabot[bot] - Miglioramento delle prestazioni: aggiunto modulo adattatore per il backend di compressione con supporto ISAL (#93)
@RenanGBarreto,@Copilot - Aggiunto pannello per il caricamento exFAT e sincronizzazione dell’avanzamento nella GUI (#89)
@RenanGBarreto - Evitata la rigenerazione dell’indice AMPR quando esiste già un indice valido (#88)
@RenanGBarreto - Livello di compressione predefinito impostato a 7 (#87)
@RenanGBarreto
Correzioni di bug
- Utilizzato il font monospaziato nativo su macOS e Linux (#119)
@RenanGBarreto - Risolto il crash del pannello exFAT e rimosse le opzioni dell’interfaccia non più utilizzate (#111)
@RenanGBarreto - Corretto il build della GUI su macOS per includere customtkinter e impostato il titolo dell’installer (#80)
@RenanGBarreto
Manutenzione
- Risolto il passaggio indesiderato dalla modalità silenziosa, l’accesso all’API privata CTkTextbox, il feedback hover mancante e la generazione di ICO con più dimensioni (#102) @copilot-swe-agent[bot], @Copilot,
@RenanGBarreto - Risolto il crash nella generazione delle icone con le versioni più recenti di Pillow (#98)
@RenanGBarreto - Gestiti esclusivamente gli errori di importazione di Pillow nella generazione delle icone (#91)
@copilot-swe-agent[bot],@Copilot - Completata la mappa degli aggiornamenti dei contributori e normalizzato il percorso
./tmp/(#90)@copilot-swe-agent[bot],@Copilot - Separato il monolite gui.py in un pacchetto dedicato (#84)
@RenanGBarreto - Resi più facili da individuare e seguire i documenti/le competenze, riducendo le duplicazioni (#72)
@RenanGBarreto - Semplificate le regole, aggiunta la mappa del worktree ed ampliato l’indice dei progetti correlati (#71)
@RenanGBarreto
Aggiornamenti delle dipendenze
12 modifiche
- chore(deps-dev): aggiornato ruff dalla versione 0.16.1 alla 0.16.4 (#116)
@dependabot[bot] - chore(deps): aggiornato actions/setup-python dalla versione 6 alla 7 (#105)
@dependabot[bot],@RenanGBarreto - chore(deps-dev): aggiornato ruff dalla versione 0.16.0 alla 0.16.1 (#108)
@dependabot[bot] - chore(deps): aggiornato actions/stale dalla versione 10 alla 11 (#107)
@dependabot[bot],@RenanGBarreto - chore(deps-dev): aggiornato ruff dalla versione 0.15.21 alla 0.16.0 (#106)
@dependabot[bot] - chore(deps-dev): aggiornato ruff dalla versione 0.15.20 alla 0.15.21 (#96)
@dependabot[bot] - chore(deps-dev): aggiornata la dipendenza hatchling da <1.30 a <1.32 (#97)
@dependabot[bot] - chore(deps): aggiornato actions/setup-python dalla versione 4 alla 6 (#82)
@dependabot[bot] - chore(deps): aggiornato actions/checkout dalla versione 4 alla 7 (#74)
@dependabot[bot] - chore(deps): aggiornato actions/upload-artifact dalla versione 6 alla 7 (#76)
@dependabot[bot] - chore(deps): aggiornato actions/download-artifact dalla versione 6 alla 8 (#75)
@dependabot[bot] - chore(deps): aggiornato pozil/auto-assign-issue dalla versione 1 alla 4 (#77)
@dependabot[bot]
Altre modifiche
- Gestita l’importazione di StrEnum per diverse versioni di Python (#115)
@cocoon - GUI: compilazione automatica dei campi del modulo di output (#110)
@RenanGBarreto - Individuazione più rapida dei file per alberi di origine di grandi dimensioni (#86)
@RenanGBarreto - Consolidate le regole in CLAUDE.md e corretti i percorsi non funzionanti degli agenti (#85)
@RenanGBarreto
Download: Source code MkPFS v1.0.0
Alcune parti di questo articolo sono state generate con l’aiuto dell’intelligenza artificiale. Questo articolo contiene link affiliati a Amazon. Se acquisti tramite questi link, potrei guadagnare una commissione senza costi aggiuntivi per te.🔥 Prodotti in promozione e articoli più venduti: PS4
Vedi altri prodotti PS4
Ultimo aggiornamento 2026-09-04 / Link di affiliazione / Immagini da Amazon Product Advertising API





