Apa yang setara dengan Android dari / etc / fstab?

26

Kadang-kadang saya benar-benar berharap mereka tidak main-main dengan Linux begitu banyak! Saya tahu ada /etc/fstabdi sana di suatu tempat, tetapi di mana?

Saya ingin me-mount beberapa partisi dengan sistem file alternatif (karena saya tidak suka FAT32).

barrymac
sumber

Jawaban:

19

Jangan berpikir tentang Android sebagai distribusi Linux yang banyak dimodifikasi. Karena tidak. Satu-satunya hal yang Android bagikan dengan distribusi Linux adalah kernel. Dan bahkan komponen ini dimodifikasi. Juga komponen inti lainnya, seperti libc, berbeda.

Android tidak /etc/fstab

Anda tidak perlu /etc/fstabmemasang partisi. Tapi ada IIRC tidak ada mountperintah juga. dev_mountharus bekerja (root diperlukan). Untuk menjawab judul pertanyaan Anda: Semua pemasangan sistem startup dilakukan dengan /etc/vold.fstabskrip pembantu.

Mengalir
sumber
Kira saya pengguna maemo angan maka benar-benar. Ya itu agak jauh dari linux kurasa. Terima kasih atas penunjuknya ke vold.fstab!
barrymac
3
Vold.fstab hanya memiliki kartu sd pada nexus one
gcb
7

File fstab ada di /.

Disebut di /fstab.$systemname.rcmana $systemnamedidasarkan pada properti sidik jari handset, baik diidentifikasi sebagai kategori chipset atau handset itu sendiri.

