Файловой tombstone для чего системе андроид. Внутреннее устройство систем Android. Файловая система os Android

19.05.2018
Тебя никогда не интересовало, как работают fastboot или ADB? Или почему смартфон под управлением Android практически невозможно превратить в кирпич? Или, может быть, ты давно хотел узнать, где кроется магия фреймворка Xposed и зачем нужны загрузочные скрипты /system/etc/init.d? А как насчет консоли восстановления (recovery)? Это часть Android или вещь в себе и почему для установки сторонней прошивки обычный рекавери не подходит? Ответы на все эти и многие другие вопросы ты найдешь в данной статье.

Как работает Android

Узнать о скрытых возможностях программных систем можно, поняв принцип их работы. В некоторых случаях сделать это затруднительно, так как код системы может быть закрыт, но в случае Android мы можем изучить всю систему вдоль и поперек. В этой статье я не буду рассказывать обо всех нюансах работы Android и остановлюсь только на том, как происходит запуск ОС и какие события имеют место быть в промежутке между нажатием кнопки питания и появлением рабочего стола.

Как прекратить совместное использование файла?

Нажмите и удерживайте имя опубликованного файла или нажмите треугольник в конце строки файла. Нажмите его, а затем нажмите кнопку «Удалить публикацию». Файл немедленно отключится, и ссылка, которую вы могли отправить, приведет к пустой странице. Имя файла восстановит свой обычный цвет, указывая, что файл больше не используется. Как загрузить или открыть файл на моем телефоне или планшете Откроется контекстное меню, содержащее кнопку «Загрузить». Файл будет сохранен в папке, настроенной вами в настройках приложения.

Попутно я буду пояснять, что мы можем изменить в этой цепочке событий и как разработчики кастомных прошивок используют эти возможности для реализации таких вещей, как тюнинг параметров ОС, расширение пространства для хранения приложений, подключение swap, различных кастомизаций и многого другого. Всю эту информацию можно использовать для создания собственных прошивок и реализации различных хаков и модификаций.

Как мне это сделать?

Для доступа к ним может потребоваться приложение для просмотра файлов. Получите доступ к настройкам приложения и снимите флажок «Показывать миниатюры». Сколько памяти на моем мобильном устройстве или планшете использует приложение Однако не все файлы, содержащиеся в вашей учетной записи, загружаются на ваше устройство, но только те файлы, которые вы хотите проверить, которые загружаются при их открытии. Как приложение управляет памятью устройства. Поэтому он сохраняет только те пункты, которые были недавно проведены.

Шаг первый. ABOOT и таблица разделов

Все начинается с первичного загрузчика. После включения питания система исполняет код загрузчика, записанного в постоянную память устройства. Затем он передает управление загрузчику aboot со встроенной поддержкой протокола fastboot, но производитель мобильного чипа или смартфона/планшета имеет право выбрать и любой другой загрузчик на его вкус. Например, компания Rockchip использует собственный, несовместимый с fastboot загрузчик, для перепрограммирования и управления которым приходится использовать проприетарные инструменты.

Как отключить приложение?

Также в настройках вы можете очистить весь кеш. Да, и это настоятельно рекомендуется, особенно если вы не установили код блокировки для мобильного телефона. Чтобы активировать блокировку приложения с помощью 4-значного кода, получите доступ к настройкам приложения. Приложение не запрашивает вас вводить коды доступа каждый раз, когда вы его открываете, при условии, что он был идентифицирован в первый раз. Если вы хотите закрыть сеанс, откройте меню приложения и выберите «Выход».




Он также может изменять настройки для всего проекта для определенных модулей. Модуль может быть статической библиотекой, совместно используемой библиотекой или автономным исполняемым файлом. Система сборки размещает только общие библиотеки в вашем пакете приложений. Кроме того, статические библиотеки могут создавать разделяемые библиотеки. В дополнение к библиотекам упаковки система сборки управляет несколькими другими подробностями.

