現場でデータを収集するLIDARシステムがあります。生データを処理するコンピューターはWindowsコンピューターなので、NTFSを使用します。ただし、LIDARシステム自体はCentOS 7を実行します。通常、これは問題ありません。コレクションドライブをWindows上のNTFSにフォーマットするか、GParted(CentOSまたはUbuntu)を使用します。 CentOSはそれらに問題なくマウントおよび書き込みを行い、Windowsはそれらを読み取ることができます。
ただし、お客様は、CentOSを使用してLIDARシステムでコレクションドライブをフォーマットできることを望んでいます。これは簡単な仕事だと思い、スクリプトを書きました。スクリプトはドライブをフォーマットするように機能し、CentOSはドライブにデータを書き込みます。ただし、スクリプトを使用した後、Windowsはドライブを認識しなくなります。
GPartedがこれを機能させることができるなら、私がそれらをフォーマットしている方法に何か問題があるに違いありません。私の手順は次のとおりです。
umount <mountPoint>
これにより、ドライブがマウントされなくなります。
(echo o; echo n; echo p; echo 1; echo ; echo ; echo w) | fdisk /dev/<driveLetter>
これは、fdiskを使用して、次のアクションを実行することにより、新しいパーティションテーブルを書き込みます。
次に...
mkfs.ntfs -f -L <driveLabel> /dev/<driveLetter>1
これにより、ドライブパーティション1がNTFSにフォーマットされます。
mount -a
これにより、ストレージドライブが再マウントされます。
Windowsは、このようにフォーマットされたドライブを認識できません。ただし、WindowsでAOMEIを使用すると、使用できなくてもドライブが表示されます。それが私に与える唯一の手がかりは、それがドライブラベルに*:
を追加することです。したがって、<driveLabel>
ではなく*:<driveLabel>
と表示されます。
スクリプトに欠陥があるか、何か不足している場合、誰かに教えてもらえますか?
根本的な問題は、Microsoft(少なくともWindows 7では)が探しているパーティションタイプにあるようです。これはfdiskを使用してもまだ可能かもしれませんが、これ以上テストする時間はありませんでした。
最終的にfdiskの代わりにgdiskを使用し、それを機能させることができました。
他の誰かが興味を持っている場合のために、ここに私の修正されたスクリプトがあります:
umount <mountPoint>
(echo o; echo y; echo n; echo 1; echo ; echo ; echo 0700; echo w; echo y) | gdisk /dev/<driveLetter>
partprobe
umount <mountPoint>
mkfs.ntfs -f -L <driveLabel> /dev/<driveLetter>1
mount -a
使用されるgdiskオプションは次のとおりです。
複数のテストの後、それはうまくいくようです。