Android与/ etc / fstab等效吗?


26

有时我真的希望他们不要对Linux这么乱!我知道那里有一个/etc/fstab,但是在哪里?

我想用备用文件系统挂载一些分区(因为我不喜欢FAT32)。

Answers:


19

不要将Android视为经过大量修改的Linux发行版。因为不是。Android与Linux发行版共享的几乎唯一东西是内核。甚至这个组件也被修改了。其他核心组件(如libc)也有所不同。

Android没有 /etc/fstab

您无需/etc/fstab安装分区。但是也没有IIRC mount命令。dev_mount应该工作(需要root)。回答您的问题的标题:所有启动系统的安装均通过/etc/vold.fstab帮助程序脚本完成。


猜猜我真的是一厢情愿的maemo用户。是的,我想它离linux很远。感谢您指向vold.fstab的指针!
barrymac

3
Vold.fstab在我的Nexus 1上只有sd卡的东西
gcb 2012年

7

fstab文件位于中/

这就是所谓的/fstab.$systemname.rc地方$systemname是基于手机的指纹特性,无论是认定为芯片或手机本身的范畴。


3
这取决于ROM,并且随ROM的不同而不同。在AOSP中/etc/vold.fstab。:)
t0mm13b 2013年

虽然对于CM10是正确的-我有/fstab.p1c-重新启动时它被我还没有发现的东西覆盖。
jcomeau_ictx

3
根据source.android.com/devices/storage/config.html的说明,在Android 4.2.2及更低版本中为vold.fstab,在4.3及更高版本中为/fstab.<device>
LarsH 2015年

1
在我的Moto E上,此文件位于只读安装的文件系统上:(
Anton Krosnev

5

我看到有冲突的信息。 一种资源说它是硬编码的,因此您不能更改用户端的内容:

特定于Android的初始化程序位于device / system / init中。添加LOG消息,以帮助您调试device / system / init / init.c中定义的LOG宏的潜在问题。

init程序使用硬编码文件名或通过探测sysfs文件系统生成的设备名称直接挂载所有文件系统和设备(从而消除了Android中对/ etc / fstab文件的需要)。

在其他地方/etc/vold.fstab/etc/vold.conf被提及。我将它们安装在CM 7.1下的设备上,但不确定如何使用它们。


3
它是硬编码的,但不是。这里有一个init.rc文件,它的生命在你的ramdisk,这样你就可以拉你的boot.img,提取您的RAMDISK,然后再修改init.rc,再重新包装(简要讨论这里,和魔龙的来源是设置在安装点的一个很好的例子init.rc
eldarerathis

5

您可以通过运行以下命令将外部存储重新挂载为可执行文件

mount -o remount, rw /mnt/sdcard

这将删除noexec,nosuid和nodev标志,但仍为vfat fs。您可以链接到此fs,但不能从内部链接。重新安装不能在重新启动后继续存在,因为将读取vold.fstab文件,并在重新启动时使用noexec标志对其进行重新安装。

如果将任何外部存储重新格式化为vfat以外的任何格式,则它们将不会在重新引导时重新挂载,并且您移至任何外部存储的任何应用程序将无法使用。如果您不打算将外部存储用于应用程序,则可以卸载外部存储并将busybox mke2fs DEVICE其用于ext2。用于busybox newfs_msdos DEVICE将其返回到vfat并再次可用。

注意busybox mkfs.vfat已损坏,您将得到类似

lseek:值对于定义的数据类型太大

所以不要浪费你的时间。所有这些都假设您已经扎根,并且拥有一个正常工作的busybox二进制文件。


2

我意识到这是一个古老的话题,但是这里的一些答案实际上阻碍了我学习fstab和使用Android的努力,因为它们强烈暗示着fstabAndroid 的情况与其他Linux发行版截然不同。据我所知,事实并非如此。

但是,在这里阅读不同的响应使我感到奇怪:我的设备fstab上有什么等效文件?

退后一会,注意“ Android没有/ etc / fstab ”可能对OP没有帮助,因为他们必须已经知道这一点。如果这是不正确的,那么他们的问题(询问与Android等效的问题/etc/fstab)将毫无意义。另一方面,我们知道@Flow并不是要暗示Android上没有等效功能,因为他们提到了其中一个名为的“帮助脚本” /etc/vold.fstab

总而言之,我认为@Flow帖子的主要内容是,在某些系统上,有一个文件(可能是“帮助脚本”,我无法在手机上验证)/etc/vold.fstab,而在那些系统上,此文件是最接近的等价于/etc/fstab

回到考虑自己的设备的问题,尽管有OP的年龄,但出于以下几个原因,我将在这里发表我的发现:

  • 首先,我要记录所有的的fstab风格文件,我可以找到我的电话,像素2XL上。
  • 其次,我想向人们(尤其是Linux / Android新手)展示,在您自己的设备上找到这些文件非常容易(“教他们钓鱼”)。
  • 第三,对我写出发现很有帮助(奖金:我将始终可以在StackExchange上再次找到它!)。
  • 最终,Google仍在提供此页面,因此这可能会帮助我以外的其他人。

因此,让我尝试总结一下我从所有这些中学到的一切:

Android或至少可以访问的其变体确实使用fstab-style文件。但是,这些文件的确切名称,位置和功能会因发行版本而异-取决于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在文件上运行,则会发现它们具有相同的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将这两个文件名都报告为常规文件,每个文件名只有一个链接(因此不涉及硬链接或符号链接)。我不是文件系统专家,但是这里发生的是同一设备已挂载两次。您可以在以下命令的输出中看到这一点,其中输入的两行之间的唯一区别是安装点(紧接在“ on”之后的部分):

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用户身份登录时,第三个文件才对我可见,因此,如果您拥有与我的设备相同的设备,除非您的手机已植根,否则您仍将找不到或无法访问此文件。该文件与一项称为“开放移动联盟设备管理”的服务有关,但这是我所知甚少的服务,因此,我在这里只提及它,如果需要,您可以在Google上找到有关该文件的详细信息。


1
确实是老话题,从那以后,事情发生了很大变化,以至于我为ROM构建的大多数设备在/system/etc或中都有一个独立的fstab文件/vendor/etc。感谢您带来新的信息。
Andy Yan

查找此帖子以查找mount返回错误的原因mount: bad /etc/fstab: No such file or directory。您对此有任何想法或解决方案吗?
迈克尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.