Jak znaleźć nazwę ścieżki partycji wymiany na karcie SD?

9

Jak to ostrzega, nie należy włączać wymiany na niewłaściwej partycji, ponieważ możesz zniszczyć telefon:

OK, zanim przejdziemy dalej! poprzednie telefony miały układ partycji, w którym mmcblck0 była kartą SD (zewnętrzną), nasz telefon używa mmcblck1 dla zewnętrznego sd. Jest to ważne, ponieważ jeśli używasz aplikacji, może być ustawione użycie mmcblck0 jako partycji wymiany. Użycie tego ustawienia spowoduje, że będziesz używać sbl2 lub sbl3 jako partycji wymiany. To zepsuje twój telefon, a przewodnik usuwania będzie użyteczny.

Tak więc partycja wymiany może mieć miejsce, /dev/block/mmcblk0p3jeśli mam 3 partycje (fat32, sdext, swap) na karcie SD lub /dev/block/mmcblk0p2jeśli mam 2 partycje (fat43 i swap) lub /dev/block/mmcblk1p?jeśli masz inny telefon itp., A zły wybór może się nie powieść Twój telefon.

Jak dowiedzieć się, która partycja jest która? Powinna to być jedyna partycja na dowolnym dysku telefonu z systemem swapplików.

  • fdisk -lrobi to na Ubuntu , ale nic nie wyświetla w Androidzie
  • blkid nie pokazuje partycji wymiany
  • cat /proc/partitions wyświetla wiele partycji, ale nie wskazuje, która jest zamiana
  • cat /proc/swapswyświetla tylko te wymiany, które są już używane
  • cat /proc/mtdmówi tylko dev: size erasesize namei nic więcej
  • ls /dev/block/voldwyświetla niektóre partycje jako 179:64 179:65 179:66, ale nie wskazuje, jakie są?
  • Odzyskiwanie 4ext pokaże to w tabeli partycji ( swap swap 129 MiB), ale nie mówi nazwy programisty
  • ...

Nawet jeśli nie ma narzędzia wiersza poleceń do bezpośredniego wydrukowania, na pewno istnieje sposób, aby wydedukować to z innych informacji?

