コマンドは次のとおりです:
blockdev --getsize64 /dev/mmcblk0p1
結果は 64 ビット整数としてバイト単位で示されます。 バイト サイズを照会します ブロック デバイスの 、カーネルがそのサイズを見るように。
その理由、なぜ fdisk -l /dev/mmcblk0p1
fdisk
だったのでうまくいきませんでした ブロック デバイスのパーティション テーブル (=最初のセクター) を読み込み、見つかったものを出力します。 .何もチェックせず、パーティション テーブルに何があるかを示すだけです。
パーティションテーブルが破損していたり、ブロックデバイスにパーティションテーブルがなかったりしても気にしません:チェックサムが正しくないという警告を出力しますが、値が明らかに正しくない場合でも、見つかったものは出力します。 -センス。
これはあなたの場合に起こったことです:/dev/mmcblk0p1
持っていない パーティションテーブル。デバイスの名前が示すように、それはすでに物理ディスク /dev/mmcblk0
の最初のパーティションです . fdisk -l /dev/mmcblk0
でクエリした場合、このディスクにはパーティション テーブルが含まれています 、うまくいきました (msdos パーティション テーブルがあると仮定します)。
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