Який еквівалент Android / etc / fstab?


26

Іноді дуже хочеться, щоб вони так сильно не заплутувалися з Linux! Я знаю, що /etc/fstabтам десь є, але де?

Я хотів би встановити деякі розділи з альтернативними файловими системами (тому що мені не подобається FAT32).

Відповіді:


19

Не думайте про Android як про сильно модифікований дистрибутив Linux. Тому що це не так. Майже єдине, що Android ділиться з дистрибутивом Linux - це ядро. І навіть цей компонент модифікований. Також відрізняються інші основні компоненти, такі як libc.

Android не має /etc/fstab

Вам не потрібно /etc/fstabмонтувати розділ. Але mountкоманда IIRC також немає . dev_mountповинен працювати (потрібен корінь). Щоб відповісти на заголовок запитань: Все встановлення системи запуску виконується за допомогою /etc/vold.fstabпомічника сценарію.


Здогадуюсь, я бажаючий користувач мамо, а потім справді. Так, це досить далеко від Linux, я думаю. Дякуємо за вказівник на vold.fstab!
barrymac

3
Vold.fstab має лише мої sd карти на моєму Nexus
One

7

Файл fstab знаходиться в /.

Він називається, /fstab.$systemname.rcде $systemnameбазується на властивості відбитків телефону, або ідентифікований як категорія чіпсету або сама трубка.


3
Це залежить і залежить від ПЗУ до ПЗУ. В AOSP своє /etc/vold.fstab. :)
t0mm13b

і хоча це правда для CM10 - у мене є /fstab.p1c - він перезаписується при перезавантаженні чимось, чого я ще не зрозумів.
jcomeau_ictx

3
За даними source.android.com/devices/storage/config.html , в Android 4.2.2 та більш ранніх це версія , vold.fstabа в 4.3 та пізніших версіях - це /fstab.<device>.
LarsH

1
на моєму Moto E цей файл працює лише на змонтованій файловій системі :(
Антон Кроснев

5

Я бачу суперечливу інформацію. Один ресурс говорить, що це жорстко закодовано , тому не можна щось змінити на стороні користувача:

Програми init, специфічні для Android, можна знайти в пристрої / системі / init. Додайте повідомлення LOG, щоб допомогти вам налагодити потенційні проблеми з макросом LOG, визначеним у пристрої / системі / init / init.c.

Програма init безпосередньо монтує всі файлові системи та пристрої, використовуючи жорстко закодовані імена файлів або імена пристроїв, що генеруються за допомогою зондування файлової системи sysfs (тим самим усуваючи потребу в файлі / etc / fstab в Android).

В іншому місці /etc/vold.fstabі /etc/vold.confзгадується. Я маю їх на своєму пристрої під CM 7.1, але я не впевнений у тому, як вони використовуються.


3
Це вид жорсткого коду, але це не так. Існує init.rcфайл, який живе у вашому ramdisk, тому ви можете витягнути свій boot.img, витягнути свій ramdisk, а потім змінити init.rcта перепакувати його знову (коротко обговорено тут , і джерелоinit.rc
Тіамата

5

Ви можете перезавантажити зовнішню пам’ять, яку можна виконати, запустивши

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: значення занадто велике для визначеного типу даних

тому не витрачайте час. Все це передбачає, що ви вкорінені і маєте працюючий двійковий код зайнятої коробки.


2

Я розумію, що це стара тема, але деякі відповіді тут насправді заважають моїм зусиллям дізнатися про fstabAndroid та тому, що вони настільки сильно означають, що fstabситуація в Android надзвичайно відрізняється від інших дистрибутивів Linux. З того, що я можу сказати, це не так.

Однак читання різних відповідей тут змусило мене замислитися: що fstab-еквівалентний файл або файли є на моєму пристрої?

На мить відступивши, зазначивши, що " Android не має / etc / fstab ", ймовірно, не є корисним для ОП, оскільки вони, мабуть, уже знали це. Якби це неправда, їх питання (запитання, що таке Android-еквівалент /etc/fstab) не мало б сенсу. З іншого боку, ми знаємо, що @Flow не намагався натякнути на те, що в Android немає еквівалента, оскільки вони згадали про один з них, «помічник сценарію» /etc/vold.fstab.

Загалом, я вважаю, що виведення з поста @ Flow - це те, що в деяких системах є файл (можливо, "помічник сценарію" - я не можу перевірити це на своєму телефоні) /etc/vold.fstab, а в цих системах цей файл є найближчий еквівалент /etc/fstab.

Повертаючись до питання про власний пристрій, я збираюся розмістити свої висновки з кількох причин, незважаючи на вік роботи в рамках програми:

  • По- перше, я хочу , щоб документувати всі з fstab-Style файлів можна знайти на моєму телефоні, піксель 2XL.
  • По-друге, я хочу показати людям, особливо новачкам Linux / Android, що знайти ці файли досить просто на власному пристрої ("навчіть їх ловити рибу").
  • По-третє, мені корисно записати свої висновки (бонус: я завжди зможу знайти її знову тут, на StackExchange!).
  • Нарешті, Google все ще обслуговує цю сторінку, тому є ймовірність, що це допоможе комусь, крім мене.

Тож дозвольте спробувати підсумувати все, що я дізнався з усього цього:

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 отримати детальну інформацію про це, якщо хочете.


1
Стара тема, справді, і з тих пір все змінилося досить сильно, настільки, що більшість пристроїв, для яких я побудував ROM, мали б окремий файл fstab у будь-якому /system/etcабо /vendor/etc. Дякуємо, що ви надали свіжу інформацію.
Енді Ян

Знайшла цю публікацію, шукаючи причину, чому mount повертає помилку mount: bad /etc/fstab: No such file or directory. Чи є у вас думки чи рішення для цього?
Майкл
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.