Відповіді:
Не думайте про Android як про сильно модифікований дистрибутив Linux. Тому що це не так. Майже єдине, що Android ділиться з дистрибутивом Linux - це ядро. І навіть цей компонент модифікований. Також відрізняються інші основні компоненти, такі як libc.
Android не має /etc/fstab
Вам не потрібно /etc/fstab
монтувати розділ. Але mount
команда IIRC також немає . dev_mount
повинен працювати (потрібен корінь). Щоб відповісти на заголовок запитань: Все встановлення системи запуску виконується за допомогою /etc/vold.fstab
помічника сценарію.
Файл fstab знаходиться в /
.
Він називається, /fstab.$systemname.rc
де $systemname
базується на властивості відбитків телефону, або ідентифікований як категорія чіпсету або сама трубка.
/etc/vold.fstab
. :)
vold.fstab
а в 4.3 та пізніших версіях - це /fstab.<device>
.
Я бачу суперечливу інформацію. Один ресурс говорить, що це жорстко закодовано , тому не можна щось змінити на стороні користувача:
Програми init, специфічні для Android, можна знайти в пристрої / системі / init. Додайте повідомлення LOG, щоб допомогти вам налагодити потенційні проблеми з макросом LOG, визначеним у пристрої / системі / init / init.c.
Програма init безпосередньо монтує всі файлові системи та пристрої, використовуючи жорстко закодовані імена файлів або імена пристроїв, що генеруються за допомогою зондування файлової системи sysfs (тим самим усуваючи потребу в файлі / etc / fstab в Android).
В іншому місці /etc/vold.fstab
і /etc/vold.conf
згадується. Я маю їх на своєму пристрої під CM 7.1, але я не впевнений у тому, як вони використовуються.
Ви можете перезавантажити зовнішню пам’ять, яку можна виконати, запустивши
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: значення занадто велике для визначеного типу даних
тому не витрачайте час. Все це передбачає, що ви вкорінені і маєте працюючий двійковий код зайнятої коробки.
Я розумію, що це стара тема, але деякі відповіді тут насправді заважають моїм зусиллям дізнатися про fstab
Android та тому, що вони настільки сильно означають, що fstab
ситуація в Android надзвичайно відрізняється від інших дистрибутивів Linux. З того, що я можу сказати, це не так.
Однак читання різних відповідей тут змусило мене замислитися: що fstab
-еквівалентний файл або файли є на моєму пристрої?
На мить відступивши, зазначивши, що " Android не має / etc / fstab ", ймовірно, не є корисним для ОП, оскільки вони, мабуть, уже знали це. Якби це неправда, їх питання (запитання, що таке Android-еквівалент /etc/fstab
) не мало б сенсу. З іншого боку, ми знаємо, що @Flow не намагався натякнути на те, що в Android немає еквівалента, оскільки вони згадали про один з них, «помічник сценарію» /etc/vold.fstab
.
Загалом, я вважаю, що виведення з поста @ Flow - це те, що в деяких системах є файл (можливо, "помічник сценарію" - я не можу перевірити це на своєму телефоні) /etc/vold.fstab
, а в цих системах цей файл є найближчий еквівалент /etc/fstab
.
Повертаючись до питання про власний пристрій, я збираюся розмістити свої висновки з кількох причин, незважаючи на вік роботи в рамках програми:
fstab
-Style файлів можна знайти на моєму телефоні, піксель 2XL.Тож дозвольте спробувати підсумувати все, що я дізнався з усього цього:
Android або, принаймні, його варіанти, до яких я маю доступ, використовують fstab
файли -style. Однак точне ім'я, місцеположення та функції цих файлів залежать від розповсюдження - це означає версія Android та пристрою Android, а також ROM, якщо ви використовуєте користувацький ROM.
Щоб знайти ці файли у вашій системі, відкрийте емулятор терміналу , як 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
файли, ви побачите, що вони мають однакові значення пристрою та 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
. Чи є у вас думки чи рішення для цього?