組み込みデバイスでのドライバのマウントとバイト交換

組み込みデバイスでのドライバのマウントとバイト交換

私はストレージのためにIDEハードドライブを使用する約20年前のデバイスを持っています。使い続けたいのですが、USB 1ポートが遅すぎます。

ハードドライブを取り外し、より高速なUSB 2.0ケーブルに接続できますが、FAT32データにアクセスするのはそれほど簡単ではありません。

接続された各ドライブの最初の数メガバイトのdd画像を撮影した結果、唯一の違いは単純なバイトスワップだけであることがわかりました。 ddでconv = swabオプションを使用しましたが、同じ画像が得られました。 16進表現:

ABCD = BADC

その後、ループオプションとオフセットオプションを使用して画像をマウントできます。ただし、これは変更された画像であり、デバイスに直接適用されません。

変更するたびに20GBのイメージ全体を抽出/書き込みする必要がないように、組み込みのバイトスワッピングを使用してデバイスを直接マウントまたは処理する方法はありますか?

答え1

いくつかの試行錯誤を経て、@MarcusMüllerが正しい方向を指摘した後、次のコマンドはドライブを読み書き構成で正常にマウントしました。パフォーマンスはやや不足しているようですが、それでも元のUSB 1構成よりはるかに優れています。

nbdkit eval get_size='blockdev --getsize64 /dev/sdb' \
        pread='dd conv=swab skip=$4 count=$3 iflag=count_bytes,skip_bytes if=/dev/sdb' \
        pwrite='dd conv=swab seek=$4 oflag=seek_bytes of=/dev/sdb'

その後、通常のFAT32ドライブのようにnbd-client localhost /dev/nbd0パーティションを実行してマウントしました。/dev/nbd0p1

関連情報