mkufs2 — FreeBSDでUFSイメージを作るスクリプト

Tool

概要

mkufs2は、FreeBSD環境でUFS(主にUFS2)イメージを作成するためのシンプルなシェルスクリプト集です。指定した入力ディレクトリの内容を新たに作成したUFSイメージ上へコピーし、最終的にPS5/PS4で読み込めるような形式のファイルシステムイメージを生成することを目的としています。必要なのはFreeBSDとスクリプト実行権限のみで、mdconfig/newfs/mountなどの標準ユーティリティを使って仮想ディスクの作成・フォーマット・展開・クリーンアップまでを自動化します。小規模で依存が少なく、手早くUFSイメージを作成したい場面に適しています。

GitHub

リポジトリの統計情報

  • スター数: 5
  • フォーク数: 0
  • ウォッチャー数: 5
  • コミット数: 3
  • ファイル数: 2
  • メインの言語: Shell

主な特徴

  • FreeBSD上で動作する単一シェルスクリプトでUFSイメージを自動生成
  • 指定ディレクトリの内容をイメージにコピーしてパーミッション等を維持
  • 出力ファイル名は任意指定可能、テンポラリのmdデバイスを用いた安全な作業フロー
  • PS5/PS4でマウント可能なフォーマットを目標にした実践的手順

技術的なポイント

mkufs2が実現しているのは、FreeBSD標準のブロックデバイスエミュレーションとファイルシステム作成ツール群を組み合わせたワークフローです。具体的にはまず出力用ファイル(イメージ)を作り、mdconfigでそのファイルをvnode(ファイル)型のメモリディスクとして割り当てます。割り当てられた/dev/mdXデバイスに対してnewfsを実行してUFS(通常はUFS2)でフォーマットし、必要に応じてfstabやマウントオプションを指定してマウントします。入力ディレクトリの内容はtar/pax/rsync等でコピーし、所有権・パーミッション・拡張属性を保つようにします。作業後はsyncやfsckで整合性を確かめ、アンマウント→mdconfig -dでデタッチしてファイルイメージを完成させます。

この流れの利点は、ホストOSのツールのみでディスクイメージを構築できる点と、仮想デバイスを使うことで実デバイスに影響を与えず安全に操作できる点です。一方で注意点としては、root(または適切な権限)が必要なこと、イメージ内のブロックサイズやフラグ(soft updatesやラベルの有無)によって互換性が変わる可能性があることです。PlayStation側でのマウント互換性はUFSのバージョンや作成オプションに依存するため、最適なnewfsオプションやファイルシステム属性は実機での検証が必要です。スクリプトは最小限の実装に留まっているため、エラー処理やサイズ自動調整、空き領域の最適化(スパースファイル化やtrim相当の処理)などはユーザーが拡張して使うことが想定されます。

プロジェクトの構成

主要なファイルとディレクトリ:

  • README.md: file
  • mkufs2.sh: file

まとめ

FreeBSD上でUFSイメージを素早く作るための実用的で軽量なツールです。

リポジトリ情報:

READMEの抜粋:

make ufs image

This is how you can set up the environment to make a ufs image mountable by PS5/PS4 . There may be other methods but this is how ive done it.

Prerequisites

  • FreeBSD

instructions (in bash in freebsd terminal)

  • git clone https://github.com/earthonion/mkufs2/
  • chmod +x mkufs2.sh
  • ./mkufs2.sh <input_dir> [output_file]