Протокол fastboot, в свою очередь, представляет собой систему управления загрузчиком с ПК, которая позволяет выполнять такие действия, как разлочка загрузчика, прошивка нового ядра и recovery, установка прошивки и многие другие. Смысл существования fastboot в том, чтобы иметь возможность восстановить смартфон в начальное состояние в ситуации, когда все остальные средства не работают. Fastboot останется на месте, даже если в результате экспериментов ты сотрешь со смартфона все разделы NAND-памяти, содержащие Android и recovery.

Хотя реализация системы компиляции, которая их использует, различна, сходство между ними - это намеренное дизайнерское решение, целью которого является упрощение для разработчиков приложений повторного использования исходного кода для внешних библиотек. Эта переменная указывает расположение исходных файлов в дереве разработки.

Вы должны объявить эту переменную перед описанием каждого модуля. Используйте эту переменную один раз для каждого модуля в своем приложении. Каждое имя модуля должно быть уникальным и не содержать пробелов. Примечание. Следующая строка перечисляет исходные файлы с пробелами, разделяющими несколько файлов.

Получив управление, aboot проверяет таблицу разделов и передает управление ядру, прошитому в раздел с именем boot, после чего ядро извлекает в память RAM-образ из того же раздела и начинает загрузку либо Android, либо консоли восстановления. NAND-память в Android-устройствах поделена на шесть условно обязательных разделов:

  • boot - содержит ядро и RAM-диск, обычно имеет размер в районе 16 Мб;
  • recovery - консоль восстановления, состоит из ядра, набора консольных приложений и файла настроек, размер 16 Мб;
  • system - содержит Android, в современных девайсах имеет размер не менее 1 Гб;
  • cache - предназначен для хранения кешированных данных, также используется для сохранения прошивки в ходе OTA-обновления и поэтому имеет размер, сходный с размерами раздела system;
  • userdata - содержит настройки, приложения и данные пользователя, ему отводится все оставшееся пространство NAND-памяти;
  • misc - содержит флаг, определяющий, в каком режиме должна грузиться система: Android или recovery.
Кроме них, также могут существовать и другие разделы, однако общая разметка определяется еще на этапе проектирования смартфона и в случае aboot зашивается в код загрузчика. Это значит, что: 1) таблицу разделов нельзя убить, так как ее всегда можно восстановить с помощью команды fastboot oem format; 2) для изменения таблицы разделов придется разлочить и перепрошить загрузчик с новыми параметрами. Из этого правила, однако, бывают исключения. Например, загрузчик того же Rockchip хранит информацию о разделах в первом блоке NAND-памяти, так что для ее изменения перепрошивка загрузчика не нужна.

Часть кода загрузчика, определяющая таблицу разделов

Последняя строка помогает системе собрать все вместе. Этот скрипт определяет, что компилировать и как это сделать. Наконец, он предоставляет дополнительную информацию о переменных в этом разделе. Многие из этих переменных имеют предопределенные значения. В дополнение к этим переменным вы также можете определить свои собственные произвольные переменные.

  • Система компиляции использует их внутренне.
  • Система сборки также использует их внутри.
Используйте эту переменную, чтобы включить этот скрипт, прежде чем описывать новый модуль. Синтаксис для использования этой переменной. Указывает на сценарий сборки, используемый для указания предварительно скомпилированной общей библиотеки.


Особенно интересен раздел misc. Существует предположение, что изначально он был создан для хранения различных настроек независимо от основной системы, но в данный момент используется только для одной цели: указать загрузчику, из какого раздела нужно грузить систему - boot или recovery. Эту возможность, в частности, использует приложение ROM Manager для автоматической перезагрузки системы в recovery с автоматической же установкой прошивки. На ее же основе построен механизм двойной загрузки Ubuntu Touch, которая прошивает загрузчик Ubuntu в recovery и позволяет управлять тем, какую систему грузить в следующий раз. Стер раздел misc - загружается Android, заполнил данными - загружается recovery… то есть Ubuntu Touch.

