Android tương đương với / etc / fstab là gì?


26

Đôi khi tôi thực sự ước họ đã không làm phiền Linux nhiều như vậy! Tôi biết có một cái /etc/fstabở đó ở đâu đó, nhưng ở đâu?

Tôi muốn gắn kết một số phân vùng với các hệ thống tập tin thay thế (vì tôi không thích FAT32).

Câu trả lời:


19

Đừng nghĩ về Android như một bản phân phối Linux được sửa đổi nhiều. Bởi vì nó không phải là. Điều gần như duy nhất mà Android chia sẻ với bản phân phối Linux là kernel. Và thậm chí thành phần này được sửa đổi. Ngoài ra các thành phần cốt lõi khác, như libc, khác nhau.

Android không có /etc/fstab

Bạn không cần /etc/fstabphải gắn kết một phân vùng. Nhưng IIrc cũng không có mountlệnh. dev_mountnên làm việc (yêu cầu root). Để trả lời tiêu đề câu hỏi của bạn: Tất cả việc gắn hệ thống khởi động được thực hiện với /etc/vold.fstabtập lệnh của trình trợ giúp.


Đoán tôi là một người sử dụng maemo mong muốn sau đó thực sự. Vâng, nó khá xa so với linux tôi đoán. Cảm ơn con trỏ đến vold.fstab!
barrymac

3
Vold.fstab chỉ có công cụ thẻ sd trên nexus của tôi
gcb

7

Các tập tin fstab là trong /.

Nó được gọi là /fstab.$systemname.rcnơi $systemnamedựa trên thuộc tính dấu vân tay của thiết bị cầm tay, được xác định là danh mục của chipset hoặc chính thiết bị cầm tay.


3
Đó là phụ thuộc và thay đổi từ ROM sang ROM. Trong AOSP của nó /etc/vold.fstab. :)
t0mm13b

và trong khi nó đúng với CM10 - tôi có /fstab.p1c - nó bị ghi đè khi khởi động lại bởi một cái gì đó tôi chưa tìm ra.
jcomeau_ictx

3
Theo source.android.com/devices/st Storage / config.html , trong Android 4.2.2 trở về trước vold.fstab, và trong 4.3 và sau đó là nó /fstab.<device>.
LarsH

