web-dev-qa-db-ja.com

/ dev / mmcblk0パーティション制限

ラップトップに17のパーティションがあるmicroSDカードをマウントしたところ、YaSTパーティショナーで次のエラーが発生しました。

Your disk /dev/mmcblk0 contains 17 partitions. The maximum number of partitions that the
kernel driver of the disk can handle is 7. Partitions above 7 cannot be accessed

確かに-私は/dev/mmcblkp0...7しか持っていません。ええと、拡張パーティションはパーティション番号5から始まるため、実際には3つのパーティションしかありません。つまり、p0、p5、p6、p7です。

MicroSDカードを/dev/sdxYとして公開している別のPCのプリンターのカードリーダーを使用してこのカードをフォーマットし、17のパーティションを作成できるようにしました。今私はそれを内蔵のカードリーダーを備えたラップトップに入れました、そしてそれは上記のエラーを与えます。何故ですか?

LVMを使用することをお勧めしますが、microSD上のLVMはやり過ぎであり、リムーバブルストレージの地獄としては不便です。

7
Lapsio

LVMは、17のパーティションがあればやり過ぎではありません。 (私見では)

パーティション制限に関しては、それがたまたまデフォルトになっています。おそらく、かつて数メガしかなかったデバイス上の多くのパーティションが、だれも予想していなかったでしょう。

/usr/src/linux/Documentation/devices.txt

179 block       MMC block devices
                  0 = /dev/mmcblk0      First SD/MMC card
                  1 = /dev/mmcblk0p1    First partition on first MMC card
                  8 = /dev/mmcblk1      Second SD/MMC card
                    ...

                The start of next SD/MMC card can be configured with
                CONFIG_MMC_BLOCK_MINORS, or overridden at boot/modprobe
                time using the mmcblk.perdev_minors option. That would
                bump the offset between each card to be the configured
                value instead of the default 8.

したがって、CONFIG_MMC_BLOCK_MINORS=18またはmmcblk.perdev_minors=18カーネルパラメータを使用してカーネルを再コンパイルすると、うまくいく場合があります。 (または2のべき乗でなければならない場合は32)。そうすることで、システム内のmmcblkXの総数が減ります。

個人的には、パーティションの数を減らして、カスタマイズしたシステムだけでなく、どこでも機能するようにします。

10
frostschutz