Шаг второй. Раздел boot

Если в разделе misc не стоит флаг загрузки в recovery, aboot передает управление коду, расположенному в разделе boot. Это не что иное, как ядро Linux; оно находится в начале раздела, а сразу за ним следует упакованный с помощью архиваторов cpio и gzip образ RAM-диска, содержащий необходимые для работы Android каталоги, систему инициализации init и другие инструменты. Никакой файловой системы на разделе boot нет, ядро и RAM-диск просто следуют друг за другом. Содержимое RAM-диска такое:

Описание модуля

В разделе. В следующем примере показан синтаксис использования этой переменной. Вы можете указать одно или несколько из следующих значений, используя пробел в качестве разделителя между несколькими целями. Переменные в этом разделе описывают их модуль для системы сборки. Каждое описание модуля должно следовать этому основному потоку.

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

  • data - каталог для монтирования одноименного раздела;
  • dev - файлы устройств;
  • proc - сюда монтируется procfs;
  • res - набор изображений для charger (см. ниже);
  • sbin - набор подсобных утилит и демонов (adbd, например);
  • sys - сюда монтируется sysfs;
  • system - каталог для монтирования системного раздела;
  • charger - приложение для отображения процесса зарядки;
  • build.prop - системные настройки;
  • init - система инициализации;
  • init.rc - настройки системы инициализации;
  • ueventd.rc - настройки демона uventd, входящего в состав init.
Это, если можно так выразиться, скелет системы: набор каталогов для подключения файловых систем из разделов NAND-памяти и система инициализации, которая займется всей остальной работой по загрузке системы. Центральный элемент здесь - приложение init и его конфиг init.rc, о которых во всех подробностях я расскажу позже. А пока хочу обратить внимание на файлы charger и ueventd.rc, а также каталоги sbin, proc и sys.

Файл charger - это небольшое приложение, единственная задача которого - вывести на экран значок батареи. Он не имеет никакого отношения к Android и используется тогда, когда устройство подключается к заряднику в выключенном состоянии. В этом случае загрузки Android не происходит, а система просто загружает ядро, подключает RAM-диск и запускает charger. Последний выводит на экран иконку батареи, изображение которой во всех возможных состояниях хранится в обычных PNG-файлах внутри каталога res.

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

Обратите внимание, что вы можете использовать абсолютные и относительные пути к файлам. Мы рекомендуем избегать абсолютных путей к файлам. ПРИМЕЧАНИЕ. Всегда используйте слэши в файлах сборки. Он активирует правильный компилятор и флаги компоновщика во время процесса сборки.

Файл ueventd.rc представляет собой конфиг, определяющий, какие файлы устройств в каталоге sys должны быть созданы на этапе загрузки системы. В основанных на ядре Linux системах доступ к железу осуществляется через специальные файлы внутри каталога dev, а за их создание в Android отвечает демон ueventd, являющийся частью init. В нормальной ситуации он работает в автоматическом режиме, принимая команды на создание файлов от ядра, но некоторые файлы необходимо создавать самостоятельно. Они перечислены в ueventd.rc.

Для предварительно скомпилированных двоичных файлов эта переменная также определяет, от каких функций зависит бинарный файл, что помогает обеспечить правильное выполнение окончательной привязки. При его использовании система сборки может использовать соответствующие флаги для каждого модуля.

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

Каталог sbin в стоковом Android обычно не содержит ничего, кроме adbd, то есть демона ADB, который отвечает за отладку системы с ПК. Он запускается на раннем этапе загрузки ОС и позволяет выявить возможные проблемы на этапе инициализации ОС. В кастомных прошивках в этом каталоге можно найти кучу других файлов, например mke2fs, которая может потребоваться, если разделы необходимо переформатировать в ext3/4. Также модеры часто помещают туда BusyBox, с помощью которого можно вызвать сотни Linux-команд.

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

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

