題:
Android與/ etc / fstab等效嗎?
barrymac
2011-10-13 22:22:09 UTC
view on stackexchange narkive permalink

有時候,我真的希望他們不要對Linux這麼亂!我知道那裡有一個 / etc / fstab ,但是在哪裡?

我想用備用文件系統掛載一些分區(因為我不喜歡FAT32)。

五 答案:
Flow
2011-10-13 22:48:03 UTC
view on stackexchange narkive permalink

不要將Android視為經過大量修改的Linux發行版。因為不是。 Android與Linux發行版共享的幾乎唯一東西是內核。甚至這個組件也被修改了。其他核心組件(如libc)也有所不同。

Android沒有 / etc / fstab

您沒有需要 / etc / fstab 來安裝分區。但是也沒有IIRC也沒有 mount 命令。 dev_mount 應該可以工作(需要root)。 要回答您的問題的標題,:所有啟動系統的安裝均使用 /etc/vold.fstab 幫助程序腳本完成。

猜猜我真的是一廂情願的maemo用戶。是的,我想它離linux很遠。感謝您指向vold.fstab的指針!
Vold.fstab在我的一個連結上只有sd卡內容
Phil Carswell
2013-01-27 01:56:15 UTC
view on stackexchange narkive permalink

fstab文件位於 / 中。

它稱為 /fstab.$systemname.rc ,其中 $ systemname 基於手機的指紋屬性,可以識別為芯片組類別還是手機本身

