ブロックデバイスがある場合、パーティション名に「p」を含める必要があるかどうかをどのように検出できますか?

ブロックデバイスがある場合、パーティション名に「p」を含める必要があるかどうかをどのように検出できますか?

自動パーティションデバイスを使用したいですsfdisk。これはSDカード、ハードドライブ、SATA、またはNVMEデバイスです。最初はこれらの名前が必要だと思ってsfdisk正しく生成されたかったのですが、とにかく無視できます。 :)

単に、デバイス名にパーティション名を追加する既存のATAおよびSATAデバイスとは異なり、たとえばブロックデバイスの最初のパーティションなど、フラッシュベースで追加のドライバを使用する/dev/sda1ブロックsdaデバイスには他のオプションがあります。これはp、デバイスとパーティション名の間に1を追加します(たとえば、/dev/mmcblk0p1最初のパーティションの場合mmcblk0)。残念ながら、これらの詳細のカーネル文書は見つかりませんでした。

ブロックデバイス(たとえば)がある場合は、その(まだ存在する)パーティションの名前を指定するか(または)を決定するには/dev/mmcblk0どうすればよいですか?p/dev/mmcblk0p1/dev/mmcblk01

これは基本的に逆の問題です。これただし、追加のバリエーションのため、パーティションはまだ存在しません。 (この質問については、実際にパーティションテーブルを変更する答えを受け入れないので、試しても役に立ちません。)

ベストアンサー1

デバイス名が数字で終わると、カーネルは「p」記号を追加してデバイス名とパーティション番号を区別します。

/dev/sda -> /dev/sda1
/dev/mmcblk0 -> /dev/mmcblk0p1

詳細については、disk_nameLinuxカーネルソースコード(linux/block/partition-generic.c)の関数を参照してください。

if (isdigit(hd->disk_name[strlen(hd->disk_name)-1]))
    snprintf(buf, BDEVNAME_SIZE, "%sp%d", hd->disk_name, partno);
else
    snprintf(buf, BDEVNAME_SIZE, "%s%d", hd->disk_name, partno)

おすすめ記事