Каталог proc для Linux стандартен, на следующих этапах загрузки init подключит к нему procfs, виртуальную файловую систему, которая предоставляет доступ к информации обо всех процессах системы. К каталогу sys система подключит sysfs, открывающую доступ к информации о железе и его настройкам. С помощью sysfs можно, например, отправить устройство в сон или изменить используемый алгоритм энергосбережения.

Эта переменная полезна при наличии циклических зависимостей между несколькими статическими библиотеками. Когда вы используете эту переменную для создания общей библиотеки, она заставит систему компиляции добавить все объектные файлы из статических библиотек в окончательный двоичный файл. Однако это не применяется при создании исполняемых файлов.

Эта переменная содержит список дополнительных флагов компоновщика для использования при компиляции разделяемой библиотеки или исполняемого файла. Список других флагов компоновщика для системы сборки, которая будет использоваться при компиляции разделяемой библиотеки или исполняемого файла.

Файл build.prop предназначен для хранения низкоуровневых настроек Android. Позже система обнулит эти настройки и перезапишет их значениями из недоступного пока файла system/build.prop.

Корневой раздел ТВ-приставки OUYA


Шаг второй, альтернативный. Раздел recovery

В том случае, если флаг загрузки recovery в разделе misc установлен или пользователь включил смартфон с зажатой клавишей уменьшения громкости, aboot передаст управление коду, расположенному в начале раздела recovery. Как и раздел boot, он содержит ядро и RAM-диск, который распаковывается в память и становится корнем файловой системы. Однако содержимое RAM-диска здесь несколько другое.

В отличие от раздела boot, выступающего в роли переходного звена между разными этапами загрузки ОС, раздел recovery полностью самодостаточен и содержит миниатюрную операционную систему, которая никак не связана с Android. У recovery свое ядро, свой набор приложений (команд) и свой интерфейс, позволяющий пользователю активировать служебные функции.

По умолчанию, когда система компиляции обнаруживает неопределенную ссылку при попытке скомпилировать общую библиотеку, она вызывает не определенную ошибку символа. Эта ошибка может помочь вам определить ошибки в исходном коде. Обратите внимание, что этот параметр может привести к загрузке общей библиотеки во время выполнения. По этой причине вы должны выполнить обнаружение во время выполнения, чтобы иметь возможность использовать этот код во время работы безопасно.

Мы не рекомендуем делать это без уважительной причины. Эта переменная дает указание компоновщику времени выполнения помечать определенные области памяти как «только для чтения» после переноса, что затрудняет выполнение некоторых действий безопасности.

В стандартном (стоковом) recovery таких функций обычно всего три: установка подписанных ключом производителя смартфона прошивок, вайп и перезагрузка. В модифицированных сторонних recovery, таких как ClockworkMod и TWRP, функций гораздо больше. Они умеют форматировать файловые системы, устанавливать прошивки, подписанные любыми ключами (читай: кастомные), монтировать файловые системы на других разделах (в целях отладки ОС) и включают в себя поддержку скриптов, которая позволяет автоматизировать процесс прошивки и многие другие функции.

По умолчанию система сборки компилирует код с защитой строки формата. Наконец, система сборки не использует экспортированные флаги при компиляции локально. Это также влияет на индивидуальную компиляцию исходных файлов, помещая почти все флаги компилятора в файлы списка.

Мы не рекомендуем включать эту функцию по умолчанию, так как она замедляет сборку. Это приведет к созданию динамического файла, файла библиотеки, который не содержит объектных файлов, только пути к файлу фактических объектов, которые он обычно содержит. Это полезно для уменьшения размера результата компиляции. Напротив, эти библиотеки нельзя перемещать в другое место.

С помощью скриптов, например, можно сделать так, чтобы после загрузки recovery автоматически нашел на карте памяти нужные прошивки, установил их и перезагрузился в Android. Эта возможность используется инструментами ROM Manager, auto-flasher, а также механизмом автоматического обновления CyanogenMod и других прошивок.

