PythonAlexaにはまりました。近いうちに記事を書きますね。プログラムを作りました。テーブル内に入っている他の情報もすべて出力します。ディスクのパーティションテーブルが正常に設定されているか、調査しました。第2GPTヘッダを正しい位置、つまり、ディスクの末尾に配置しているか、という点です(関連記事は、ここ)。覗くと、次のエラーメッセージが出力されます。ソースコードを読めばいいのかもしれませんが、この原因をよく理解していませんでした。パーティションサイズの認識に何らかの異常があるのですが、このエラー自体は深刻なものではなく、自動修復しても構わない程度のもののようです*1。最初に疑ったのは、Windows。Windowsでは認識したことになっているディスクサイズが実際のディスクサイズと違うのではないか?その影響が、先のエラーメッセージとなって現れたと推測しました。このことを確認する一つの方法が、第2GPTヘッダの位置が適切な場所、つまり、ディスク末尾に置かれているか、ということです。GPTテーブルを読み取るプログラムは、このような背景から生まれました。使用した言語は、Pythonです。初心者なので、変なところがあると思います。ご指導・ご鞭撻のほどよろしくお願い致します。仕様GPTヘッダの情報を全てテキストで出力します。保存したGPTデータです。取り出せない主なデータは、第1と第2のGPTヘッダの位置情報とCRCの値、MBRぐらいです。それ以外の情報は、gdiskでもほぼすべてテキスト出力できます。GPTヘッダの位置情報を含めて、すべてのデータを出力します。目的や入出力が異なりますが、GPTテーブルを読み出すCのプログラムもあります。今回の目的には合致しませんでしたが、参考にさせて頂きました。使い方は、次の通りです。image.注にも書きましたが、gdiskでは、自動的にGPTヘッダを修復してしまうことがあるので、変更を加えないそのままのGPTヘッダを読み取りたい場合には、ddダンプしたファイルを使った方がよいです。pyhonの3.6.6で行っています。gdiskで保存されるGPTテーブルGPTテーブルのほとんどの情報は、gdiskのCUIから読み出すことができます。筆者が知りたかったGPTヘッダの位置情報については、CUIからは調べることはできません。*2、このバイナリファイルを解析することで、知りたい情報を得ることができます。パーティションエントリー]の計34セクタが配置され、第2GPTヘッダやパーティションエントリーのコピーはディスク末尾に配置されますので、プログラミングの際には、少々、注意を払う必要があります。gdiskが保存するGPTデータは、メモリ上に展開されたパーティション情報です。ついて以下の説明があります。実施された場合にも、自動修復された状態のGPTテーブルがファイルに出力されそうです。WindowsのGPTテーブルに異常なし次の二つのディスクについて、GPTテーブルを調査しました。Windowsシステムが入った1TBのHDDWindowsシステムが入った500GBのSSDプログラムの出力例を付録Bに示します。HDDの場合でも、SSDの場合でも、ddダンプしたファイルから読み取ったGPTテーブルと、gdiskのGPTデータから読み取ったGPTテーブルとの間では、MBRの極一部を除き同一でした。気になっていた第2GPTの位置ですが、ディスク末尾の最終セクタへのオフセット値を示していて、正常です。ddダンプしたディスクイメージの末尾の1セクタ(512バイト)から読み込んだ第2GPTテーブルにも異常は見られませんでした。Windowsが作ったパーティションテーブルだからと言って、GPTについては、おかしなことをやっているわけではなさそうです。「GPTについては」です。WindowsのMBRはいい加減gdiskの結果とddの結果で異なる部分は、MBRの部分でした。これは、MBRの第1パーティションの全セクタ数で、例えば、SSDの場合には以下となります。(500GBのSSDの場合)。Windowsの場合、パーティションの最初のセクタ数(LBA)は正しいようですが、パーティションの全セクタ数は実際の数字を反映せず、0xFFFFFFFFが設定されています。GPTが管理するセクタ数(=ディスクの全セクタ数-1)をMBRの第1パーティションの全セクタ数として設定しているようです。HDDの場合も同様に修正されています。いう設定は、サイズ不明ということなのでしょう。パーティションサイズを取得できないわけではないので、手抜き実装としか思えません。相手にしなかったということでしょうね。ついては、いい加減な実装をしていました。結論Windowsでは、第2GPTヘッダーが正しく配置されないという疑念がありましたが、特に問題なさそうです。WindowsのMBRのパーティションサイズは正しく入力されていません。gdiskでは、Windowsが設定した不適切なのMBRの値を自動的に正しい値に設定し直しているようです。していたことなので、疑念が晴れてスッキリしました。Pythonの勉強にもなりました。摩訶不思議なデータ型変換ルール。付録A:GPTテーブルを読み取るPythonプログラムソースコードとサンプルデータは、ここ(Googleドライブ)に置いておきます。GPTテーブルの構造については、「GUIパーティションテーブル」(wikipedia)やその英語版に解説があります。これを参考にしました。楽天ROOMにガジェットをまとめてます。グレイテスト・ショーマン心温まるミュージカル。