Файловая система OS Android. Введение.

ScriptMakeR

Клуб переводчиков
Сообщения
1,423
Реакции
457
Скажем так, проба пера.
И так что же из себя представляют особенности файловой системы OS Android?
Изначально, пользователь аппарата на OS Android видит привычные память аппарата и память карты памяти. Но, установив какой-нибудь из сторонних файловых менеджеров, да еще и с приобретением прав Root, пользователь может столкнуться с тем, что во, вроде бы, находящейся в памяти аппарата папке отоброжаются папки и файлы из карты памяти.
Почму это проиодит?
Очень рекомендую к прочтению Файловая система Ubuntu.
Дело в том, что в файловой системе OS Android нет привычного разделения на диски, как в OS Windows. Тут все находится в одной корневой папке. Все Ваши флеши, карты и т.д. монтируются/прописываются в указанную папку.
Если привести аналогию с OS Windows, то выклядит это примерно так. У Вас есть изначальный диск C выполняющий роль корневой папки. Все последующие подключаемые диски/флешки монтируются/отображаются в указанной папке, находящейся на диске C. Физически, у Вас получается несколько разных дисков, а в файловой системе у Вас только одна корневая папка, к которой в указанных местах подключены Ваши диски/флешки. Причем, монтироваться может как диск/флешка целиком, так и отдельная папка. Сразу скажу, что монтировать папку с немонтированного диска/флешки не получится, его (диска/флеши) просто еще нет в системе.
В OS Android реализовано автоматическое монтирование/подключение дисков/флешек, при этом во встоенных (и большинстве сторонних) файловых менеджерах они отображаются (для удобства пользователя) как отдельные диски/флешки, но, фактически, в файловой систаме они монтируются/прописываются в одну из папок, находящихся в корневой папке.
Теперь о самом монтировании.
В монтировании есть два основных пункта. Это точка монтирования и объект монтирования. Точка монтирования - это указанная папка, в которую монтируется объект монтирования. Объект монтирования - это то, что монтируется в точку монтирования.
Приведу пример, как бы это выглядело на OS Windows. На диске C у меня есть папки Program Files и Windows. В папке Windows я создаю папку Mount и в нее монтирую папку Program Files. Теперь, переходя в папку Windows/Mount/ мне отображается содержимое папки Program Files. При этом, содержимое папки Program Files мне доступно как из самой этой папки, так и из папки Windows/Mount/.
Надеюсь, я достаточно понятно изъяснил свои мысли.
Жду замечаний, комментариев и, конечно, критиков.
 
Приведу пример, как бы это выглядело на OS Windows. На диске C у меня есть папки Program Files и Windows. В папке Windows я создаю папку Mount и в нее монтирую папку Program Files. Теперь, переходя в папку Windows/Mount/ мне отображается содержимое папки Program Files. При этом, содержимое папки Program Files мне доступно как из самой этой папки, так и из папки Windows/Mount/.
Данный пример больше похож на символьную ссылку, а не монтирование. Под монтирование я понимаю, подключение раздела или устройства.
Очень рекомендую к прочтению Файловая система Ubuntu.
Сами читали?
 
Под монтирование я понимаю, подключение раздела или устройства.
А в тут нет разделения на разделы/устройства/каталоги. Все они монтируются одинаково. Можно монтировать как физический диск, так и логический диск, так и каталог. В самой файловой системе нет разделения на диски. Есть только дерево каталогов.
Да. Правда давно это было. Пытался изложить наиболее понятным, для неподготовленного пользователя, языком.
 
А в тут нет разделения на разделы/устройства/каталоги.
Можно монтировать как физический диск, так и логический диск, так и каталог.
Попробуйте на ubunte смонтировать в /mnt какой нибудь существующий каталог и сообщите о результатах.
А то что они просто отображаются каталогами это да.
 
