/ dev / mmcblk0 Partitionslimit

7

Ich habe gerade eine microSD-Karte mit 17 Partitionen in meinem Laptop installiert und erhalte im YaST-Partitionierer den folgenden Fehler:

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

und in der Tat - ich habe nur /dev/mmcblkp0...7. Nun, eigentlich habe ich nur 3 Partitionen, weil eine erweiterte Partition bei Partition Nummer 5 beginnt, also p0, p5, p6, p7.

Ich habe diese Karte mit einem Kartenleser in einem Drucker auf einem anderen PC formatiert, auf dem die microSD-Karte verfügbar gemacht wurde, /dev/sdxYund 17 Partitionen erstellt. Jetzt habe ich es in einen Laptop mit integriertem Kartenleser gesteckt und es gibt den obigen Fehler. Warum ist das so?

Es wird empfohlen, LVM zu verwenden, aber LVM auf microSD ist übertrieben und für Wechselmedien höllisch unpraktisch.

Lapsio
quelle
1
@ Frostschutz - Ich denke, das ist möglicherweise bei einigen alten Kernel-Konfigurationen der Fall, was wahrscheinlich die Ursache für dieses Problem ist. Die tatsächliche Grenze liegt jedoch bei 256 .
Mikeserv
@ Frostschutz - ja, das stimmt. MMC_BLOCK_MINORS ist 8 in meiner config.gz. Trotzdem ist LVM übertrieben. Loopmounts wären einfacher und leichter wiederherzustellen, um sicher zu sein. Ich denke, das System, das die Erstellung der Partitionen ermöglichte, konnte die 18 oder was auch immer verarbeiten, aber nicht der System-Fragesteller hat sie angeschlossen.
Mikeserv

Antworten:

10

LVM ist nicht übertrieben, wenn Sie 17 Partitionen haben. (MEINER BESCHEIDENEN MEINUNG NACH)

Das Partitionslimit ist zufällig die Standardeinstellung. Wahrscheinlich hat niemand erwartet, dass viele Partitionen auf einem Gerät, das früher nur wenige Megabyte hatte.

/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.

Es könnte also funktionieren, wenn Sie Ihren Kernel mit CONFIG_MMC_BLOCK_MINORS=18oder mit dem mmcblk.perdev_minors=18Kernel-Parameter neu kompilieren . (Oder 32, falls es eine Potenz von 2 sein muss). Dadurch wird die Gesamtzahl der mmcblkXPersonen in Ihrem System verringert .

Persönlich würde ich lieber die Anzahl der Partitionen verringern, damit es überall funktioniert und nicht nur in Ihrem benutzerdefinierten System.

Frostschutz
quelle
Ich habe mehrere Partitionen mit mehreren verschiedenen Dateisystemen, nur für den Fall, dass ein Teil der Karte beschädigt wird, ist es ein bisschen wie ein primitiver "Spiegel-Raid" auf einer einzelnen Karte. Zusätzliches LVM erhöht lediglich die Komplexität und die Ausfallmöglichkeiten. Welp, dann hole ich mir einen Adapter. Ich hatte bereits einmal einen Fehler, als btrfs auf der SD-Karte beschädigt wurde und ich keine Daten wiederherstellen konnte - es ist tatsächlich dieselbe Karte, ich habe sie nach einem Fehler neu formatiert.
Lapsio
Andere Geräte haben ebenfalls Partitionsbeschränkungen (normalerweise 15 statt 7). Es gibt 259 block Block Extended Major(nicht sicher, warum nicht von mmc verwendet, wahrscheinlich hat niemand damit gerechnet), aber selbst das hat Grenzen. Sie können verwendet werden partx, kpartxund zusätzliche Partitionen durch Device - Mapper - Karte w / o "LVM" per se verwendet wird . LVM macht die Sache nur einfacher, wenn Sie den Device Mapper trotzdem verwenden müssen. In einer eingebetteten Umgebung ohne losetupGerätezuordnung kann auch Offset / Sizelimit eine Option sein.
Frostschutz
Das Hinzufügen eines Kernel-Parameters scheint jedoch das Einfachste zu sein.
Frostschutz