web-dev-qa-db-ja.com

CentOS 7でNTFSドライブをフォーマットして、Windowsでも使用できるようにするにはどうすればよいですか?

現場でデータを収集する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を使用して、次のアクションを実行することにより、新しいパーティションテーブルを書き込みます。

  • o:新しい空のDOSパーティションテーブルを作成します
  • n:新しいパーティションを追加します
    • p:プライマリパーティションを作成する
    • 1:パーティション1
    • デフォルトの最初のセクター(480GBドライブでは65535として表示)
    • デフォルトの最後のセクター(480GBドライブでは937703087として表示)
  • w:テーブルをディスクに書き込む

次に...

mkfs.ntfs -f -L <driveLabel> /dev/<driveLetter>1

これにより、ドライブパーティション1がNTFSにフォーマットされます。

mount -a

これにより、ストレージドライブが再マウントされます。

Windowsは、このようにフォーマットされたドライブを認識できません。ただし、WindowsでAOMEIを使用すると、使用できなくてもドライブが表示されます。それが私に与える唯一の手がかりは、それがドライブラベルに*:を追加することです。したがって、<driveLabel>ではなく*:<driveLabel>と表示されます。

スクリプトに欠陥があるか、何か不足している場合、誰かに教えてもらえますか?

2
Blackwood

根本的な問題は、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オプションは次のとおりです。

  • o:新しい空のGUIDパーティションテーブル(GPT)を作成します
  • y:確認
  • n:新しいパーティションテーブルを追加します
  • 1:パーティション番号
  • デフォルトの最初のセクター(2048として表示)
  • デフォルトの最後のセクター
  • 0700:GUID Microsoft基本データの場合
  • w:テーブルをディスクに書き込んで終了します
  • y:確認

複数のテストの後、それはうまくいくようです。

1
Blackwood