glax24,
Я, конечно, извиняюсь, но я не собираюсь сейчас спорить о принципах монтирования в Linux. Тем более, что я в этом не достаточно подкован. Но, как я уже сказал:
Пытался изложить наиболее понятным, для неподготовленного пользователя, языком.
И как Вы уже сказали:
А то что они просто отображаются каталогами это да
Этого, на мой взгляд, достаточно, для того, чтобы иметь начальное представление об особенностях файловой системы OS Android.
Я просто не знаю, как обычному пользователю по другому объяснить, что тут просто нет никаких дисков/флешек. Физически они есть, а в файловой системе их нет. Т.е. они есть, но не как отдельные диски, а как часть, уже существующей, файловой системы.
Да, манера изъяснения совсем не точная. Но и указанную мной информацию я сам осознал не с первого прочтения. Поэтому и пытался отобразить все на пальцах.
Прошу оценивать данный материал, как вводную информацию. Скажим так, предисловие/подготовительная группа.
Не сочтите это за отказ от критики. Не отрицаю того, что я могу быть не прав. Просто, раз уж пошел разбор полетов, то хотелось бы узнать, что и как нужно изменить. Чтобы и суть сохранить, и в излишние подробности не удариться. Как-никак =введение=.
 
Ничего не могу сказать про linux и убунту,не пользовался.
Но насчет остального - я лично понял,было интересно.
По тексту - надо бы оформление красиво сделать и картинки залить.
 
По тексту - надо бы оформление красиво сделать и картинки залить.
Прав таких не имею :(
А какими картинками данный текст можно оформить? Пару скринов с файлового менеджера, да профиль самого робота? Что-то не вяжутся у меня картинки с данным текстом.
 
Прав таких не имею :(
А какими картинками данный текст можно оформить? Пару скринов с файлового менеджера, да профиль самого робота? Что-то не вяжутся у меня картинки с данным текстом.
Соглашусь с glax24. "Монтирование" -совсем не то слово, которое можно было бы употребить к файловой системе Android. Тем более, Вы ScriptMakeR, сами отметили, что монтирование - тоже штука достаточно широкая (физические, логические разделы можно монтировать). Потому просто замените слово "монтировать" другим применительно к Android и все будет хорошо.
 
Theriollaria,
Статью перерабатываю, вчера на сон грядущий делал. Замечания принимаю. Постараюсь учесть недочеты, но и оставить все простым языком.
Либо, если употребляете слово "примонтировать" то уточняйте, что что процесс отличается от классического для линуксоидов. Тогда тоже вопросов и докапываний не будет. Хотя это тоже странно т.к. Андроид, по сути, сам является надстройкой а не полноценной ОС.
 
Theriollaria,
Хочу еще раз обратить внимание на то, что данный материал нацелен на людей не подкованных в тонкостях и терминах не то что Linux систем, но и любых других ОС в принципе. Я сам не претендую на звание гуру линукса, мне и до уверенного пользователя далеко. Просто, когда человек, не знакомый с некоторыми особенностями данной ФС, вдруг обнаруживает, что содержимое его флешки отображается не только в привычно выделенной флешке, а еще и в трех местах памяти аппарата, возникает вопрос. Как так-то?
 
Theriollaria,
Хочу еще раз обратить внимание на то, что данный материал нацелен на людей не подкованных в тонкостях и терминах не то что Linux систем, но и любых других ОС в принципе. Я сам не претендую на звание гуру линукса, мне и до уверенного пользователя далеко. Просто, когда человек, не знакомый с некоторыми особенностями данной ФС, вдруг обнаруживает, что содержимое его флешки отображается не только в привычно выделенной флешке, а еще и в трех местах памяти аппарата, возникает вопрос. Как так-то?

Тогда, как вариант,:


Если привести аналогию с OS Windows, то выглядит это примерно так. У Вас есть изначальный диск C выполняющий роль корневой папки. Все последующие подключаемые диски/флешки отображаются в указанной папке, находящейся на диске C. При этом, физически, у Вас есть память Android отдельно и отдельно подключаемые устройства.

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

PS: У меня было 2 диска "С:\" и один я стер. Потому что зачем мне 2 одинаковых диска "С:\"?:Biggrin:
 
Поддержу glax24 на счет символьных ссылок (точнее говоря, точек монтирования для каталога) и вставлю еще свои 5 копеек.
Сразу скажу, что монтировать папку с немонтированного диска/флешки не получится, его (диска/флеши) просто еще нет в системе.
Тавтология. Не понятно, что подразумевается. Может, что объекту монтирования еще не назначен идентификатор,
т.к. устройство не было инициализировано или не подключено.
Дело в том, что в файловой системе OS Android нет привычного разделения на диски, как в OS Windows. Тут все находится в одной корневой папке. Физически, у Вас получается несколько разных дисков, а в файловой системе у Вас только одна корневая папка, к которой в указанных местах подключены Ваши диски/флешки.
Все сказанное - очень и очень относительное различие, тем более что:
при этом во встоенных (и большинстве сторонних) файловых менеджерах они отображаются (для удобства пользователя) как отдельные диски/флешки...
Дело в том, что в Windows можно организовать абсолютно такую же иерархию
и даже работать с объектами монтирования напрямую, не подключая их к точке монтирования тома.
Рекомендую для чтения: команда mountvol. Но полный шик начинается с возможности загрузки ОС с виртуального диска VHD,
который можно создать средствами самой системы командами diskpart.
К сожалению, про Linux добавить мне нечего, так как мало знаком.
 
По первой формулировке тоже как-то запутано, мне показалось. Я понял о чем речь...

А вот скажем, для меня, корневой каталог андроида(с точки зрения школьника) - это бельевая веревка с прищепками)). Можно привесить все что угодно, хоть модули, хоть диски. Причем можно подвесить одну папку как рукава у рубашки - один к веревке, а второй к другой прищепке, на которой уже что-то висит))
 
