私はいくつかの段階でLinux環境で低レベルのディスク操作を実行するアプリケーションを書いています。アプリは実際には2つの部分で構成され、1つはWindows上で実行され、ユーザーとやりとりし、もう1つはLiveCDから実行されるLinux部分です。ユーザーはWindowsドライブ文字を選択し、Linux部分は対応するパーティションでアクションを実行します。問題は、Windowsドライブ文字(C:など)とLinuxデ
Windows のパーティション情報(ドライブ文字、ブロック数、ドライブシリアル番号など)をあらかじめ定義された場所(つまり、システムパーティションのルート)に保存します。
/proc/partitions からパーティションのリストを読んでください。
ntfs または vfat ファイルシステムでそれぞれをマウントしてみてください。
Windowsアプリケーションによって書かれた必要な情報を見つけると、実際に一致します。 / proc/partitionsにある各パーティションに対して、ドライブシリアル番号(HDIO_GET_IDENTITYシステムコール経由)、ブロック数(/ proc/partitionsから)、ドライブオフセット数(/ sys/blocks/drive_path/partition_name/sta
このスキームにはいくつかの問題があります:
これは醜いです。 Windowsでデータを書き込んでLinuxで読むと、テストが悪夢になります。
Linuxデバイスのメジャー番号は、IDEまたはSCSIデバイスとのみ比較されます。これはおそらく失敗します。つまり、USBまたはFireWireディスクです。これらのタイプのディスクを追加することは可能ですが、アプリを既知のデバイスのサブセットのみに制限することはむしろ悪い考えです。
HDIO_GET_IDENTITYはIDEとSATAドライブでのみ動作します。
/sys/block は IDE や SATA ドライブ以外では動作しないかもしれません。
このスキーマを改善する方法に関するアイデアはありますか?おそらく、Windowsアプリケーションにすべてのデータを書き込まずにWindows名を決定する別の方法がありますか?
P.S.アプリの言語はC ++です。私はこれを変更することはできません。