Кастомные рекавери также поддерживают скрипты бэкапа, располагающиеся в каталоге /system/addon.d/. Перед прошивкой recovery проверяет наличие скриптов и выполняет их перед тем, как произвести прошивку. Благодаря таким скриптам gapps не исчезают после установки новой версии прошивки.

Это игнорируется в модулях из нестатических библиотек или из предварительно скомпилированных статических библиотек. Определение этой переменной приводит к следующему. 1 соответствует компилятору 2 для фильтра и 3 для ассемблера. Фильтр должен быть автономной командой оболочки, которая получает имя входного файла в качестве первого аргумента, а имя выходного файла - как второе.

Например, рассмотрим следующее. Вы можете использовать эту функцию для обеспечения иерархии исходных каталогов в системе сборки. Мобильные устройства, такие как сотовые телефоны и планшеты, имеют все больше возможностей и ресурсов, что делает его незаменимым инструментом для многих.

Шаг третий. Инициализация

Итак, получив управление, ядро подключает RAM-диск и по окончании инициализации всех своих подсистем и драйверов запускает процесс init, с которого начинается инициализация Android. Как я уже говорил, у init есть конфигурационный файл init.rc, из которого процесс узнает о том, что конкретно он должен сделать, чтобы поднять систему. В современных смартфонах этот конфиг имеет внушительную длину в несколько сот строк и к тому же снабжен прицепом из нескольких дочерних конфигов, которые подключаются к основному с помощью директивы import. Тем не менее его формат достаточно простой и по сути представляет собой набор команд, разделенных на блоки.

Экспорт производится по следующей схеме. Для экспорта требуются два шага. Эта команда отображает меню с несколькими параметрами импорта и экспорта. Мы будем запускать «Экспортный проект для просмотра на мобильных устройствах». Эта команда открывает окно, в котором мы выбираем папку назначения и выбираем, какие файлы мы хотим видеть на устройстве. По умолчанию выбираются все файлы проекта.

Поле «Место назначения». Эта папка может быть выбрана произвольно, но ее нужно помнить, потому что она будет передана на мобильное устройство. Следующий шаг, переход на устройство, может быть выполнен несколькими способами и зависит от типа устройства.

Каждый блок определяет стадию загрузки или, выражаясь языком разработчиков Android, действие. Блоки отделены друг от друга директивой on, за которой следует имя действия, например on early-init или on post-fs. Блок команд будет выполнен только в том случае, если сработает одноименный триггер. По мере загрузки init будет по очереди активировать триггеры early-init, init, early-fs, fs, post-fs, early-boot и boot, запуская таким образом соответствующие блоки команд.

Визуализация чертежей со ссылками

Например, прикосновение к лучу в плане форм приведет нас к визуализации конструкции усилений пучка. Некоторые приложения для мобильных устройств перечисляют все файлы, но переносят только те, которые выбраны для просмотра. В этом случае все файлы можно просматривать по имени, но вы не можете использовать ссылки для перехода из одного файла в другой с помощью выбора касания. Просмотр каждого файла будет зависеть от интернет-соединения во время просмотра.

Внутри папки здания вы можете получить доступ к чертежам с расширением. Поскольку файлы загружаются при их доступе, вы не можете использовать функцию ссылок в чертежах. Когда папки устройства появятся в списке проводников, перетащите или скопируйте проект на устройство.

Часть конфига init.rc из CyanogenMod


Если конфигурационный файл тянет за собой еще несколько конфигов, перечисленных в начале (а это почти всегда так), то одноименные блоки команд внутри них будут объединены с основным конфигом, так что при срабатывании триггера init выполнит команды из соответствующих блоков всех файлов. Это сделано для удобства формирования конфигурационных файлов для нескольких устройств, когда основной конфиг содержит общие для всех девайсов команды, а специфичные для каждого устройства записываются в отдельные файлы.