Последнее редактирование:
Команды эмулятора терминала Android
один ньюанс
faq
PHP:
Теперь нужно примонтировать Ваш Linux раздел (здесь это sda1) и еще несколько важных директорий:
sudo mount /dev/sda1 /mnt
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys  /mnt/sys
:~$ mount --help

Использование:
mount [-lhV]
mount -a [options]
mount [options] [--source] <source> | [--target] <directory>
mount [options] <source> <directory>
mount <operation> <mountpoint> [<target>]

Опции:
-a, --all mount all filesystems mentioned in fstab
-c, --no-canonicalize don't canonicalize paths
-f, --fake dry run; skip the mount(2) syscall
-F, --fork fork off for each device (use with -a)
-T, --fstab <path> alternative file to /etc/fstab
-h, --help display this help text and exit
-i, --internal-only don't call the mount.<type> helpers
-l, --show-labels lists all mounts with LABELs
-n, --no-mtab don't write to /etc/mtab
-o, --options <list> comma-separated list of mount options
-O, --test-opts <list> limit the set of filesystems (use with -a)
-r, --read-only mount the filesystem read-only (same as -o ro)
-t, --types <list> limit the set of filesystem types
--source <src> explicitly specifies source (path, label, uuid)
--target <target> explicitly specifies mountpoint
-v, --verbose say what is being done
-V, --version display version information and exit
-w, --rw, --read-write mount the filesystem read-write (default)

-h, --help display this help and exit
-V, --version output version information and exit

Source:
-L, --label <label> synonym for LABEL=<label>
-U, --uuid <uuid> synonym for UUID=<uuid>
LABEL=<label> specifies device by filesystem label
UUID=<uuid> specifies device by filesystem UUID
PARTLABEL=<label> specifies device by partition label
PARTUUID=<uuid> specifies device by partition UUID
<device> specifies device by path
<directory> mountpoint for bind mounts (see --bind/rbind)
<file> regular file for loopdev setup

Operations:
-B, --bind mount a subtree somewhere else (same as -o bind)
-M, --move move a subtree to some other place
-R, --rbind mount a subtree and all submounts somewhere else
--make-shared mark a subtree as shared
--make-slave mark a subtree as slave
--make-private mark a subtree as private
--make-unbindable mark a subtree as unbindable
--make-rshared recursively mark a whole subtree as shared
--make-rslave recursively mark a whole subtree as slave
--make-rprivate recursively mark a whole subtree as private
--make-runbindable recursively mark a whole subtree as unbindable

For more details see mount(8)
:~$ umount --help

Использование:
umount [-hV]
umount -a [options]
umount [options] <source> | <directory>

