Ответы:
Не думайте об Android как о сильно модифицированном дистрибутиве Linux. Потому что это не так. Почти единственное, что разделяет Android с дистрибутивом Linux, - это ядро. И даже этот компонент модифицируется. Также другие основные компоненты, такие как libc, отличаются.
Android не имеет /etc/fstab
Вам не нужно /etc/fstab
монтировать раздел. Но IIRC также не имеет mount
команды. dev_mount
должно работать (требуется рут). Чтобы ответить на ваши вопросы заголовок: Все установки системы запуска выполняется с помощью /etc/vold.fstab
вспомогательного скрипта.
Файл fstab находится в /
.
Он называется /fstab.$systemname.rc
где $systemname
, основываясь на свойстве отпечатка пальца телефона, который определяется как категория набора микросхем или самого телефона.
/etc/vold.fstab
. :)
vold.fstab
, а в 4.3 и более поздних версиях она есть /fstab.<device>
.
Я вижу противоречивую информацию. Один ресурс говорит, что он жестко запрограммирован , поэтому вы не можете что-то изменить на стороне пользователя:
Специфичные для Android программы init находятся в устройстве / system / init. Добавьте сообщения LOG, чтобы помочь вам отладить потенциальные проблемы с макросом LOG, определенным в device / system / init / init.c.
Программа init непосредственно монтирует все файловые системы и устройства, используя жестко запрограммированные имена файлов или имена устройств, сгенерированные при проверке файловой системы sysfs (тем самым устраняя необходимость в файле / etc / fstab в Android).
В другом месте /etc/vold.fstab
и /etc/vold.conf
упоминаются. У меня они есть на моем устройстве под CM 7.1, но я не уверен, как они используются.
init.rc
вашем виртуальном диске есть файл, так что вы можете вытащить свой boot.img, извлечь его и затем изменить init.rc
и снова упаковать его (кратко обсуждается здесь , а исходный код Tiamat - хороший пример установки точек монтирования в init.rc
)
Вы можете перемонтировать внешнее хранилище, чтобы оно было исполняемым
mount -o remount, rw /mnt/sdcard
это удалит флаги noexec, nosuid и nodev, но все равно будет vfat fs. Вы можете делать ссылки на этот фс, но не изнутри. Перемонтирование не переживает перезагрузку, потому что файл vold.fstab будет прочитан, и они будут перемонтированы при перезагрузке с флагами noexec.
Если вы переформатируете какое-либо внешнее хранилище во что-либо, кроме vfat, при перезагрузке они не будут перемонтированы, и любые приложения, которые вы переместили в любое внешнее хранилище, не будут использоваться. Если вы не собираетесь использовать внешнее хранилище для приложений, вы можете отключить внешнее хранилище и использовать busybox mke2fs DEVICE
его для ext2. Используйте, busybox newfs_msdos DEVICE
чтобы вернуть его в vfat и сделать его снова пригодным для использования.
Примечание busybox mkfs.vfat
сломано, вы получите что-то вроде
lseek: значение слишком велико для определенного типа данных
так что не трать свое время. Все это предполагает, что вы root и работающий бинарный код busybox.
Я понимаю, что это старая тема, но некоторые ответы здесь на самом деле препятствовали моим попыткам узнать об fstab
Android и об этом, потому что они настолько сильно подразумевают, что fstab
ситуация в Android чрезвычайно отличается от других дистрибутивов Linux. Из того, что я могу сказать, это не так.
Однако чтение разных ответов заставило меня задуматься: что такое fstab
файл или файлы на моем устройстве?
Остановившись на мгновение, отметив, что « Android не имеет / etc / fstab », вероятно, не поможет OP, так как они, должно быть, уже знали это. Если бы это было не так, их вопрос (спрашивающий, каков эквивалент Android /etc/fstab
) не имел бы никакого смысла. С другой стороны, мы знаем, что @Flow не пытался подразумевать, что на Android не было эквивалента, поскольку они упомянули один из них, «вспомогательный скрипт» с именем /etc/vold.fstab
.
В целом, я думаю, что вывод из поста @ Flow заключается в том, что в некоторых системах вызывается файл (возможно, «вспомогательный скрипт» - я не могу проверить это на своем телефоне) /etc/vold.fstab
, а в этих системах этот файл ближайший эквивалент /etc/fstab
.
Возвращаясь к размышлениям о моем собственном устройстве, я собираюсь опубликовать здесь свои результаты по нескольким причинам, несмотря на возраст ОП:
fstab
-Style файлов можно найти на моем телефоне, пиксель 2XL.Итак, позвольте мне подвести итог всему, чему я научился из всего этого:
Android или, по крайней мере, его варианты, к которым у меня есть доступ, используют fstab
файлы -style. Однако точное имя, расположение и функции этих файлов различаются в зависимости от дистрибутива, то есть от версии и устройства Android, а также от ПЗУ, если вы используете пользовательское ПЗУ.
Чтобы найти эти файлы в вашей системе, откройте эмулятор терминала , как tmux
и adb shell
и запустить что - то вроде этого: find / -type f -iname '*fstab*' 2>/dev/null
. Перенаправление файла 2 ( stderr
) /dev/null
сделает ваш вывод намного чище, так как вы сможете игнорировать поток сообщений об ошибках, которые вы получите find
, даже если это так root
.
В моей системе (Pixel 2XL, кодовое имя "taimen") я нашел три файла-кандидата:
taimen:/ # find / -type f -iname '*fstab*' 2>/dev/null
/sbin/.core/mirror/vendor/etc/fstab.taimen
/vendor/etc/fstab.taimen
/data/data/com.android.omadm.service/files/dm/dmt_data/fstab
Первые два являются отдельными файлами, поскольку ни одна из них не является жесткой или символической ссылкой на другую, но если вы diff
их найдете, вы обнаружите, что они идентичны. Если посмотреть немного глубже, если вы запустите stat
файлы, вы увидите, что они имеют одинаковые значения Device и Inode:
taimen:/ # stat /sbin/.core/mirror/vendor/etc/fstab.taimen /vendor/etc/fstab.taimen
File: `/sbin/.core/mirror/vendor/etc/fstab.taimen'
Size: 1326 Blocks: 16 IO Blocks: 512 regular file
Device: fc00h/64512d Inode: 925 Links: 1
Access: (644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2009-01-01 02:00:00.000000000
Modify: 2009-01-01 02:00:00.000000000
Change: 2009-01-01 02:00:00.000000000
File: `/vendor/etc/fstab.taimen'
Size: 1326 Blocks: 16 IO Blocks: 512 regular file
Device: fc00h/64512d Inode: 925 Links: 1
Access: (644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2009-01-01 02:00:00.000000000
Modify: 2009-01-01 02:00:00.000000000
Change: 2009-01-01 02:00:00.000000000
stat
сообщает оба этих имени файла как обычные файлы с только одной ссылкой каждый (таким образом, жесткие или символические ссылки не используются). Я не эксперт по файловой системе, но здесь произошло то, что одно и то же устройство было смонтировано дважды. Это можно увидеть в выходных данных следующей команды, где единственными различиями между двумя строками вывода являются точки монтирования (часть сразу после «вкл»):
taimen:/ $ mount | grep vendor
/dev/block/dm-0 on /vendor type ext4 (ro,seclabel,relatime,block_validity,delalloc,barrier,user_xattr)
/dev/block/dm-0 on /sbin/.core/mirror/vendor type ext4 (ro,seclabel,relatime,block_validity,delalloc,barrier,user_xattr)
Третий файл виден мне только в том случае, если я войду в систему как пользователь root, поэтому если у вас есть устройство, идентичное моему, вы все равно не найдете или не получите доступ к этому файлу, пока ваш телефон не будет рутирован. Этот файл имеет отношение к сервису под названием Open Mobile Alliance Device Management, но это сервис, о котором я знаю очень мало, поэтому я просто упомяну его здесь, и вы можете узнать подробности об этом в Google, если хотите.
/system/etc
или /vendor/etc
. Спасибо за привлечение свежей информации.
mount: bad /etc/fstab: No such file or directory
. Есть ли у вас какие-либо мысли или решение для этого?