Phil Carswell
sumber
3
Itu tergantung dan bervariasi dari ROM ke ROM. Dalam AOSP-nya /etc/vold.fstab. :)
t0mm13b
dan sementara itu benar untuk CM10 - Saya memiliki / fstab.p1c - ia ditimpa saat reboot oleh sesuatu yang belum saya temukan.
jcomeau_ictx
3
Menurut source.android.com/devices/storage/config.html , di Android 4.2.2 dan sebelumnya itu vold.fstab, dan di 4.3 dan kemudian itu /fstab.<device>.
LarsH
1
di Moto E saya, file ini hanya dibaca pada sistem file yang terpasang :(
Anton Krosnev
5

Saya melihat informasi yang saling bertentangan. Satu sumber mengatakan itu hardcode , jadi bukan sesuatu yang bisa Anda ubah di sisi pengguna:

Program init khusus Android ditemukan di perangkat / sistem / init. Tambahkan pesan LOG untuk membantu Anda men-debug masalah potensial dengan makro LOG yang ditentukan dalam perangkat / sistem / init / init.c.

Program init secara langsung me-mount semua sistem file dan perangkat menggunakan nama file kode-keras atau nama perangkat yang dihasilkan dengan menyelidiki sistem file sysfs (sehingga menghilangkan kebutuhan untuk file / etc / fstab di Android).

Di tempat lain /etc/vold.fstabdan /etc/vold.confdisebutkan. Saya memilikinya di perangkat saya di bawah CM 7.1 tetapi saya tidak yakin bagaimana mereka digunakan.

Matius Baca
sumber
3
Ini semacam hardcoded, tapi agak tidak. Ada init.rcfile yang hidup di ramdisk Anda, sehingga Anda dapat menarik boot.img Anda, ekstrak ramdisk Anda, dan kemudian memodifikasi init.rcdan membungkus kembali lagi (dibahas secara singkat di sini , dan sumber Tiamat ini adalah contoh yang baik dari pengaturan mountpoints di init.rc)
eldarerathis
5

Anda dapat mengount ulang penyimpanan eksternal agar dapat dieksekusi dengan menjalankan

mount -o remount, rw /mnt/sdcard

ini akan menghapus flag noexec, nosuid dan nodev, tetapi masih akan menjadi vfat fs. Anda dapat membuat tautan ke fs ini tetapi tidak dari dalam. Remount tidak selamat dari reboot, karena file vold.fstab akan dibaca dan mereka akan di-remount saat reboot dengan flag noexec.

Jika Anda memformat ulang salah satu penyimpanan eksternal Anda ke selain vfat, maka mereka tidak akan dipasang ulang saat reboot, dan aplikasi apa pun yang Anda pindahkan ke penyimpanan eksternal apa pun tidak akan dapat digunakan. Jika Anda tidak berniat untuk menggunakan penyimpanan eksternal untuk aplikasi maka Anda dapat meng-unmount penyimpanan eksternal Anda dan menggunakannya busybox mke2fs DEVICEuntuk membuatnya ext2. Gunakan busybox newfs_msdos DEVICEuntuk mengembalikannya ke vfat dan membuatnya dapat digunakan lagi.

Catatan busybox mkfs.vfatrusak, Anda akan mendapatkan sesuatu seperti

lseek: Nilai terlalu besar untuk tipe data yang ditentukan

jadi jangan buang waktu Anda. Semua ini mengasumsikan Anda telah di-root, dan memiliki binary busybox yang berfungsi.

Mark Mikofski
sumber
2

Saya menyadari bahwa ini adalah topik lama, tetapi beberapa jawaban di sini sebenarnya menghambat upaya saya untuk belajar fstabdan Android karena mereka sangat menyiratkan bahwa fstabsituasi di Android sangat berbeda dari distribusi Linux lainnya. Dari apa yang bisa saya katakan, ternyata tidak.

Namun, membaca berbagai respons di sini membuat saya bertanya-tanya: fstabfile apa-yang setara pada perangkat saya ?

Melangkah mundur sejenak, mencatat bahwa " Android tidak memiliki / etc / fstab " mungkin tidak membantu OP karena mereka pasti sudah mengetahui hal ini. Jika ini tidak benar, pertanyaan mereka (menanyakan apa yang setara dengan Android /etc/fstab) tidak akan masuk akal. Di sisi lain, kita tahu @Flow tidak berusaha menyiratkan bahwa tidak ada padanan di Android, karena mereka menyebut salah satunya, "skrip pembantu" bernama /etc/vold.fstab.

Semua dalam semua, saya pikir takeaway dari posting @ Flow adalah bahwa pada beberapa sistem, ada file (mungkin "skrip pembantu" - saya tidak dapat memverifikasi itu di telepon saya) yang disebut /etc/vold.fstab, dan pada sistem itu, file ini adalah setara dengan /etc/fstab.

Kembali ke bertanya-tanya tentang perangkat saya sendiri, saya akan memposting temuan saya di sini karena beberapa alasan, terlepas dari usia OP:

  • Pertama, saya ingin mendokumentasikan semua dari fstabfile-gaya saya dapat menemukan di ponsel saya, Pixel 2XL.
  • Kedua, saya ingin menunjukkan kepada orang-orang, terutama pemula Linux / Android, bahwa cukup mudah untuk menemukan file-file ini di perangkat Anda sendiri ("ajari mereka memancing").
  • Ketiga, sangat membantu bagi saya untuk menulis temuan saya (bonus: saya akan selalu dapat menemukannya lagi di sini di StackExchange!).
  • Akhirnya, Google masih menyajikan halaman ini sehingga ada kemungkinan ini akan membantu orang lain selain saya.

Jadi izinkan saya mencoba merangkum semua yang telah saya pelajari dari semua ini:

Android, atau setidaknya variannya yang dapat saya akses, memang menggunakan fstabfile-style. Namun, nama, lokasi, dan fungsi yang tepat dari file-file ini bervariasi berdasarkan distribusi - artinya menurut versi dan perangkat Android, dan juga oleh ROM jika Anda menggunakan ROM khusus.

Untuk menemukan file-file pada sistem Anda, membuka emulator terminal seperti tmuxatau adb shelldan menjalankan sesuatu seperti ini: find / -type f -iname '*fstab*' 2>/dev/null. Pengalihan file 2 ( stderr) ke /dev/nullakan membuat output Anda jauh lebih bersih karena Anda akan dapat mengabaikan gempuran pesan kesalahan yang akan Anda dapatkan find, bahkan jika Anda melakukannya root.

Di sistem saya (Pixel 2XL, nama kode "taimen"), saya menemukan tiga file kandidat:

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

Dua yang pertama adalah file-file yang terpisah karena tidak ada tautan yang keras atau simbolis ke yang lain, tetapi jika Anda memilikinya diffAnda akan menemukan bahwa mereka identik. Terlihat sedikit lebih dalam, jika Anda menjalankan statfile Anda akan melihat bahwa mereka memiliki nilai Perangkat dan Inode yang sama:

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

statmelaporkan kedua nama file ini sebagai file biasa dengan masing-masing hanya satu tautan (sehingga tidak ada tautan simbolis atau simbolis yang terlibat). Saya bukan pakar sistem file tetapi yang terjadi di sini adalah perangkat yang sama telah dipasang dua kali. Anda dapat melihat ini di output dari perintah berikut, di mana satu-satunya perbedaan antara dua baris output adalah titik pemasangan (bagian segera setelah "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)

File ketiga hanya terlihat oleh saya jika saya login sebagai root, jadi jika Anda memiliki perangkat yang identik dengan milik saya, Anda masih tidak akan menemukan, atau memiliki akses ke, file ini kecuali telepon Anda di-root. File itu ada hubungannya dengan layanan yang disebut Open Device Alliance Device Management, tapi itu adalah layanan yang saya tahu sedikit tentang, jadi saya hanya akan menyebutkannya di sini, dan Anda dapat Google untuk detail tentang itu jika Anda mau.

skye --- kapten
sumber
1
Topik lama memang, dan sejak itu segalanya berubah sedikit, sampai-sampai sebagian besar perangkat yang saya buat ROM akan memiliki file fstab mandiri di salah satu /system/etcatau /vendor/etc. Terima kasih telah membawa info baru.
Andy Yan
Menemukan posting ini mencari alasan mengapa mount mengembalikan kesalahan mount: bad /etc/fstab: No such file or directory. Apakah Anda punya pemikiran atau solusi untuk ini?
Michael