我刚刚在笔记本电脑中安装了一张有 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
。好吧,实际上我只有 3 个分区,因为扩展分区从分区号 5 开始,所以它是 p0、p5、p6、p7。
我已经使用另一台 PC 上的打印机中的读卡器格式化了这张卡,该 PC 暴露了 microSD 卡,/dev/sdxY
并允许我创建 17 个分区。现在我将其放入带有内置读卡器的笔记本电脑中,但出现了上述错误。这是为什么?
它建议使用 LVM,但是来吧,microSD 上的 LVM 对于可移动存储来说太过分了,而且非常不方便。
答案1
如果您有 17 个分区,LVM 并不算大材小用。 (恕我直言)
至于分区限制,它恰好是默认的。可能没有人预料到一台原来只有几兆的设备上有这么多分区。
/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
系统中的总数量。
就我个人而言,我宁愿减少分区的数量,这样它就可以在任何地方工作,而不仅仅是您的定制系统。