Was ist das Android-Äquivalent von / etc / fstab?

26

Manchmal wünschte ich mir wirklich, sie hätten nicht so viel mit Linux gemacht! Ich weiß, dass /etc/fstabda irgendwo eine ist, aber wo?

Ich möchte einige Partitionen mit alternativen Dateisystemen mounten (weil mir FAT32 nicht gefällt).

Barrymac
quelle

Antworten:

19

Denken Sie nicht an Android als stark veränderte Linux-Distribution. Weil es nicht so ist. Das einzige, was Android mit einer Linux-Distribution teilt, ist der Kernel. Und auch diese Komponente wird modifiziert. Auch andere Kernkomponenten, wie die libc, unterscheiden sich.

Android hat keine /etc/fstab

Sie müssen keine /etc/fstabPartition mounten. Aber es gibt auch keinen IIRC- mountBefehl. dev_mountsollte funktionieren (root erforderlich). So beantworten Sie Ihre Fragen title: Die gesamte Systemstartbereitstellung erfolgt mit dem /etc/vold.fstabHilfsskript.

Fließen
quelle
Ich denke, ich bin dann wirklich ein Wunsch-Maemo-Benutzer. Ja, es ist ziemlich weit weg von Linux, denke ich. Danke für den Hinweis auf vold.fstab!
Barrymac
3
Vold.fstab hat nur SD-Karten auf meinem Nexus One
GB
7

Die fstab-Datei befindet sich in /.

Es heißt, /fstab.$systemname.rcwo $systemnamebasiert auf der Fingerabdruck-Eigenschaft des Mobilteils, entweder als Kategorie des Chipsatzes oder des Mobilteils selbst identifiziert.

