Linuxでは、損傷が想定されるレトロコンピューターのハードディスクやフロッピーディスクを取り扱うのに便利な、ddrescue[1][2]とFdutils[3]コマンドが提供されています。今回は、ddrescue[1][2]とFdutils[3]を活用する上で必須となるパラメータや、補助スクリプトとなるFdutils-aux-jp[12]を紹介します。 ddrescue UNIXの標準的なディスク複製のコマンドとしてはdd[5]があります。ただし、ddは正常なデバイスには有効ですが、不良セクタによる読み取りエラーが発生が想定されるデバイスへの想定が不十分[6]であり、損傷が想定されるレトロコンピューターのハードディスクやフロッピーディスクのバックアップ、リストアには不適切です。 GNUのddrescue[1][2]は、デバイスの読み取りエラーを前提としたコマンドであり、不良セクタに対しての再読み込みやディスク損傷に対してアルゴリズムが最適化されています[1][2][6]。基本的にddの上位互換として利用できるため、物理やSCSIエミュレーターのハードディスクのバックアップやリストアにはddrescueを定期的に利用しています。 ddrescueには豊富なコマンドラインオプション[1][2]がありますが、ここではレトロコンピューターのデバイスを対象にする上で、有効なオプションについて列記します。 -r (–retry-passes=n) rオプションは不良セクタが正常に読み取れるまでの再試行回数で、-1を指定すると成功するまで再試行を続けます。標準(無指定)での試行回数は0ですので、目的に応じて、適切に設定したいパラメーターです。 フロッピーディスクが対象の場合には、ディスクドライブ側を損傷を与えるような可能性がない(例:カビがない)場合、再試行により読み取れる可能性もあります。極端に言えば、再試行回数を無制限(-1)にして一晩寝て待ってみても良いでしょう。 ただし、ハードディスクが対象、特に異音がしている場合には、物理的な故障の可能性も高いため、指定する再試行回数は考慮すべきです。ある程度妥当と思われる回数を設定して、ddrescue完了後に各プラットフォームのディスク修復プログラムを実行します。 -d (–idirect) dオプションは、直接デバイスにアクセスすることにより、復元率の向上を目的とします。ただし、ddrescueはデバイスのセクタサイズを認識できないため、後述するbオプションの指定が合わせて必要です。 -b (–sector-size=byte) 対象デバイスの管理データの最小単位であるセクタサイズを指定します。標準(無指定)では512(バイト)となりますので、フロッピーディスクである場合には、対象のセクタサイズ(256, 512, 1024)を指定します。 Fdutils レトロコンピューターにおいても、SCSIなどの標準的なハードディスクデバイスは、ddrescue単体で運用できます。しかしながら、フロッピーディスクにおいては、IBM-PC標準以外は、基本的にメディア情報の指定が必要です。 Fdutils[3]はLinuxでのフロッピーディスク関連ツールを集めたパッケージであり、その中にフロッピーディスクコントラーを制御するsetfdprmコマンドが含まれています。ddrescueをフロッピーディスクで利用するには、このsetfdprmでのパラメータ設定の併用が必要です。 setfdprm 海外の主要機種においては、Fdutilsと一緒に配布されている「/etc/mediaprm」で定義済のため、setfdprmで簡易的な指定が可能です。しかし、残念ながら、日本のレトロコンピューターについては、一部の機種(FM-8/16など)しか含まれていません。 従って、日本のレトロコンピューターにおいては、より詳細なパラメーターを直に指定する必要があります。以下に、日本の主要なレトロコンピューターでの標準的なフォーマットを取り扱うために必要な、setfdprmのパラメーター一覧を示します。 Computer Structure Media density head cyl…
Linuxにおけるメディア保存・復旧ツールの使い方 (ddrescueとfdutils)
