Jak wyświetlić listę wszystkich głównych partycji z ich etykietami?

11

Chcę ustalić wszystkie partycje na moim urządzeniu wraz z ich odpowiednikami. punkty montowania lub etykiet (tj wiedzieć, która partycja jest gospodarstwo system, recovery, boot, itd.). To musi być niezależne od urządzenia (ponieważ mam wiele urządzeń). Celem jest dla ddnich i wiedzieć, który obraz jest co.

Widziałem polecenie, aby wyświetlić punkty montowania partycji? - tam jednak celem była tylko lista partycji zamontowanych partycji. Potrzebuję ich wszystkich i np. /recoveryNie jest montowany podczas uruchamiania w „normalnym trybie pracy”.

Jak dotąd moje przeglądy przyniosły szereg podejść - ale żadne z nich nie działa na żadnym z testowanych urządzeń:

  • cat /proc/mtd: jest pusty lub nie istnieje
  • cat /proc/emmc: jest pusty lub nie istnieje
  • cat /proc/dumchar_info: nie istnieje (MTK / MediaTek)
  • ls -al /dev/block/platform/*/by-name: albo nie istnieje, albo nie ma pożądanych szczegółów

Masz pojęcie o tym, co mogłem przeoczyć? Oczywiście mogłem chodzić po wszystkich /dev/block/mmcblk0p*urządzeniach, zrzucić je i uporządkować później - ale potem musiałem powtórzyć to badanie dla każdego z moich urządzeń (i ponownie, gdy ktoś pojawi się przy innym), więc to nie jest rozwiązanie.


EDYCJA: Zwróć uwagę na znacznik na to pytanie. Będę musiał uzyskać dostęp do tych informacji za pośrednictwem ADB i nie chcę instalować aplikacji na urządzeniu przekazanym mi do zbadania. Rozważmy to jako „tło kryminalistyczne” (bez zmian w urządzeniu), choć nie jest to do końca prawdą;)

Przepraszam również za moje początkowe błędne sformułowanie: „punkty montowania” są interesujące tylko, o ile ujawniają cel partycji. Nie chcę ich montować / montować ponownie :)

Izzy
źródło
Mam nadzieję, że nie masz nic przeciwko, że dodałem dodatkowy tag
HasH_BrowN
@HasH_BrowN Naprawdę nie spełnia celu (nie jestem zainteresowany montażem tutaj, dlatego początkowo go nie zastosowałem), ale też tak naprawdę nie boli;)
Izzy
Tworzę dla ciebie kolejną odpowiedź. Czy odpowiedź wskazująca na KPARTX będzie dla Ciebie działać? To wydaje się poprawne.
HasH_BrowN
Nie mam pojęcia, zanim to zobaczę, obawiam się ...
Izzy

Odpowiedzi:

7

Jak pokazują już istniejące odpowiedzi, wydaje się, że nie ma „unikalnego sposobu” na osiągnięcie tego. Zacząłem więc łączyć pomysły z całego świata, łącząc je ze skryptem (a raczej „biblioteką skryptów”), aby sprawdzać je sekwencyjnie (aż do uzyskania dobrego trafienia), i zintegrowałem to z moim „narzędziem do dokumentowania urządzeń” o nazwie Adebar . Zainteresowani mogą go znaleźć w lib/partitions.libpliku. Ponieważ Adebar jest oprogramowaniem typu open source (GPLv2), możesz go skopiować i użyć - lub rozwidlić projekt i go ulepszyć.

Pełne rozwiązanie jest nieco długie, aby opublikować tutaj (jak wspomniano, możesz pobrać go na Github), ale ponieważ nasza polityka obejmuje co najmniej ogólną część postu, oto, co robi:

Różne źródła dostarczają różne zestawy szczegółów, więc najpierw wypróbowuje „najlepsze”, a następnie powtarza, aż przynajmniej coś zostanie znalezione.

  • /proc/dumchar_infopodaje najwięcej szczegółów, więc najpierw jest to wypróbowywane. Zadowoleni użytkownicy MTK otrzymają to.
  • /proc/mtd jest drugim najlepszym źródłem.
  • /proc/emmc powinien mieć prawie tyle samo co poprzedni kandydaci, ale jest nieco trudny w użyciu
  • /dev/block/platform/*/by-name, sprawdzone krzyżowo z…
  • /proc/partitions sprawdzone krzyżowo z /proc/mounts daje nam przynajmniej zamontowane partycje

Skrypt, który zbudowałem, zasadniczo prowadzi źródła w tej kolejności, zatrzymując się, gdy tylko będzie w stanie zebrać szczegóły (np. Jeśli /proc/dumchar_infozostał znaleziony, nie trzeba analizować wszystkich pozostałych). Wszystkie zostały umieszczone w osobnych funkcjach, zwracając dane przy użyciu tej samej struktury, można nawet scalić wyniki z nich wszystkich.