1
trên Moto E của tôi, tệp này chỉ được đọc trên hệ thống tệp được gắn :(
Anton Krosnev

5

Tôi đang thấy thông tin mâu thuẫn. Một tài nguyên nói rằng nó được mã hóa cứng , vì vậy không phải thứ gì đó bạn có thể thay đổi phía người dùng:

Các chương trình init dành riêng cho Android được tìm thấy trong thiết bị / hệ thống / init. Thêm thông điệp LOG để giúp bạn gỡ lỗi các vấn đề tiềm ẩn với macro LOG được xác định trong thiết bị / system / init / init.c.

Chương trình init trực tiếp gắn kết tất cả các hệ thống tệp và thiết bị bằng cách sử dụng tên tệp mã hóa cứng hoặc tên thiết bị được tạo bằng cách thăm dò hệ thống tệp sysfs (do đó loại bỏ nhu cầu về tệp / etc / fstab trong Android).

Ở nơi khác /etc/vold.fstab/etc/vold.confđược đề cập. Tôi có chúng trên thiết bị của mình theo CM 7.1 nhưng tôi không chắc chúng được sử dụng như thế nào.


3
Nó là loại mã hóa cứng, nhưng loại này thì không. Có một init.rctệp tồn tại trong ramdisk của bạn, vì vậy bạn có thể kéo boot.img, giải nén ramdisk của mình, sau đó sửa đổi init.rcvà đóng gói lại một lần nữa (thảo luận ngắn gọn ở đâynguồn của Tiamat là một ví dụ hay về cài đặt mountpoint trong init.rc)
eldarerathis

5

Bạn có thể kết nối bộ nhớ ngoài của mình để có thể thực thi được bằng cách chạy

mount -o remount, rw /mnt/sdcard

điều này sẽ loại bỏ các cờ noexec, nosuid và gật đầu, nhưng nó vẫn sẽ là ff vfat. Bạn có thể tạo liên kết đến fs này nhưng không phải từ bên trong. Phần kết thúc không tồn tại khi khởi động lại, vì tệp vold.fstab sẽ được đọc và chúng sẽ được hiển thị lại khi khởi động lại với các cờ noexec.

Nếu bạn định dạng lại bất kỳ bộ nhớ ngoài nào của bạn thành bất kỳ thứ gì ngoài vfat, thì chúng sẽ không được hiển thị lại khi khởi động lại và mọi ứng dụng bạn đã chuyển sang bất kỳ bộ nhớ ngoài nào sẽ không thể sử dụng được. Nếu bạn không có ý định sử dụng bộ nhớ ngoài cho các ứng dụng thì bạn có thể ngắt kết nối bộ nhớ ngoài của mình và sử dụng busybox mke2fs DEVICEđể làm cho nó trở thành ext2. Sử dụng busybox newfs_msdos DEVICEđể trả lại cho vfat và làm cho nó có thể sử dụng lại.

Lưu ý busybox mkfs.vfatbị hỏng, bạn sẽ nhận được một cái gì đó như

lseek: Giá trị quá lớn đối với loại dữ liệu được xác định

vì vậy đừng lãng phí thời gian của bạn Tất cả điều này giả định rằng bạn đã được root và có một tệp nhị phân busybox hoạt động.


2

Tôi nhận ra rằng đây là một chủ đề cũ, nhưng một số câu trả lời ở đây thực sự cản trở nỗ lực tìm hiểu về fstabAndroid của tôi vì chúng ám chỉ mạnh mẽ rằng fstabtình huống trong Android rất khác so với các bản phân phối Linux khác. Từ những gì tôi có thể nói, nó không phải là.

Tuy nhiên, đọc các phản hồi khác nhau ở đây khiến tôi tự hỏi: fstabtập tin hoặc tập tin tương đương trên thiết bị của tôi là gì?

Lùi lại một lúc, lưu ý rằng " Android không có / etc / fstab " có lẽ không hữu ích cho OP vì họ phải đã biết điều này. Nếu điều này là sai sự thật, câu hỏi của họ (hỏi tương đương với Android /etc/fstablà gì) sẽ không có ý nghĩa gì. Mặt khác, chúng tôi biết @Flow đã không cố gắng ám chỉ rằng không có sự tương đương trên Android, vì họ đã đề cập đến một trong số họ, một "kịch bản trợ giúp" có tên /etc/vold.fstab.

Nói chung, tôi nghĩ rằng điểm xuất phát từ bài đăng của @ Flow là trên một số hệ thống, có một tệp (có thể là "tập lệnh trợ giúp" - Tôi không thể xác minh rằng trên điện thoại của mình) được gọi /etc/vold.fstabvà trên các hệ thống đó, tệp này là gần nhất tương đương với /etc/fstab.

Quay trở lại để tự hỏi về thiết bị của riêng tôi, tôi sẽ đăng những phát hiện của mình ở đây vì nhiều lý do, bất chấp tuổi của OP:

  • Đầu tiên, tôi muốn ghi lại tất cả các fstabtệp kiểu tôi có thể tìm thấy trên điện thoại của mình, Pixel 2XL.
  • Thứ hai, tôi muốn cho mọi người, đặc biệt là những người mới sử dụng Linux / Android, rằng việc tìm các tệp này trên thiết bị của bạn khá dễ dàng ("dạy chúng cách câu cá").
  • Thứ ba, nó hữu ích cho tôi để viết ra những phát hiện của mình (phần thưởng: Tôi sẽ luôn có thể tìm thấy nó một lần nữa ở đây trên StackExchange!).
  • Cuối cùng, Google vẫn đang phục vụ trang này vì vậy có khả năng điều này sẽ giúp được ai đó không phải tôi.

Vì vậy, hãy để tôi cố gắng tổng hợp tất cả mọi thứ tôi đã học được từ tất cả những điều này:

Android, hoặc ít nhất là các biến thể của nó mà tôi có quyền truy cập, sử dụng các fstabtệp kiểu. Tuy nhiên, tên, vị trí và chức năng chính xác của các tệp này thay đổi theo phân phối - có nghĩa là theo phiên bản và thiết bị Android và cũng theo ROM nếu bạn sử dụng ROM tùy chỉnh.

Để tìm các tệp này trên hệ thống của bạn, hãy mở trình giả lập thiết bị đầu cuối như tmuxhoặc adb shellchạy một cái gì đó như thế này : find / -type f -iname '*fstab*' 2>/dev/null. Việc chuyển hướng tệp 2 ( stderr) /dev/nullsẽ giúp đầu ra của bạn sạch hơn rất nhiều vì bạn sẽ có thể bỏ qua sự tấn công của các thông báo lỗi mà bạn sẽ nhận được find, ngay cả khi bạn là root.

Trên hệ thống của tôi (Pixel 2XL, tên mã "taotype"), tôi đã tìm thấy ba tệp ứng cử viên:

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

Hai cái đầu tiên là các tệp riêng biệt trong đó không phải là một liên kết cứng hoặc tượng trưng cho cái kia, nhưng nếu bạn là diffchúng, bạn sẽ thấy rằng chúng giống hệt nhau. Nhìn sâu hơn một chút, nếu bạn chạy stattrên các tệp bạn sẽ thấy rằng chúng có cùng giá trị Thiết bị và 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

statbáo cáo cả hai tên tệp này dưới dạng tệp thông thường chỉ có một liên kết (do đó không có liên kết cứng hoặc biểu tượng nào được tham gia). Tôi không phải là chuyên gia về hệ thống tập tin nhưng điều đã xảy ra ở đây là cùng một thiết bị đã được gắn hai lần. Bạn có thể thấy điều này trong đầu ra của lệnh sau, trong đó điểm khác biệt duy nhất giữa hai dòng đầu ra là các điểm gắn kết (phần ngay sau "bật"):

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)

Tệp thứ ba chỉ hiển thị với tôi nếu tôi đăng nhập bằng root, vì vậy nếu bạn có một thiết bị giống hệt tôi, bạn vẫn sẽ không tìm thấy hoặc có quyền truy cập vào tệp này trừ khi điện thoại của bạn bị root. Tập tin đó có liên quan đến một dịch vụ có tên Open Mobile Alliance Device Management, nhưng đó là dịch vụ tôi biết rất ít, vì vậy tôi sẽ chỉ đề cập đến nó ở đây và bạn có thể Google để biết chi tiết về điều đó nếu bạn muốn.


1
Thực sự chủ đề cũ, và kể từ đó mọi thứ đã thay đổi khá nhiều, đến mức hầu hết các thiết bị tôi đã tạo ROM đều có tệp fstab độc lập trong một /system/etchoặc /vendor/etc. Cảm ơn đã mang lại thông tin mới.
Andy Yan

Tìm thấy bài đăng này tìm kiếm lý do tại sao mount trả về lỗi mount: bad /etc/fstab: No such file or directory. Bạn có bất kỳ suy nghĩ hoặc một giải pháp cho điều này?
Michael
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.