tune2fsを使用していますが、ブロック単位でデータを提供するため、パーティションの合計サイズの正確な値を取得できません。
私も使用fdisk -l /dev/mmcblk0p1しましたが、ここから取得するサイズも異なる値です。
正確なパーティションサイズを見つけるにはどうすればよいですか?
tune2fsを使用していますが、ブロック単位でデータを提供するため、パーティションの合計サイズの正確な値を取得できません。
私も使用fdisk -l /dev/mmcblk0p1しましたが、ここから取得するサイズも異なる値です。
正確なパーティションサイズを見つけるにはどうすればよいですか?
回答:
コマンドは次のとおりです。
blockdev --getsize64 /dev/mmcblk0p1
結果をバイト単位で64ビット整数として返します。カーネルがそのサイズを確認すると、ブロックデバイスのバイトサイズを照会します。
なぜ動作fdisk -l /dev/mmcblk0p1しなかったのかという理由は、まったくfdisk異なることをしているからです。ブロックデバイスのパーティションテーブル(=最初のセクター)を読み取り、見つかったものを出力します。何もチェックせず、パーティションテーブルの内容のみを示します。
パーティションテーブルが破損していたり、ブロックデバイスに破損していても気にしません:チェックサムが大丈夫ではないという警告を出力しますが、値が明らかに非表示であっても、検出したものを出力します-センス。
これはあなたのケースで起こったことです:パーティションテーブル/dev/mmcblk0p1 がありません。デバイスの名前が示すように、それはすでに物理ディスクの最初のパーティションです/dev/mmcblk0。このディスクにはパーティションテーブルが含まれており、クエリを実行した場合fdisk -l /dev/mmcblk0、動作していました(msdosパーティションテーブルがあると仮定)。
fdisk -l /dev/mmcblk0ませんか?1つのブロックのサイズ、デバイス上のブロックの総数、パーティションのサイズ、および各パーティションの開始ブロックと終了ブロックが表示されます。その情報から、どのパーティションにも割り当てられていないブロック範囲を把握することもできます。
試してみてくださいlsblk、それはルートさえ必要としません:
$ lsblk -b
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 34359738368 0 disk
├─xvda1 202:1 0 1676673024 0 part [SWAP]
└─xvda2 202:2 0 32682016768 0 part /var/spool
この-bパラメーターは、サイズをバイト単位で出力するように指示します。
パーティションの合計サイズの正確な値を取得するには、次を実行します。
awk '{print $1*512}' /sys/class/block/mmcblk0p1/size