Jeśli ktoś może wymyślić lepsze rozwiązanie, oczywiście jestem zawsze otwarty na ten pomysł :)

Izzy
źródło
4

Natknąłem się na to pytanie. Lubię wyzwanie ...

Narzędzia, których użyłem: BusyBox

Wymyśliłem 3 polecenia (jedno wymienione na liście), aby podać informacje o partycjach

busybox ls -QAl --color=never /dev/block/platform/*/by-name  
Wynik:
lrwxrwxrwx    1 0        0               20 Jan 30  1970 "DDR" -> "/dev/block/mmcblk0p4"
lrwxrwxrwx    1 0        0               20 Jan 30  1970 "aboot" -> "/dev/block/mmcblk0p5"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "abootf" -> "/dev/block/mmcblk0p16"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "boot" -> "/dev/block/mmcblk0p18"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "cache" -> "/dev/block/mmcblk0p41"
lrwxrwxrwx    1 0        0               20 Jan 30  1970 "dbi" -> "/dev/block/mmcblk0p3"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "dbibak" -> "/dev/block/mmcblk0p10"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "drm" -> "/dev/block/mmcblk0p36"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "eksst" -> "/dev/block/mmcblk0p29"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "encrypt" -> "/dev/block/mmcblk0p28"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "factory" -> "/dev/block/mmcblk0p39"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "fota" -> "/dev/block/mmcblk0p34"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "fsc" -> "/dev/block/mmcblk0p25"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "fsg" -> "/dev/block/mmcblk0p24"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "grow" -> "/dev/block/mmcblk0p43"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "laf" -> "/dev/block/mmcblk0p33"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "misc" -> "/dev/block/mmcblk0p32"
lrwxrwxrwx    1 0        0               20 Jan 30  1970 "modem" -> "/dev/block/mmcblk0p1"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "modemst1" -> "/dev/block/mmcblk0p21"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "modemst2" -> "/dev/block/mmcblk0p22"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "mpt" -> "/dev/block/mmcblk0p38"
lrwxrwxrwx    1 0        0               20 Jan 30  1970 "pad" -> "/dev/block/mmcblk0p8"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "pad1" -> "/dev/block/mmcblk0p23"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "pad2" -> "/dev/block/mmcblk0p27"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "persist" -> "/dev/block/mmcblk0p19"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "rct" -> "/dev/block/mmcblk0p30"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "recovery" -> "/dev/block/mmcblk0p20"
lrwxrwxrwx    1 0        0               20 Jan 30  1970 "rpm" -> "/dev/block/mmcblk0p6"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "rpmbak" -> "/dev/block/mmcblk0p11"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "rpmf" -> "/dev/block/mmcblk0p13"
lrwxrwxrwx    1 0        0               20 Jan 30  1970 "sbl1" -> "/dev/block/mmcblk0p2"
lrwxrwxrwx    1 0        0               20 Jan 30  1970 "sbl1b" -> "/dev/block/mmcblk0p9"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "sdif" -> "/dev/block/mmcblk0p15"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "sns" -> "/dev/block/mmcblk0p37"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "spare1" -> "/dev/block/mmcblk0p17"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "spare2" -> "/dev/block/mmcblk0p31"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "spare3" -> "/dev/block/mmcblk0p35"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "ssd" -> "/dev/block/mmcblk0p26"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "system" -> "/dev/block/mmcblk0p40"
lrwxrwxrwx    1 0        0               20 Jan 30  1970 "tz" -> "/dev/block/mmcblk0p7"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "tzbak" -> "/dev/block/mmcblk0p12"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "tzf" -> "/dev/block/mmcblk0p14"
lrwxrwxrwx    1 0        0               21 Jan 30  1970 "userdata" -> "/dev/block/mmcblk0p42"

busybox blkid
Wynik:
/dev/block/vold/179:65: LABEL="ANDROID" UUID="87B8-10F1"
/dev/block/mmcblk1p1: LABEL="ANDROID" UUID="87B8-10F1"
/dev/block/mmcblk0p42: UUID="57f8f4bc-abf4-655f-bf67-946fc0f9f25b"
/dev/block/mmcblk0p41: UUID="57f8f4bc-abf4-655f-bf67-946fc0f9f25b"
/dev/block/mmcblk0p40: UUID="57f8f4bc-abf4-655f-bf67-946fc0f9f25b"
/dev/block/mmcblk0p38: UUID="57f8f4bc-abf4-655f-bf67-946fc0f9f25b"
/dev/block/mmcblk0p37: UUID="57f8f4bc-abf4-655f-bf67-946fc0f9f25b"
/dev/block/mmcblk0p36: UUID="57f8f4bc-abf4-655f-bf67-946fc0f9f25b"
/dev/block/mmcblk0p19: UUID="57f8f4bc-abf4-655f-bf67-946fc0f9f25b"
/dev/block/mmcblk0p1: UUID="00BC-614E"

busybox df -ma
Wynik:
Filesystem           1M-blocks      Used Available Use% Mounted on
tmpfs                     1415         0      1415   0% /dev
devpts                       0         0         0   0% /dev/pts
proc                         0         0         0   0% /proc
sysfs                        0         0         0   0% /sys
selinuxfs                    0         0         0   0% /sys/fs/selinux
debugfs                      0         0         0   0% /sys/kernel/debug
none                         0         0         0   0% /acct
none                      1415         0      1415   0% /sys/fs/cgroup
tmpfs                     1415         0      1415   0% /mnt/asec
tmpfs                     1415         0      1415   0% /mnt/obb
none                         0         0         0   0% /dev/cpuctl
/dev/block/platform/msm_sdcc.1/by-name/system                              2524       715      1808  28% /system
/dev/block/platform/msm_sdcc.1/by-name/userdata                         25620      5066     20514  20% /data
/dev/block/platform/msm_sdcc.1/by-name/cache                           834        13       820   2% /cache
/dev/block/platform/msm_sdcc.1/by-name/persist                            31         4        27  13% /persist
/dev/block/platform/msm_sdcc.1/by-name/modem                            64        56         7  88% /firmware
/dev/block/platform/msm_sdcc.1/by-name/sns                             8         4         4  52% /sns
/dev/block/platform/msm_sdcc.1/by-name/drm                             8         4         3  56% /persist-lg
/dev/block/platform/msm_sdcc.1/by-name/mpt                            31        13        18  41% /mpt
/dev/fuse                25620      5066     20514  20% /mnt/shell/emulated
/dev/block/vold/179:65   60891     10820     50071  18% /mnt/media_rw/sdcard1
/dev/fuse                60891     10820     50071  18% /storage/sdcard1
Ryan Conrad
źródło
1
Dzięki za twój wysiłek, Ryan! Grałem już również busybox(co niestety nie jest dostępne na „urządzeniach niektórych znajomych”, do których się dostaję). blkidnie ujawnia, która to partycja (rozruch, odzyskiwanie itp.), a */by-name/*nie istnieje na wszystkich urządzeniach (a kiedy to robi, nazwy są czasami dość tajemnicze - np. na moim LG Optimus 4X, wszystkie są 3- tylko znaki i niekoniecznie „mówienie”). dfwyświetla tylko zamontowane urządzenia, więc nie pokaże np. odzyskiwania po uruchomieniu w „trybie normalnym” - więc tutaj łatwiej jest używać /proc/mountszamiast tego.
Izzy
Możesz również o to zapytać w systemach Unix i Linux . Mogą być świadomi sposobów uzyskania informacji. Wszystko, co zbadałem, mówi „fdisk” lub inne narzędzia, które albo nic nie zwracają, albo nie istnieją w systemie Android.
Ryan Conrad
To też było moje doświadczenie. Zadałem powiązane pytanie dotyczące SO z innej perspektywy, ale nie otrzymałem jeszcze odpowiedzi. Boję się, że pytam o niemożliwe. Jest to dość łatwe do osiągnięcia na urządzeniach obsługujących /proc/mtd- ale niestety nie wydaje się, że są już zapełniane obecnymi urządzeniami. Na niektórych urządzeniach nawet znalazłem .fstabpliki, ale znowu: a) nie na wszystkich, i b) nawet jeśli nie wydawały się niezawodne (niektóre części były tam zdecydowanie błędne).
Izzy
1

KPARTX

Komenda kpartx odczytuje tabele partycji i mapuje partycje na pliki urządzeń. Działa na urządzeniach i obrazach dysków. Oznacza to, że możemy odwzorować partycje HFS w obrazie dysku na specjalny plik urządzenia blokowego i zamontować te partycje, adresując ten plik urządzenia blokowego tak, jakby był częścią dołączonego urządzenia.

http://linuxsleuthing.blogspot.com/2012/10/christmas-come-early-hfshfs-mounting.html

Przykłady w linku to wróg MacBook Pro, ale różne obrazy dysków powinny działać dobrze, o ile prezentowane są w systemie GNU Linux w RAW. (xmount - patrz poniżej)

usage : kpartx [-a|-d|-l] [-f] [-v] wholedisk

-a add partition devmappings
-r devmappings will be readonly
-d del partition devmappings
-u update partition devmappings
-l list partitions devmappings that would be added by -a
-p set device name-partition number delimiter
-g force GUID partition table (GPT)
-f force devmap create
-v verbose
-s sync mode. Don't return until the partitions are created`

xmount

xmount pozwala na konwersję w locie między wieloma typami obrazów dysków twardych na wejściu i wyjściu. xmount tworzy wirtualny system plików za pomocą FUSE (system plików w przestrzeni użytkownika), który zawiera wirtualną reprezentację obrazu wejściowego. Reprezentacja wirtualna może być w surowym formacie pliku DD, DMG, VHD, wirtualnego dysku VirtualBox lub w formacie VMDK VmWare. Obrazy wejściowe mogą być surowymi plikami DD, EWF (Expert Witness Compression Format) lub AFF (Advanced Forensic Format). Ponadto xmount obsługuje również wirtualny dostęp do zapisu do plików wyjściowych przekierowanych do pliku pamięci podręcznej. Umożliwia to rozruch uzyskanych obrazów dysku twardego za pomocą QEMU, KVM, VirtualBox, VmWare lub podobnych.

https://www.pinguin.lu/xmount


Mogę podać dodatkowe szczegóły i informacje w razie potrzeby lub potrzeby.

HasH_BrowN
źródło
Podziwiam twój entuzjazm, ale: Sprawdziłem urządzenia, które tu mam, żadne z nich nie ma dostępnych poleceń. Sądząc z twoich linków, są to narzędzia dostępne dla Linuksa - ale partycje do zbadania znajdują się na urządzeniach z Androidem, jak opisano, i nie można uzyskać do nich dostępu bezpośrednio z komputera z systemem Linux. Co więcej: mapowanie partycji na urządzenie nie ujawnia, co na niej jest (system? Dane? Boot?), Więc kpartx jest niedostępny. xmount też nie wygląda na rozwiązanie tego.
Izzy
Naprawdę myślałem, że coś mi się podoba. Próbowałem. Dziękujemy za szybką odpowiedź. Zatrzymam nos na kamieniu szlifierskim.
HasH_BrowN
Jestem wdzięczny za twój wysiłek! Niestety, wyniki się nie zgadzają. Wyobraź sobie, że: Muszę pobrać /recoverypartycję z uruchomionego urządzenia. To nie jest montowane w trybie normalnym. Jak ustalić, którą partycję wybrać? Mając powyższe, musiałem wybrać je wszystkie i dowiedzieć się później. Generuje zbyt dużo danych i trwa zbyt długo.
Izzy
1
Ta aplikacja DiskInfo wyświetli odmontowaną partycję odzyskiwania. Właśnie sprawdziłem, mój (HTC One V) to mmcblk0p21. Jest dość szczegółowy jak na aplikację.
HasH_BrowN
1
Mój sentyment, ale gdzie. Prawdopodobnie nie jest wymieniony / przechowywany w sposób, w jaki szukamy.
HasH_BrowN
0

DiskInfo będzie aplikacją, którą chcesz. Wyświetli wszystkie punkty montowania oraz wszystkie odmontowane i wszystkie partycje tymczasowe.

To tylko interfejs graficzny, bez żadnej innej rzeczywistej funkcjonalności. Idealny dla twoich potrzeb. Wymaga to użycia na w pełni uruchomionym urządzeniu. Korzeń nie jest potrzebny.

Zrzut ekranu
Zrzut ekranu (kliknij, aby zobaczyć większy wariant)

HasH_BrowN
źródło
1
Przepraszam, absolutnie nie. Musisz przegapić command-linetag :) Chyba lepiej, że napiszę to wprost. Znam wiele aplikacji pokazujących te szczegóły, ale muszę uzyskać do nich dostęp / zebrać je adb shellbez pomocy dodatkowej aplikacji (nie zawsze mogę najpierw zainstalować ją na przekazanym mi urządzeniu).
Izzy
Ups Nie zaszkodzi to moim uczuciom, chcesz, żebym to usunął (żebyś nie mylił się)?
HasH_BrowN
Tylko jeśli czujesz potrzebę. Może być przydatny dla kogoś, kto szuka tych samych szczegółów w „inny sposób”. W przeciwnym razie zaznaczyłem go jako „NAA” (nie-odpowiedź);) Nie głosuję za nim (może podać żądane szczegóły, nie sprawdziłem - czy pokazuje, która partycja zawiera co, zgodnie z opisem w moim pytaniu ?) - ale też nie zagłosuje / nie zaakceptuje;)
Izzy
Tak, pokaże, do czego służy (zawiera) partycja, po prostu nie pokaże rzeczywistej zawartości.
HasH_BrowN
1
W porządku, więc od tego momentu pasuje! Więc proszę, nie usuwaj tej odpowiedzi :)
Izzy