Как я могу идентифицировать разделы Android-устройства из оболочки?

Вопрос:

Я пытаюсь найти, какой раздел используется для чего, например. /boot, /recovery, /system, от adb shell. Хотя это тривиально для разделенных в данный момент разделов (с помощью команд mount или df, например, как идентифицировать имена разделов), это кажется сложным когда речь идет о разделах, которые в настоящее время не установлены (например, /recovery при загрузке в «пользовательском режиме» ).

Там учебник на XDA, но это не сработало ни для одного из устройств, которые я пробовал:

  • cat /proc/mtd: это пустое или несуществующее
  • cat /proc/emmc: это пустой или несуществующий
  • cat /proc/dumchar_info: не существует (MTK/MediaTek)
  • ls -al /dev/block/platform/*/by-name: либо несуществующий, либо не имеющий требуемых деталей
  • parted только что дал Error: Can't have a partition outside the disk! на /dev/block/mmcblk1 (при этом просто отсутствует столбец «name» для /dev/block/mmcblk0).

Так что я в недоумении. Я знаю, что есть такие приложения, как DiskInfo, которые могут отображать эти детали, поэтому их необходимо хранить где-нибудь на устройстве. Тем не менее, изменение устройства (путем установки приложения) в моем случае не является вариантом.

Итак, в основном мой вопрос сжигает:

Где на Android-устройстве хранится эта информация?

Если возможно, предпочтительным является общий подход. Если нет, то «try-and-err» нескольких подходов (if..elseif..fi) также будет работать.

Для фона: примером использования будет «Я хочу получить только раздел /boot» (получить его изображение через dd). Это не будет сделано, чтобы сначала захватить все разделы и оценить позже — слишком много времени и слишком много данных;) — Это уже описывает намерение: написание небольшого инструмента для извлечения определенного образа диска.

Лучший ответ:

Поскольку для достижения этого не существует «уникального способа», я начал комбинировать идеи из allover, объединив их в script (или, скорее, в библиотеку script), чтобы они проверялись последовательно (до тех пор, пока был сделан хороший удар) и интегрировал это в мой «Инструмент документации к устройствам» с именем Adebar. Желающие могут найти его в файле lib/partitions.lib. Поскольку Adebar является открытым исходным кодом (GPLv2), не стесняйтесь копировать и использовать его — или разблокировать проект и улучшить его.

Полное решение — это немного длинный пост для публикации здесь (как сказано, вы можете его захватить в Github), но поскольку политика SE включает в себя как минимум общую часть сообщения, вот что он делает:

Различные источники предоставляют разные наборы деталей, поэтому сначала пробуют «лучшие», а затем повторяются до тех пор, пока не будет найдено что-то.

  • /proc/dumchar_info дает наиболее подробные сведения, поэтому сначала это делается. Счастливые пользователи MTK получат это.
  • /proc/mtd — второй лучший источник.
  • /proc/emmc должен иметь почти столько же, сколько и предыдущие кандидаты, но немного сложно использовать
  • /dev/block/platform/*/by-name, перекрестно проверено с помощью…
  • /proc/partitions перекрестная проверка с помощью /proc/mounts дает нам, по крайней мере, разделы, установленные

Итак, script, который я построил, в основном идет по источникам в этом порядке, останавливаясь, как только он смог собрать детали (например, если /proc/dumchar_info было найдено, не нужно разбирать все остальные). Все они вставляются в отдельные функции, возвращая данные с использованием одной и той же структуры, можно даже объединить результаты из всех них.

Если кто-то может придумать лучшее решение, я, конечно, всегда открыт для идеи:)

Ответ №1

Вы можете получить информацию о смонтированном разделе в Linux как qaru.site/questions/355818/…, но я не думаю, что ядро ​​Linux не знает о boot и recovery, если /dev/block/platform/**/by-name не имеет его.

Итак, вы можете использовать текущую смонтированную информацию, чтобы угадать, какой раздел boot или recovery, или что-то еще в /dev/block/ *, который не установлен.

Фактически, fastboot отправляет только имя раздела, который вы хотите выполнить. Это означает, что только загрузчик для fastboot знает информацию, я думаю.

https://github.com/android/platform_system_core/blob/8163104b3feb575a321b194a70ecb9873a70b29d/fastboot/fastboot_protocol.txt

Оцените статью
TechArks.Ru
Добавить комментарий

Как я могу идентифицировать документ, созданный последним, используя Lotusscript из коллекции документов, которые имеют один и тот же номер документа?

Вопрос:

У меня есть база данных, содержащая около 20 000 документов. Один из видов классифицируется по номеру документа и сортируется таким образом, что созданный документ является первым документом в каждой категории. Некоторые категории (номера документов) связаны только с документом, связанным с ним, но другие имеют несколько документов, связанных с ним. Я хотел бы определить документ, созданный последним в каждой категории, и написать в поле, определяющее его как последнюю ревизию. Я думал, что это будет легко, но у меня возникают трудности. Любая помощь будет оценена по достоинству.

MJ

Лучший ответ:

Это может быть просто, если у вас есть представление, как вы говорите, которое сортируется так, что созданный документ является первым документом внутри каждой категории. В этом случае, если вам нужно пройти это представление, вам просто нужно будет получить первый документ после каждой категории и установить значение для одного из элементов документа.

Например,

Dim s as New NotesSession
Dim db as NotesDatabase
Dim view as NotesView
Dim nav As NotesViewNavigator
Dim viewEntry as NotesViewEntry
Dim docEntry as NotesViewEntry
Dim doc as NotesDocument

Set db = s.CurrentDatabase
Set view = db.GetView("My Categorized and Sorted View")
Set nav = view.CreateViewNav
Set viewEntry = nav.GetFirst  ' Should be your first category

While Not (viewEntry Is Nothing)

    Set docEntry = nav.GetNextDocument(viewEntry)  'The first document entry after the category
    Set doc = docEntry.Document
    doc.ReplaceItemValue("Some item", "This is the latest doc")
    doc.Save(false, false)
    Set viewEntry = nav.GetNextCategory(viewEntry)  'Jump to the next category

Wend

Оцените статью
TechArks.Ru
Добавить комментарий