Phil Carswell
quelle
3
Das ist abhängig und variiert von ROM zu ROM. In AOSP sein /etc/vold.fstab. :)
t0mm13b
und während es für CM10 gilt - ich habe /fstab.p1c - wird es beim Neustart von etwas überschrieben, was ich noch nicht herausgefunden habe.
jcomeau_ictx
3
Laut source.android.com/devices/storage/config.html ist dies in Android 4.2.2 und früher vold.fstabund in 4.3 und später der Fall/fstab.<device> .
LarsH
1
Auf meinem Moto E ist diese Datei auf nur lesbar gemountetem Dateisystem :(
Anton Krosnev
5

Ich sehe widersprüchliche Informationen. Eine Ressource gibt an, dass sie fest codiert ist , sodass Sie die Benutzerseite nicht ändern können:

Android-spezifische Init-Programme finden Sie in device / system / init. Fügen Sie LOG-Meldungen hinzu, um mögliche Probleme mit dem in device / system / init / init.c definierten LOG-Makro zu beheben.

Das init-Programm stellt alle Dateisysteme und Geräte direkt bereit, indem entweder fest codierte Dateinamen oder Gerätenamen verwendet werden, die durch Prüfen des sysfs-Dateisystems generiert wurden (wodurch die Notwendigkeit einer / etc / fstab-Datei in Android entfällt).

An anderer Stelle /etc/vold.fstabund /etc/vold.confwerden erwähnt. Ich habe sie unter CM 7.1 auf meinem Gerät, bin mir aber nicht sicher, wie sie verwendet werden.

Matthew Read
quelle
3
Es ist irgendwie hartcodiert, aber irgendwie nicht. Es gibt eine init.rcDatei, die Leben in Ihrer RAM - Disk, so dass Sie Ihren boot.img ziehen können, extrahieren Sie Ihren RAM - Disk, und dann wird das ändern init.rcund es umpacken wieder (kurz diskutiert hier , und Tiamats Quelle ist ein gutes Beispiel für Einhängepunkte bei der Einrichtung init.rc)
eldarerathis
5

Sie können Ihren externen Speicher erneut aktivieren, damit er ausgeführt werden kann

mount -o remount, rw /mnt/sdcard

Dadurch werden die Flags noexec, nosuid und nodev entfernt, es handelt sich jedoch weiterhin um vfat fs. Sie können Links zu dieser Datei erstellen, aber nicht von innen. Die erneute Bereitstellung übersteht einen Neustart nicht, da die Datei vold.fstab gelesen und beim Neustart mit den noexec-Flags erneut bereitgestellt wird.

Wenn Sie einen externen Speicher anders als vfat formatieren, wird dieser beim Neustart nicht erneut bereitgestellt, und alle Apps, die Sie auf einen externen Speicher verschoben haben, können nicht verwendet werden. Wenn Sie keinen externen Speicher für Apps verwenden möchten, können Sie die Bereitstellung Ihres externen Speichers aufheben und busybox mke2fs DEVICEihn zu ext2 machen. Verwendenbusybox newfs_msdos DEVICE , um es an vfat zurückzugeben und es wieder verwendbar zu machen.

Ist die Notiz busybox mkfs.vfatkaputt, bekommst du sowas

lseek: Wert zu groß für definierten Datentyp

Verschwende also nicht deine Zeit. All dies setzt voraus, dass Sie verwurzelt sind und über eine funktionierende Busybox-Binärdatei verfügen.

Mark Mikofski
quelle
2

Mir ist klar, dass dies ein altes Thema ist, aber einige der Antworten hier haben meine Bemühungen, etwas über fstabAndroid zu lernen, tatsächlich behindert, weil sie so stark implizieren, dass diefstab Situation in Android extrem von anderen Linux-Distributionen unterscheidet. Soweit ich das beurteilen kann, ist es das nicht.

Beim Lesen der verschiedenen Antworten habe ich mich jedoch gefragt: Welche fstabäquivalenten Dateien befinden sich auf meinem Gerät?

Einen Moment zurückzutreten und zu bemerken, dass " Android keine / etc / fstab hat ", ist für das OP wahrscheinlich nicht hilfreich, da sie dies bereits gewusst haben müssen. Wenn dies nicht wahr wäre, würde ihre Frage (nach dem Äquivalent von Android fragen /etc/fstab) keinen Sinn ergeben. Andererseits wissen wir, dass @Flow nicht angedeutet hat, dass es auf Android kein Äquivalent gibt, da sie eines davon erwähnt haben, ein "Hilfsskript" namens /etc/vold.fstab.

Alles in allem glaube ich, dass in @ Flows Post auf einigen Systemen eine Datei (möglicherweise ein "Hilfsskript" - ich kann das auf meinem Telefon nicht überprüfen) aufgerufen /etc/vold.fstabwurde und auf diesen Systemen diese Datei lautet das nächste Äquivalent zu /etc/fstab.

Nachdem ich mich wieder über mein eigenes Gerät gewundert habe, werde ich meine Ergebnisse aus verschiedenen Gründen hier veröffentlichen, trotz des Alters des OP:

  • Zunächst möchte ich allefstab Dateien im Stil eines Pixels 2XL dokumentieren, die ich auf meinem Telefon finden kann.
  • Zweitens möchte ich Leuten, insbesondere Linux- / Android-Neulingen, zeigen, dass es ziemlich einfach ist, diese Dateien auf Ihrem eigenen Gerät zu finden ("Bringen Sie ihnen das Angeln bei").
  • Drittens ist es hilfreich, dass ich meine Ergebnisse aufschreibe (Bonus: Ich werde sie hier bei StackExchange immer wieder finden!).
  • Schließlich wird diese Seite von Google immer noch geschaltet, sodass die Möglichkeit besteht, dass dies jemand anderem als mir hilft.

Lassen Sie mich also alles zusammenfassen, was ich daraus gelernt habe:

Android oder zumindest die Varianten, auf die ich Zugriff habe, verwenden fstab-Style-Dateien. Der genaue Name, der Speicherort und die Funktion dieser Dateien hängen jedoch von der Verteilung ab - dh von der Android-Version und dem Gerät sowie vom ROM, wenn Sie ein benutzerdefiniertes ROM verwenden.

Um diese Dateien auf Ihrem System zu finden, öffnen Sie ein Terminal - Emulator wie tmuxoder adb shellund laufen etwas wie folgt aus : find / -type f -iname '*fstab*' 2>/dev/null. Durch die Umleitung von Datei 2 ( stderr) /dev/nullwird Ihre Ausgabe viel sauberer, da Sie den Ansturm an Fehlermeldungen ignorieren können, den Sie erhalten find, selbst wenn Sie es sind root.

Auf meinem System (ein Pixel 2XL, Codename "taimen") habe ich drei Kandidatendateien gefunden:

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

Die ersten beiden Dateien sind separate Dateien, da weder eine feste noch eine symbolische Verknüpfung zur anderen besteht. Wenn Sie diffsie jedoch verwenden, werden Sie feststellen, dass sie identisch sind. Wenn Sie etwas statgenauer hinschauen, werden Sie feststellen, dass die Dateien dieselben Geräte- und Inode-Werte haben:

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

statMeldet diese beiden Dateinamen als reguläre Dateien mit jeweils nur einem Link (es handelt sich also nicht um harte oder symbolische Links). Ich bin kein Dateisystemexperte, aber hier ist passiert, dass dasselbe Gerät zweimal gemountet wurde. Sie können dies in der Ausgabe des folgenden Befehls sehen, wobei die einzigen Unterschiede zwischen den beiden Ausgabezeilen in den Einhängepunkten (dem Teil unmittelbar nach "on") bestehen:

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)

Die dritte Datei ist nur für mich sichtbar, wenn ich mich als root anmelde. Wenn Sie also ein Gerät haben, das mit meinem identisch ist, können Sie diese Datei immer noch nicht finden oder darauf zugreifen, es sei denn, Ihr Telefon ist root. Diese Datei hat mit einem Dienst zu tun, der Open Mobile Alliance-Geräteverwaltung heißt. Da mir dieser Dienst jedoch nur sehr wenig bekannt ist, werde ich ihn hier nur erwähnen. Wenn Sie möchten, können Sie bei Google weitere Informationen dazu abrufen.

Himmel - Kapitän
quelle
1
Altes Thema in der Tat, und seitdem hat sich einiges geändert, so dass die meisten Geräte, für die ich ROMs erstellt habe, eine eigenständige fstab-Datei in entweder /system/etcoder haben /vendor/etc. Vielen Dank für die neuen Informationen.
Andy Yan
In diesem Beitrag wurde nach dem Grund gesucht, warum mount den Fehler zurückgibt mount: bad /etc/fstab: No such file or directory. Hast du irgendwelche Gedanken oder eine Lösung dafür?
Michael