Наиболее примечательный из дополнительных конфигов носит имя initrc.имя_устройства.rc, где имя устройства определяется автоматически на основе содержимого системной переменной ro.hardware. Это платформенно-зависимый конфигурационный файл, который содержит блоки команд, специфичные для конкретного устройства. Кроме команд, отвечающих за тюнинг ядра, он также содержит примерно такую команду:

mount_all ./fstab.имя_устройства

Она означает, что теперь init должен подключить все файловые системы, перечисленные в файле./fstab.имя_устройства, который имеет следующую структуру:

имя_устройства_(раздела) точка_монтирования файловая_система опции_фс прочие опции

Обычно в нем содержатся инструкции по подключению файловых систем из внутренних NAND-разделов к каталогам /system (ОС), /data (настройки приложений) и /cache (кешированные данные). Однако слегка изменив этот файл, мы можем заставить init загрузить систему с карты памяти. Для этого достаточно разбить карту памяти на три 4 раздела: 1 Гб / ext4, 2 Гб / ext4, 1 Гб / ext4 и оставшееся пространство fat32. Далее необходимо определить имена разделов карты памяти в каталоге /dev (для разных устройств они отличаются) и заменить ими оригинальные имена устройств в файле fstab.

Типичное содержимое файла fstab


В конце блока boot init, скорее всего, встретит команду class_start default, которая сообщит, что далее следует запустить все перечисленные в конфиге службы, имеющие отношение к классу default. Описание служб начинается с директивы service, за которой следует имя службы и команда, которая должна быть выполнена для ее запуска. В отличие от команд, перечисленных в блоках, службы должны работать все время, поэтому на протяжении всей жизни смартфона init будет висеть в фоне и следить за этим.

Современный Android включает в себя десятки служб, но две из них имеют особый статус и определяют весь жизненный цикл системы.

Шаг четвертый. Zygote и app_process

На определенном этапе загрузки init встретит в конце конфига примерно такой блок:

service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server
class default
socket zygote stream 660 root system
onrestart write /sys/android_power/request_state wake
onrestart write /sys/power/state on
onrestart restart media
onrestart restart netd

Это описание службы Zygote, ключевого компонента любой Android-системы, который ответственен за инициализацию, старт системных служб, запуск и остановку пользовательских приложений и многие другие задачи. Zygote запускается с помощью небольшого приложения /system/bin/app_process, что очень хорошо видно на приведенном выше куске конфига. Задача app_proccess - запустить виртуальную машину Dalvik, код которой располагается в разделяемой библиотеке /system/lib/libandroid_runtime.so, а затем поверх нее запустить Zygote.

Когда все это будет сделано и Zygote получит управление, он начинает формирование среды исполнения Java-приложений с помощью загрузки всех Java-классов фреймворка (сейчас их более 2000). Затем он запускает system_server, включающий в себя большинство высокоуровневых (написанных на Java) системных сервисов, в том числе Window Manager, Status Bar, Package Manager и, что самое важное, Activity Manager, который в будущем будет ответственен за получение сигналов о старте и завершении приложений.

После этого Zygote открывает сокет /dev/socket/zygote и уходит в сон, ожидая данные. В это время запущенный ранее Activity Manager посылает широковещательный интент Intent.CATEGORY_HOME, чтобы найти приложение, отвечающее за формирование рабочего стола, и отдает его имя Zygote через сокет. Последний, в свою очередь, форкается и запускает приложение поверх виртуальной машины. Вуаля, у нас на экране появляется рабочий стол, найденный Activity Manager и запущенный Zygote, и статусная строка, запущенная system_server в рамках службы Status Bar. После тапа по иконке рабочий стол пошлет интент с именем этого приложения, его примет Activity Manager и передаст команду на старт приложения демону Zygote

Все это может выглядеть несколько непонятно, но самое главное - запомнить три простые вещи:

Системные службы и потоки ядра


Выводы

