Что такое рутфс? Могу ли я вносить постоянные изменения в корневую файловую систему моего устройства?

Когда я открываю эмулятор терминала и запускаю mountкоманду, это указывает, что корневая файловая система моего устройства Android ( /) имеет тип файловой системы rootfs. Что такое rootfs? Могу ли я писать на него? Сохранятся ли мои изменения даже после выключения устройства?


Примечание. Если вы являетесь разработчиком ПЗУ для Android и хотите добавить файлы в свое ПЗУ rootfs, обратитесь к соответствующему вопросу Unix.SE.

Связанный: Как распаковать и отредактировать boot.imgдля портирования ПЗУ? : ответы там объясняют, как получить и отредактировать boot.imgфайл, что позволяет постоянно изменять содержимое корневого каталога устройства.

Ответы (1)

Что такое rootfs?

Это initramfs. По сути, это предварительно заполненный RAM-диск. Он предварительно заполняется некоторым содержимым во время загрузки, обычно из cpioархива, который был скомпилирован в ядро.

Могу ли я писать на него?

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

  • Кроме того, вы можете внести изменения в rootfsкопию, загруженную в оперативную память; но, если вы это сделаете, есть четыре ошибки.

    1. Сначала вы должны получить root права на свое устройство.

    2. Затем вы должны перемонтировать файловую систему для чтения и записи.

    3. Не пишите слишком много в rootfs; если вы это сделаете, вы займете слишком много оперативной памяти, и ваше устройство будет работать медленнее.

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

Сохранятся ли мои изменения даже после выключения устройства?

Нет. Если вы создаете или изменяете файлы в rootfs, ваши изменения будут отменены при завершении работы или перезагрузке.

Что мне делать вместо записи в корневую файловую систему?

Храните свои файлы где-нибудь под /storageили /dataили /systemвместо этого. Вы можете выбрать любой из трех. Где-то ниже /storage, вероятно, лучше, так как это наиболее распространенный выбор.

Почему мое устройство не ведет себя как обычное устройство Linux и не монтирует обычную файловую систему на диске в /?

Я не знаю.

Я подозреваю, что ответ таков: Android — это не полноценный дистрибутив Linux. Он не включает полный glibc, он, вероятно, не полностью совместим с LSB, и он не чувствует себя обязанным предоставлять тонкости, которые предоставляет большинство дистрибутивов Linux (например, корневую файловую систему на диске).

В другом месте Жиль пишет:

Большинство настольных Linux-систем имеют небольшой файл initramfs, содержащий ровно столько программ и файлов конфигурации, сколько нужно для монтирования настоящей корневой файловой системы, которая затем монтируется на /, заменяя файл initramfs. Android, как и некоторые встроенные системы Linux, хранит initramfs смонтированными навсегда. initramfs Android содержит только файлы /initконфигурации adbdи несколько файлов конфигурации.


Использованная литература:

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