endolit
źródło
Czy coś jest w twoim /proc/swaps?
ott--
@ ott--: cat /proc/swapstylko pokazuje plik wymiany tworzony przez swapper 2, nie partycja na karcie SD
endolit
Jak już znasz urządzenie (SDCard), czy próbowałeś mount(bez parametrów) znaleźć odpowiednie urządzenie blokowe ( /dev/block/*) i sprawdzić to na liście /proc/partitions(lub /proc/mtd)? Jeśli nie masz już żadnej partycji na karcie, twoją partycją wymiany powinna być „druga partycja kończąca się cyfrą”, chyba że mountwskazuje voldtylko. W takim przypadku pomocne może być porównanie rozmiarów (lub tymczasowe wyjęcie karty dla „różnic”).
Izzy

Odpowiedzi:

8

Zainstalowałem aplikację Disk Info i w opcjach włączyłem tryb Expert i odmontowane partycje . Nie mówi „zamień”, ale pokazuje wyraźnie, że jest to jedyna inna partycja na karcie SD i ma odpowiedni rozmiar, więc /dev/block/mmcblk1p2musi to być ta:

zrzut ekranu z informacją o dysku

Swapper 2 jest skonfigurowany do /dev/block/mmcblk0p3domyślnego używania , więc cieszę się, że nie wybrałem domyślnego.

endolit
źródło
8

fdisk -ldziała, jeśli jawnie podasz całą nazwę urządzenia dyskowego (np. fdisk -l /dev/block/mmcblk1); to, co nie działa, to automatyczne wykrywanie urządzeń blokowych (najwyraźniej dlatego, że Android umieszcza pliki urządzeń blokowych w /dev/blockkatalogu, ale fdiskoczekuje , że zobaczą te pliki bezpośrednio w /dev). Dlatego jedną z opcji jest, aby zebrać listę całych urządzeń dyskowych ( /dev/block/mmcblk0, /dev/block/mmcblk1...) i spojrzeć na ich stołach działowych użyciu . Te całe urządzenia dyskowe są wymienione przed odpowiednimi partycjami.fdisk -l <device>/proc/partitions

blkidNarzędzie nie patrzy w tablicy partycji na wszystkich - otwiera wszystkie urządzenia blokowe znane przez system i wykrywa typ systemu plików od rzeczywistych danych dotyczących tych urządzeń; dlatego blkidnie pokaże poprawnych informacji dla partycji wymiany, dopóki partycja ta nie zostanie zainicjowana przez mkswap. Oznacza to, że blkidjest to bezużyteczne dla bieżącego zadania (znalezienie, do której partycji należy przekazać mkswap).

mountzwykle pokazuje urządzenia poniżej /dev/block/vold, które są nazwane zgodnie z ich głównymi i mniejszymi numerami. Aby uzyskać zwykłą nazwę urządzenia, możesz zajrzeć /proc/partitionsdo wiersza zawierającego te same liczby w pierwszych dwóch kolumnach. Następnie możesz usunąć część z końca nazwy urządzenia, dodać na początku i przekazać wynikową nazwę, aby zobaczyć tablicę partycji odpowiedniego urządzenia.p<number>/dev/block/fdisk -l

Uwaga: jeśli spojrzysz na fdisk -lwyjście wewnętrznej pamięci flash eMMC, możesz znaleźć wiele partycji o dziwnych typach, szczególnie na urządzeniach z Qualcomm. Np. Zobacz tablicę partycji dla Samsung Galaxy W (GT-I8150):

# fdisk -lu /dev/block/mmcblk0                                  

Disk /dev/block/mmcblk0: 3959 MB, 3959422976 bytes
1 heads, 16 sectors/track, 483328 cylinders, total 7733248 sectors
Units = sectors of 1 * 512 = 512 bytes

              Device Boot      Start         End      Blocks  Id System
/dev/block/mmcblk0p1               1      212991      106495+  c Win95 FAT32 (LBA)
Partition 1 does not end on cylinder boundary
/dev/block/mmcblk0p2   *      212992      213991         500  4d Unknown
Partition 2 does not end on cylinder boundary
/dev/block/mmcblk0p3          213992      221183        3596  46 Unknown
Partition 3 does not end on cylinder boundary
/dev/block/mmcblk0p4          221184     7733247     3756032   5 Extended
Partition 4 does not end on cylinder boundary
/dev/block/mmcblk0p5          229376      239615        5120  47 Unknown
/dev/block/mmcblk0p6          245760      285759       20000  49 Unknown
/dev/block/mmcblk0p7          286720      292863        3072  58 Unknown
/dev/block/mmcblk0p8          294912      306175        5632  48 Unknown
/dev/block/mmcblk0p9          311296      324271        6488  50 Unknown
/dev/block/mmcblk0p10         327680      333823        3072  4a Unknown
/dev/block/mmcblk0p11         335872      342015        3072  4b Unknown
/dev/block/mmcblk0p12         344064      360447        8192  90 Unknown
/dev/block/mmcblk0p13         360448      375807        7680  91 Unknown
/dev/block/mmcblk0p14         376832      387071        5120  92 Unknown
/dev/block/mmcblk0p15         393216     1488895      547840  93 Unknown
/dev/block/mmcblk0p16        1490944     1613823       61440  94 Unknown
/dev/block/mmcblk0p17        1613824     3887103     1136640  95 Unknown
/dev/block/mmcblk0p18        3891200     3993599       51200  96 Unknown
/dev/block/mmcblk0p19        3997696     3998695         500  97 Unknown
/dev/block/mmcblk0p20        4005888     4013079        3596  98 Unknown
/dev/block/mmcblk0p21        4014080     4024319        5120  99 Unknown
/dev/block/mmcblk0p22        4030464     4070463       20000  9a Unknown
/dev/block/mmcblk0p23        4071424     4081663        5120  9b Unknown
/dev/block/mmcblk0p24        4087808     4101807        7000  9c Unknown
/dev/block/mmcblk0p25        4104192     4114431        5120  9d Unknown
/dev/block/mmcblk0p26        4120576     4130815        5120  9e Unknown
/dev/block/mmcblk0p27        4136960     4147199        5120  9f BSD/OS
/dev/block/mmcblk0p28        4153344     7733247     1789952  a0 Thinkpad hibernation

Kody typów partycji są nawet niebezpiecznie niepoprawne, ponieważ /dev/block/mmcblk0p1, zgodnie z deklaracją Win95 FAT32 (LBA), faktycznie zawierają pewne dane systemowe (w tym lokalizacje i skróty MD5 różnych części ROM); jednak /dev/block/mmcblk0p28„wewnętrzne przechowywanie danych” w formacie FAT16 ma typ, który wygląda zupełnie nieprawdziwie. W tym przypadku producent nie wykorzystał 0x82kodu typu (Linux Swap) do własnych celów, ale nie jestem pewien, czy takie kolizje nigdy się nie zdarzają, więc nie powinieneś ślepo próbować używać dowolnej partycji, która wygląda jak zamiana - najpierw sprawdź, czy rozmiar urządzenia i układ partycji są zgodne z oczekiwaniami na karcie SD.

/proc/mtd nigdy nie jest przydatny do znajdowania partycji wymiany na karcie SD (sterowniki MTD służą do uzyskiwania dostępu do bezpośrednio podłączonych nieprzetworzonych układów flash, nie mogą współpracować z zewnętrznymi kartami SD).

Siergiej Własow
źródło
1
Aha! fdisk -l /dev/block/mmcblk1mówi/dev/block/mmcblk1p2 30637 31152 132096 82 Linux swap
endolith,