這取決於ROM,並且隨ROM的不同而不同。在AOSP中,其`/ etc / vold.fstab`。 :)
雖然對於CM10是正確的-我有/fstab.p1c-重新啟動時它被我還沒有發現的東西覆蓋。
根據https://source.android.com/devices/storage/config.html的說明,在Android 4.2.2和更低版本中,它是`vold.fstab`,而在4.3和更高版本中,它是`/ fstab。
在我的Moto E上,此文件位於只讀安裝的文件系統上:(
Matthew Read
2011-10-13 22:40:59 UTC
view on stackexchange narkive permalink

我看到有衝突的信息。 一種資源說它是經過硬編碼的,因此您不能更改用戶端的內容:

特定於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”文件,因此您可以提取boot.img,提取內存盤,然後修改“ init.rc”並重新打包(在[此處]簡要討論(http:/ /android-dls.com/wiki/index.php?title=HOWTO:_Unpack%2C_Edit%2C_and_Re-Pack_Boot_Images#Structure_of_boot_and_recovery_images)和[Tiamat的源代碼](http://code.tiamat-dev.com/roms/tiamat- xoom / blobs / 5d6fb66168d38f17db76dc16ac74744a71ecb2b1 / ramdisk / init.rc)是在`init.rc`中設置安裝點的一個很好的例子)
Mark Mikofski
2012-10-17 01:59:29 UTC
view on stackexchange narkive permalink

您可以通過運行

  mount -o remount,rw / mnt / sdcard  

將外部存儲重新安裝為可執行文件,這將刪除noexec ,nosuid和nodev標誌,但仍為vfat fs。您可以鏈接到此fs,但不能從內部鏈接。重新安裝不能在重新啟動後繼續存在,因為將讀取vold.fstab文件,並在重新啟動時使用noexec標誌將其重新安裝。

如果將任何外部存儲重新格式化為vfat以外的任何格式,那麼它們將不會在重新引導時重新安裝,並且您移至任何外部存儲的任何應用程序將無法使用。如果您不打算為應用程序使用外部存儲,則可以卸載外部存儲並使用 busybox mke2fs DEVICE 使其成為ext2。使用 busybox newfs_msdos設備將其返回到vfat並再次可用。

請注意 busybox mkfs.vfat 損壞,您將得到類似

搜索:對於已定義的數據類型,該值太大

,所以不要浪費時間。所有這些都假設您已經紮根,並且擁有一個工作中的busybox二進製文件。

s-k-y-e---c-a-p-t-a-i-n
2018-11-27 12:50:28 UTC
view on stackexchange narkive permalink

我意識到這是一個古老的話題,但是這裡的一些答案實際上阻礙了我學習 fstab 和Android的努力,因為它們強烈暗示著 fstab Android中的情​​況與其他Linux發行版完全不同。據我所知,不是。

但是,在這裡閱讀不同的響應讓我感到奇怪:上有什麼等價於的文件設備?

退後一會兒,注意“ Android沒有/ etc / fstab ”可能對OP沒有幫助,因為他們必須已經知道這一點。如果這是不正確的,那麼他們的問題(詢問 / etc / fstab 在Android上是什麼)將毫無意義。另一方面,我們知道@Flow並不是要暗示Android上沒有等效功能,因為他們提到了其中一個,名為 /etc/vold.fstab 的“幫助腳本”。 / p>

總而言之,我認為@Flow帖子的主要內容是,在某些系統上,有一個名為的文件(可能是“幫助腳本”,我無法在手機上驗證該文件) /etc/vold.fstab ,在那些系統上,該文件與 / etc / fstab 最接近。等效文件。

讓我想知道自己的設備,儘管有OP的年齡,但出於以下幾個原因,我將在這裡發布我的發現:

  • 首先,我要記錄全部我可以在手機Pixel 2XL上找到> fstab 樣式的文件。
  • 第二,我想向人們(尤其是Linux / Android新手)展示這些文件非常容易在自己的設備上(“教他們釣魚”)。
  • 第三,對我寫出我的發現很有幫助(獎金:我總能找到它
  • 最後,Google仍在提供此頁面,因此有機會幫助我以外的其他人。

所以讓我嘗試一下總結一下我從這一切中學到的一切:

Android或至少可以訪問的其變體確實使用了 fstab 樣式的文件。但是,這些文件的確切名稱,位置和功能會因分發而有所不同-取決於Android版本和設備,如果使用自定義ROM,也取決於ROM。

要在系統上查找這些文件,請打開終端仿真器,例如 tmux adb shell ,然後運行以下命令: find / -類型f -iname'* fstab *'2> / dev / null 。將文件2( stderr )重定向到 / dev / null 將使您的輸出更整潔,因為您可以忽略從查找,即使您是 root

在我的系統(Pixel 2XL,代碼名為“ taimen”)上,我發現了三個候選文件:

  taimen:/#查找/ -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文件:`/sbin/.core/mirror/vendor/etc/fstab.taimen'大小:1326塊:16 IO塊:512常規fileDevice:fc00h / 64512d Inode:925鏈接:1 Access:(644 / -rw-r--r--)Uid:(0 / root)Gid:(0 / root)訪問:2009-01-01 02:00: 00.000000000修改:2009-01-01 02:00:00.000000000更改:2009-01-01 02:00:00.000000000文件:`/vendor/etc/fstab.taimen'大小:1326塊:16 IO塊:512常規文件設備: fc00h / 64512d索引節點:925鏈接:1
訪問:(644 / -rw-r--r--)Uid:(0 / root)Gid:(0 / root)訪問:2009-01-01 02:00:00.000000000修改:2009-01-01 02: 00:00.000000000更改:2009-01-01 02:00:00.000000000  

stat 將這兩個文件名均報告為常規文件,每個文件均只有一個鏈接(因此,硬鏈接或符號鏈接)。我不是文件系統專家,但是這裡發生的是同一設備已掛載兩次。您可以在以下命令的輸出中看到這一點,其中輸入的兩行之間的唯一區別是安裝點(緊接在“ on”之後的部分):

  taimen:/ $ mount |在/ vendor類型ext4上的grep vendor / dev / block / dm-0(ro,seclabel,relatime,block_validity,delalloc,barrier,user_xattr)/在/sbin/.core/mirror/vendor類型ext4上的dev / block / dm-0 (ro,seclabel,relatime,block_validity,delalloc,barrier,user_xattr) 

僅當我以root用戶身份登錄時,我才能看到第三個文件,因此,如果您擁有與我相同的設備,除非您的手機已植根,否則您仍將找不到或無法訪問此文件。該文件與一項名為“開放移動聯盟設備管理”的服務有關,但這是我所知甚少的服務,因此,我在這裡只提及它,如果您願意,可以從Google那裡獲取詳細信息。 >

確實是老話題了,從那以後,事情發生了很大的變化,以至於我為之構建ROM的大多數設備在`/ system / etc`或`/ vendor / etc`中都有一個獨立的fstab文件。感謝您帶來新的信息。
找到了此帖子,搜索了mount返回錯誤`mount:bad / etc / fstab:no such file or directory`的原因。您對此有任何想法或解決方案嗎?


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...