Linuxでパーティションが拡張されたかプライマリかを確認する方法

Linuxでパーティションが拡張されたかプライマリかを確認する方法

(g)parted以下は、orコマンドを使用して取得した情報ですfdisk

Device     Boot     Start       End   Sectors  Size Id Type
/dev/sda1  *         2048 196265983 196263936 93.6G 83 Linux
/dev/sda2       196268030 229468159  33200130 15.9G  5 Extended
/dev/sda5       196268032 229468159  33200128 15.9G 82 Linux swap / Solaris

ここに画像の説明を入力してください。

パーティションが拡張/基本であり、sda2の下の階層がsda5などであることを確認するために使用できるsyscallまたはファイルシステム(/sys/blockなど)ベースの情報はありますか?それでは、選択した拡張パーティションの下に論理パーティションがあるかどうかを知る方法はありますか?

コマンド出力を解析しないでください。 fdiskのコードを読んでみましたが、理解するのは複雑すぎました。

編集1:コメントと回答を読んだ後、MBR / GPTなどについて知らないことがわかりました。そこでMBRとEBRの内部構造について読むことにしました。https://thestarman.pcministry.com/asm/mbr/PartTables2.htm#ebrディスクのパーティションの詳細を取得するコードを書きました。

ベストアンサー1

問題は明確に定義されていません。

ディスクがGPTでフォーマットされている場合、拡張パーティションがないため、階層もありません。

MicrosoftオペレーティングシステムからアクセスできるようにディスクがMBRとしてフォーマットされている場合は、最大1つの拡張パーティション、合計4つのプライマリパーティション、および拡張パーティションがある可能性があります。その名前は /dev/sdf[0-3] 形式です。論理区画がある場合、その区画番号は4より大きいです。論理区画を持つには、それを保持する拡張区画が必要です。

ただし、Linuxシステムには最大1つの拡張パーティションが必要である必要はありません。拡張パーティションを使用しない限り、非拡張パーティションが重複することはできません。

したがって、特にパーティション1をより小さなブートパーティションにし、パーティション2はパーティション1にないすべてをカバーし、パーティション3はパーティション2の前半を覆って「拡張」タイプになり、パーティション4はパーティションにすることができます。 2後半。パーティション2.パーティション3には、それぞれパーティション3の半分を占めるパーティション5と6があります。実際には、パーティション2を使用しない限り、これはすべてうまくいきます。ただし、パーティション 5 と 6 は両方ともパーティション 2 3 にあるため、「階層構造」は DAG (方向性非循環グラフ) ではないため、「顧客要件」できない解く。

そのような顧客に私が与えるアドバイスは、手数料を2倍に増やすことです。

基本/拡張パーティションの「タイプ」はMBRに文書化されているため、同様のコードを使用してdd bs=1 skip=446 count=64 if=/dev/sdf | hexdump -C次のようなものを取得できます。

00000000  00 20 21 00 83 df 13 0c  00 08 00 00 00 20 03 00  |. !.......... ..|
00000010  00 df 14 0c 05 19 0d cc  00 28 03 00 00 e0 2e 00  |.........(......|
00000020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000030  00 19 0e cc 83 15 50 05  00 08 32 00 00 f8 0d 00  |......P...2.....|

5番目のバイト(83、05、00、83)を選択して4つの値を取得できます。拡張パーティションの一般的な「タイプ」は05ですが、0fと85も使用されます。バラよりhttps://www.win.tue.nl/~aeb/partitions/partition_types-1.htmlより多くの情報を知りたいです。

これにより、拡張パーティション(この場合は2番目のパーティション)があることを確認し、数字が4より大きいパーティションがあるかどうかを確認できます。

おすすめ記事