Answers:
不要将Android视为经过大量修改的Linux发行版。因为不是。Android与Linux发行版共享的几乎唯一东西是内核。甚至这个组件也被修改了。其他核心组件(如libc)也有所不同。
Android没有 /etc/fstab
您无需/etc/fstab
安装分区。但是也没有IIRC mount
命令。dev_mount
应该工作(需要root)。回答您的问题的标题:所有启动系统的安装均通过/etc/vold.fstab
帮助程序脚本完成。
fstab文件位于中/
。
这就是所谓的/fstab.$systemname.rc
地方$systemname
是基于手机的指纹特性,无论是认定为芯片或手机本身的范畴。
/etc/vold.fstab
。:)
vold.fstab
,在4.3及更高版本中为/fstab.<device>
。
我看到有冲突的信息。 一种资源说它是硬编码的,因此您不能更改用户端的内容:
特定于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下的设备上,但不确定如何使用它们。
init.rc
文件,它的生命在你的ramdisk,这样你就可以拉你的boot.img,提取您的RAMDISK,然后再修改init.rc
,再重新包装(简要讨论这里,和魔龙的来源是设置在安装点的一个很好的例子init.rc
)
您可以通过运行以下命令将外部存储重新挂载为可执行文件
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二进制文件。
我意识到这是一个古老的话题,但是这里的一些答案实际上阻碍了我学习fstab
和使用Android的努力,因为它们强烈暗示着fstab
Android 的情况与其他Linux发行版截然不同。据我所知,事实并非如此。
但是,在这里阅读不同的响应使我感到奇怪:我的设备fstab
上有什么等效文件?
退后一会,注意“ Android没有/ etc / fstab ”可能对OP没有帮助,因为他们必须已经知道这一点。如果这是不正确的,那么他们的问题(询问与Android等效的问题/etc/fstab
)将毫无意义。另一方面,我们知道@Flow并不是要暗示Android上没有等效功能,因为他们提到了其中一个名为的“帮助脚本” /etc/vold.fstab
。
总而言之,我认为@Flow帖子的主要内容是,在某些系统上,有一个文件(可能是“帮助脚本”,我无法在手机上验证)/etc/vold.fstab
,而在那些系统上,此文件是最接近的等价于/etc/fstab
。
回到考虑自己的设备的问题,尽管有OP的年龄,但出于以下几个原因,我将在这里发表我的发现:
fstab
风格文件,我可以找到我的电话,像素2XL上。因此,让我尝试总结一下我从所有这些中学到的一切:
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上找到有关该文件的详细信息。
/system/etc
或中都有一个独立的fstab文件/vendor/etc
。感谢您带来新的信息。
mount: bad /etc/fstab: No such file or directory
。您对此有任何想法或解决方案吗?