Во многом Android сильно отличается от других ОС, и с наскоку в нем не разобраться. Однако, если понять, как все работает, открываются просто безграничные возможности. В отличие от iOS и Windows Phone, операционка от гугла имеет очень гибкую архитектуру, которая позволяет серьезно менять ее поведение без необходимости писать код. В большинстве случаев достаточно подправить нужные конфиги и скрипты.

Файловая система os Android

итак в данной статье, как вы уже могли догадаться исходя из заголовка, речь пойдет об общей структуре файловой системы андроид. Описание основных директорий, способах форматирования, резервное копирование и т.д.. статья в основном ориентирована на новичков. надеюсь и остальным будет интересно почитать.
структура файловой системы linux



в андроид нет привычных многим дисков - таких как с или д. Корень файловой системы у нас: « ». к корневой директории присоединяются все остальные директории. Рассмотрим некоторые из них:

system - по названию уже можно догадаться что тут располагаются системные файлы(что то наподобии мы можем видеть в ос от майкрософт c:windows). Файлы в этой папке по умолчанию неизменяемые. Предназначены они для функционирования операционной системы. Так же тут располагаются встроенные приложения, встроенные в ос. Если мы получим рут права то сможем вносить свои изменения в данной директории. Однако делать это стоит аккуратно ибо удаленные файлы и папки не восстановятся сами по себе. В таком случае нам помогут лишь перепрошивка или бэкап. Кое - что интересное можно найти в папке systemmedia . В архиве bootanimation.zip лежат картинки составляющие анимацию при включении аппарата. Еще в корне папки system можно найти файл build.prop который содержит в себе много настроек, от описания аппарата до плотности экрана(для настройки этого конфига существует много сторонних приложений).скрин


Data - в отличии от систем тут хранятся изменяемые файлы. В под категории app как раз хранятся apk установленных нами программ.скрин

Если нам нужен апк файл какого- либо приложения то мы легко можем его там найти. А в datadata данные этих установленных программ.
Mnt -в этот раздел монтируется пользовательская память (если например установить флэш карту). Таким образом если мы поместим наш тхт файл в корень флэш карты то полный путь будет выглядеть так « mntsdcardфайл.тхт ». Сюда же монтируется встроенный диск у смартфонов без поддержки карт памяти.скрин


Как сделать wipe (сброс настроек) на android


существует несколько способов форматирования. О нескольких из них ниже
1.сброс через настройки. Заходим в настройки >> восстановление и сброс >> сброс настроек. Сбрасывает все настройки и удаляет установленное по. Перед этим можно сделать резервное копирование некоторых настроек, отметив галочкой соответствующий пункт. После перезагрузки аппарат спросит восстановить ли эти данные.
скрин


2.сброс через recovery. Полезен в той ситуации когда аппарат не включается. Потребуется рут доступ и соответственно установленный recovery. В зависимости от установленного recovery месторасположение пунктов может различаться. У меня это пункт advanced wipe. Содержит в себе:
dalvik cache – форматирование кеша виртуальной машины dalvik.
System - форматирование системного раздела.
Data – удаление всех сторонних приложений в памяти устройства а так же пользовательских настроек.
cache – удаление кеша
format sdcard – форматирование карты памяти. Удаление всего что находится на карте памяти.
format sd-ext – форматирование ехт раздела на карте памяти (если был создан такой раздел. Например для монтирования скрипта ссылающего приложения при установки на карту).
3. форматирование при помощи сервисного кода. Если набрать * 2767 * 3855 # . сразу же после набора произойдет сброс. Будьте внимательны.
Так например удаление содержимого папки datadata мы удалим настройки и данные приложений но не сами приложения. Это так же можно сделать и из настроек приложения «удалить данные». При удалении папки дата будет удалены установленные приложения.
Пожелания, поправки, дополнения к статье просьба оставлять в комментариях или ко мне в личку. статья будет дополняться. Спасибо читателям, успехов.
-----------------
Оставить комментарии можно в разделе Каталог статей
Похожие статьи