Опции:
-a, --all unmount all filesystems
-A, --all-targets unmount all mountpoints for the given device in the
current namespace
-c, --no-canonicalize don't canonicalize paths
-d, --detach-loop if mounted loop device, also free this loop device
--fake dry run; skip the umount(2) syscall
-f, --force force unmount (in case of an unreachable NFS system)
-i, --internal-only don't call the umount.<type> helpers
-n, --no-mtab don't write to /etc/mtab
-l, --lazy detach the filesystem now, clean up things later
-O, --test-opts <list> limit the set of filesystems (use with -a)
-R, --recursive recursively unmount a target with all its children
-r, --read-only in case unmounting fails, try to remount read-only
-t, --types <list> limit the set of filesystem types
-v, --verbose say what is being done

-h, --help display this help and exit
-V, --version output version information and exit

For more details see umount(8).
 
Что ж. Мысли в слух.
На досуге обратился к гуглу, для разъяснения вопроса. Информации много, но, как на зло, вся она раскидана по разным местам, да еще и на буржуйском языке.
Если хватит мозгов, то соберу все это в одну кучку и постараюсь изложить простым и понятным языком.
В самой файловой системе присутствует множество точек монтирования и симлинков. Плюс, еще не совсем мной осознанная файловая система в пользовательском пространстве (FUSE). Хотелось бы собрать наиболее полную информацию по сабжу, но не перегруженную тех. терминами и понятную простому обывателю.
 
В моём примере загрузочные файлы монтируются в /mnt , производится настройка, потом отмонтируется обратно в /
Восстановление используя chroot:
Запустите систему с LiveCD/USB и откройте
терминал.
Для этого можно нажать Alt+F2 и ввести команду:

gnome-terminal
Далее необходимо узнать Вашу таблицу разделов. Используйте команду:

sudo fdisk -l
На экран должна быть выведена примерно такая таблица:

/dev/sda1 29 8369 66999082+ 83 Linux
/dev/sda2 * 8370 13995 45190845 7 HPFS/NTFS
/dev/sda3 13996 14593 4803435 5 Extended

Теперь нужно примонтировать Ваш Linux раздел (здесь это sda1) и еще несколько важных директорий:
>sudo mount /dev/sda1 /mnt
>sudo mount --bind /dev /mnt/dev
>sudo mount --bind /proc /mnt/proc
>sudo mount --bind /sys /mnt/sys

Теперь перейдем в окружающую среду chroot:
>sudo chroot /mnt

Теперь необходимо установить GRUB, используя команду:
>grub-install /dev/sda

Если все прошло успешно, выходим из chroot командой:
>exit

Теперь необходимо отмонтировать разделы:
>sudo umount /mnt/dev
>sudo umount /mnt/proc
>sudo umount /mnt/sys
>sudo umount /mnt

Если Вы монтировали раздел /boot воспользуйтесь командой:
>sudo umount /mnt/boot

Затем перезагрузим Ваш компьютер командой:
>sudo reboot

При необходимости Вы можете обновить меню загрузчика командой:
>sudo update-grub
p.s. imho То есть это делается для разблокировки работающих файлов и устройств, так как иначе они будут не доступны на изменение.

mount --bind
Команда mount с ключом --bind или с коротким ключом -B применяется в системах на ядре Linux (начиная с 2.4.0) для создания синонима каталога в дереве файловой системы. К примеру, команда:

mount --bind /mnt/cdrom/Files /var/ftp/cdrom

позволит обращаться к файлам из /mnt/cdrom/Files через путь /var/ftp/cdrom, где /var/ftp/cdrom — некий уже существующий (возможно, пустой) каталог (его настоящее содержимое будет недоступно до момента размонтирования). Можно также вместо отдельной опции --bind написать -o bind, что будет иметь аналогичное действие. Также это позволяет добавить правило в файл /etc/fstab для монтирования при старте системы:
 
Последнее редактирование:
Phoenix,
Дело в том, что в Вашем примере идет речь про восстановление загрузчика Linux. К Android данная информация относится весьма относительно. Извиняюсь за тавтологию :)
Там все ох как интересно. Но, постепенно, в голове складывается более менее осознанная картинка. Мешает то, что его версий ужасно много. И так же, ну или почти так же, много вариаций монтирования основных разделов. Есть между ними много общего, но некоторые особенности могут кардинально отличаться. Каждый производитель изгаляется как хочет.
 
Назад
Сверху Снизу