Tworzenie partycji GPT za pomocą sgdisk na emmc 2GB

0

Próbuję podzielić emmc na 2 GB za pomocą sgdisk, aby mieć tabelę partycji GPT. Polecenia pokazują sukces, a także tabela partycji GPT wygląda na zaktualizowaną (nawet przy ponownym uruchomieniu), ale partycje w ogóle nie są tworzone. Oznacza to, że kiedy sprawdzam za pomocą ls / dev / mmcblk0, nie pokazuje on utworzonych partycji. i mój sgdisk zawsze próbuje utworzyć partycje na p1, ale nie pokazano p2, p3, ....

Poniżej znajdują się polecenia, których używam, a sgdisk -p pokazuje utworzone partycje, ale nie ma utworzonych partycji / dev / mmcblk0 (p1, p2, p3). Również w logach widać, że zawsze próbuje utworzyć p1, który miał być p2 i p3 dla późniejszych partycji. Czy możesz pomóc w użyciu sgdisk do tworzenia partycji w emmc ...

# sgdisk -og /dev/mmcblk0
mmcblk0: p1
The operation has completed successfully.
# sgdisk -p /dev/mmcblk0
Disk /dev/mmcblk0: 3751936 sectors, 1.8 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 27F5FD73-8C2A-4448-91F6-251B72C64843
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 3751902
Partitions will be aligned on 2048-sector boundaries
Total free space is 3751869 sectors (1.8 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name

# sgdisk -n 1:2048:264191 -c 1:"kernel" /dev/mmcblk0
Setting name!
partNum is 0
REALLY setting name!
mmcblk0: p1
The operation has completed successfully.

# sgdisk -n 2:264192:395263 -c 2:"rootfs" /dev/mmcblk0
Setting name!
partNum is 1
REALLY setting name!
mmcblk0: p1
The operation has completed successfully.

# sgdisk -n 3:395263:460799 -c 3:"data" /dev/mmcblk0
Information: Moved requested sector from 395263 to 395264 in
order to align on 2048-sector boundaries.
Setting name!
partNum is 2
REALLY setting name!
mmcblk0: p1
The operation has completed successfully.

# sgdisk -p /dev/mmcblk0
Disk /dev/mmcblk0: 3751936 sectors, 1.8 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 27F5FD73-8C2A-4448-91F6-251B72C64843
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 3751902
Partitions will be aligned on 2048-sector boundaries
Total free space is 3293117 sectors (1.6 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name
  1            2048          264191   128.0 MiB   8300  kernel
  2          264192          395263   64.0 MiB    8300  rootfs
  3          395264          460799   32.0 MiB    8300  data

# ls /dev/mmcblk0
mmcblk0       mmcblk0boot0  mmcblk0boot1  mmcblk0p1

# cat /proc/partitions
major minor  #blocks  name

179        0    1875968 mmcblk0
179        1    1875967 mmcblk0p1
179       16       1024 mmcblk0boot1
179        8       1024 mmcblk0boot0

No logical partitions created.
Reddy
źródło
1
Czy możesz pokazać wyniki wypróbowanych poleceń?
Mokubai
Mokubai: Zaktualizowałem pytanie o dane wyjściowe
Reddy,
@RodSmith To jest właśnie twoja aleja
MariusMatutiae

Odpowiedzi:

1

Musisz włączyć CONFIG_EFI_PARTITION w konfiguracji jądra Linuksa.

make linux-menuconfig Włącz warstwę blokową -> Typy partycji -> Wybierz „Obsługa partycji GUI EFI”

Dzięki temu widzę, że utworzone partycje są zapisywane na dysku ...

Należy także sprawdzić inne ustawienie, jeśli planujesz utworzyć więcej niż 8 partycji.

│ Symbol: MMC_BLOCK_MINORS [= 8]
│ Typ: liczba całkowita │
Zakres: [4 256]
omp Monit: liczba nieletnich na urządzenie blokowe │
│ Zdefiniowany w sterownikach / mmc / karta / Kconfig: 17 │
│ Zależy od: MMC [= y] && MMC_BLOCK [= y] │
│ Lokalizacja: │
│ -> Sterowniki urządzeń │
│ -> Obsługa kart MMC / SD / SDIO (MMC [= y]) │
│ -> Sterownik urządzenia blokowego MMC (MMC_BLOCK [= y])

Zmiana wartości będzie obsługiwać do 256 partycji ...

Reddy
źródło
To dobre przypomnienie dla tych, którzy kompilują własne jądra! IIRC, obsługa GPT nie jest włączona w ustawieniach domyślnych, więc sprawdzanie jej jest konieczne podczas kompilacji własnego jądra. Większość ludzi korzysta ze wstępnie skompilowanych jąder z dystrybucji takich jak Ubuntu lub Fedora, a te zawsze mają włączoną obsługę GPT, więc ten szczegół często nie jest wspomniany w dokumentacji użytkownika.
Rod Smith
@RodSmith Masz rację. Nigdzie nie znalazłem tej informacji i, co dziwne, nigdzie nie widać błędu dotyczącego brakującej obsługi, a sgdisk pokazuje tabelę GPT ze zaktualizowanymi informacjami o partycji.
Reddy
Fdisk GPT odczytuje i zapisuje sektory bezpośrednio na dysku; nie polega na interpretacji danych przez jądro, dlatego sgdiskpokazuje partycje jako istniejące - istnieją, mimo że jądro ich nie może odczytać. Konieczność obsługi jądra jest wspomniana w dokumentacji fdisk GPT, choć nie jest widoczna, na stronie Uruchamianie z GPT . (Wyszukaj „EFI GUID”, aby go znaleźć.)
Rod Smith
Dzięki RodSmith. Mój problem nie został całkowicie rozwiązany. z powyższą obsługą konfiguracji jądra jestem w stanie tworzyć partycje, ale tylko 7 partycji (po tym tabela GPT pokazuje, że ma poprawny wpis dla wszystkich (10), ale nie są one tworzone. Czy masz jakieś wskazówki na ten temat? W razie potrzeby mogę stwórz nowe pytanie na ten temat ... FYI: Próbuję na emmc 2GB
Reddy
Bardzo stare jądra miały ograniczenia liczby partycji, które można utworzyć na dysk. Ograniczenia te dotyczyły głównych i podrzędnych numerów węzłów urządzenia. Możliwe, że napotykasz ten starożytny problem z powodu innej przeoczonej opcji jądra lub być może jakiegoś brakującego lub źle skonfigurowanego narzędzia przestrzeni użytkownika (IIRC, udev odgrywa w tym rolę). Szczerze mówiąc, minęło tyle czasu, odkąd musiałem sobie z tym poradzić, że nie pamiętam szczegółów, ale wyszukiwanie według tych wskazówek może być produktywne.
Rod Smith