Câu trả lời:
Đừ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/fstab
phải gắn kết một phân vùng. Nhưng IIrc cũng không có mount
lệnh. dev_mount
nê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.fstab
tập lệnh của trình trợ giúp.
Các tập tin fstab là trong /
.
Nó được gọi là /fstab.$systemname.rc
nơi $systemname
dự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.
/etc/vold.fstab
. :)
vold.fstab
, và trong 4.3 và sau đó là nó /fstab.<device>
.
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
và /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.
init.rc
tệ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.rc
và đóng gói lại một lần nữa (thảo luận ngắn gọn ở đây và nguồn của Tiamat là một ví dụ hay về cài đặt mountpoint trong init.rc
)
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.vfat
bị 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.
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ề fstab
Android của tôi vì chúng ám chỉ mạnh mẽ rằng fstab
tì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: fstab
tậ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/fstab
là 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.fstab
và 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:
fstab
tệp kiểu tôi có thể tìm thấy trên điện thoại của mình, Pixel 2XL.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 fstab
tệ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ư tmux
hoặc adb shell
chạ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/null
sẽ 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à diff
chú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 stat
trê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
stat
bá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.
/system/etc
hoặc /vendor/etc
. Cảm ơn đã mang lại thông tin mớ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?