Android / etc / fstab เทียบเท่ากับอะไร


26

บางครั้งฉันก็หวังว่าพวกเขาจะไม่ยุ่งกับ Linux มากนัก! ฉันรู้ว่ามี/etc/fstabบางอย่างในนั้น แต่ที่ไหน

ฉันต้องการติดตั้งพาร์ติชั่นบางตัวด้วยระบบไฟล์ทางเลือก (เพราะฉันไม่ชอบ FAT32)

คำตอบ:


19

อย่าคิดว่า Android เป็นลีนุกซ์ที่มีการดัดแปลงแก้ไขอย่างมาก เพราะมันไม่ใช่ สิ่งเดียวที่ Android แชร์กับการแจกจ่าย Linux คือเคอร์เนล และแม้กระทั่งองค์ประกอบนี้ก็มีการปรับเปลี่ยน ส่วนประกอบหลักอื่น ๆ เช่น libc นั้นแตกต่างกัน

Android ไม่มี /etc/fstab

คุณไม่จำเป็นต้อง/etc/fstabติดตั้งพาร์ติชัน แต่มี IIRC ไม่มีmountคำสั่งอย่างใดอย่างหนึ่ง dev_mountควรทำงาน (จำเป็นต้องใช้รูท) ในการตอบคำถามของคุณชื่อ: การติดตั้งระบบเริ่มต้นทั้งหมดทำได้ด้วย/etc/vold.fstabสคริปต์ผู้ช่วยเหลือ


เดาฉันเป็นผู้ใช้ maemo ที่ปรารถนาจริงๆแล้ว ใช่มันค่อนข้างไกลจากลินุกซ์ฉันเดา ขอบคุณสำหรับตัวชี้ไปที่ vold.fstab!
barrymac

3
Vold.fstab มี แต่การ์ด SD บน Nexus หนึ่งของฉัน
gcb

7

ไฟล์ fstab /อยู่ใน

มันเรียกว่า/fstab.$systemname.rcที่$systemnameจะขึ้นอยู่กับสถานที่ให้บริการโทรศัพท์มือถือของลายนิ้วมือทั้งระบุว่าเป็นหมวดหมู่ของชิปเซ็ตหรือโทรศัพท์มือถือที่ตัวเอง


3
ที่ขึ้นอยู่กับและแตกต่างจาก ROM ถึง ROM ใน AOSP /etc/vold.fstabของมัน :)
t0mm13b

และในขณะที่มันเป็นจริงสำหรับ CM10 - ฉันมี /fstab.p1c - มันถูกเขียนทับเมื่อรีบูตโดยสิ่งที่ฉันยังไม่ได้คิด
jcomeau_ictx

3
ตามsource.android.com/devices/storage/config.htmlใน Android 4.2.2 และก่อนหน้านี้มันเป็นvold.fstabและใน 4.3 /fstab.<device>และต่อมาก็
LarsH

1
ใน Moto E ของฉันไฟล์นี้เป็นระบบไฟล์ที่ติดตั้งแบบอ่านอย่างเดียวแล้ว :(
Anton Krosnev

5

ฉันเห็นข้อมูลที่ขัดแย้งกัน แหล่งข้อมูลหนึ่งบอกว่ามันเป็นฮาร์ดโค้ดดังนั้นไม่ใช่สิ่งที่คุณสามารถเปลี่ยนฝั่งผู้ใช้ได้:

พบโปรแกรม init เฉพาะสำหรับ Android ในอุปกรณ์ / ระบบ / init เพิ่มข้อความ LOG เพื่อช่วยให้คุณแก้ปัญหาที่อาจเกิดขึ้นกับมาโคร LOG ที่กำหนดไว้ในอุปกรณ์ / ระบบ / init / init.c

โปรแกรม init เมานต์ระบบไฟล์และอุปกรณ์ทั้งหมดโดยตรงโดยใช้ชื่อไฟล์แบบเข้ารหัสหรือชื่ออุปกรณ์ที่สร้างโดยการตรวจสอบระบบไฟล์ sysfs (ดังนั้นจึงไม่จำเป็นต้องใช้ไฟล์ / etc / fstab ใน Android)

ที่อื่น/etc/vold.fstabและ/etc/vold.confถูกกล่าวถึง ฉันมีพวกมันในอุปกรณ์ภายใต้ CM 7.1 แต่ฉันไม่แน่ใจว่าจะใช้งานอย่างไร


3
มันเป็นฮาร์ดโค้ด แต่มันไม่ใช่ มีinit.rcไฟล์ที่อยู่ใน ramdisk ของคุณดังนั้นคุณสามารถดึง boot.img ของคุณแยก ramdisk ของคุณแล้วแก้ไขinit.rcและบรรจุใหม่อีกครั้ง (กล่าวถึงสั้น ๆที่นี่และแหล่งที่มาของ Tiamatเป็นตัวอย่างที่ดีของการตั้งค่าจุดเมานท์init.rc)
eldarerathis

5

คุณสามารถติดตั้งที่เก็บข้อมูลภายนอกของคุณเพื่อให้สามารถเรียกใช้งานได้โดยการเรียกใช้

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 ที่ใช้งานได้


2

ฉันรู้ว่านี่เป็นหัวข้อเก่า แต่คำตอบบางส่วนที่นี่ขัดขวางความพยายามของฉันในการเรียนรู้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
  • ประการที่สองฉันต้องการแสดงคนโดยเฉพาะมือใหม่ Linux / Android ว่ามันค่อนข้างง่ายในการค้นหาไฟล์เหล่านี้บนอุปกรณ์ของคุณเอง ("สอนให้พวกเขาตกปลา")
  • ประการที่สามมันมีประโยชน์สำหรับฉันที่จะเขียนสิ่งที่ค้นพบของฉัน (โบนัส: ฉันจะสามารถหามันได้อีกครั้งที่นี่ใน StackExchange!)
  • ในที่สุด Google ยังคงให้บริการหน้านี้ขึ้นดังนั้นจึงมีโอกาสที่จะช่วยเหลือคนอื่นที่ไม่ใช่ฉัน

ดังนั้นให้ฉันพยายามสรุปทุกสิ่งที่ฉันได้เรียนรู้จากทั้งหมดนี้:

Android หรืออย่างน้อยมันเป็นรุ่นที่ฉันสามารถเข้าถึงได้ใช้ประโยชน์จากfstabไฟล์สไตล์ อย่างไรก็ตามชื่อตำแหน่งและฟังก์ชั่นที่แน่นอนของไฟล์เหล่านี้จะแตกต่างกันไปตามการแจกจ่าย - ความหมายตามเวอร์ชั่นและอุปกรณ์ Android และ ROM หากคุณใช้ ROM ที่กำหนดเอง

เพื่อหาไฟล์เหล่านี้บนระบบของคุณเปิดจำลอง terminal เหมือนtmuxหรือและเรียกใช้อะไรเช่นนี้adb shell find / -type f -iname '*fstab*' 2>/dev/nullเปลี่ยนเส้นทางของไฟล์ที่ 2 ( stderr) เพื่อ/dev/nullจะทำให้การส่งออกมากสะอาดของคุณที่คุณจะสามารถที่จะเพิกเฉยต่อการโจมตีของข้อความผิดพลาดที่คุณจะได้รับจากแม้ว่าคุณจะมีfindroot

ในระบบของฉัน (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)

ไฟล์ที่สามจะปรากฏแก่ฉันเท่านั้นหากฉันลงชื่อเข้าใช้ด้วยรูทดังนั้นหากคุณมีอุปกรณ์ที่เหมือนกันกับฉันคุณจะยังไม่พบหรือเข้าถึงไฟล์นี้เว้นแต่โทรศัพท์ของคุณจะรูท ไฟล์ดังกล่าวเกี่ยวข้องกับบริการที่เรียกว่าการจัดการอุปกรณ์ Open Mobile Alliance แต่นั่นเป็นบริการที่ฉันรู้เพียงเล็กน้อยดังนั้นฉันจะพูดถึงที่นี่และคุณสามารถใช้ Google เพื่อขอรายละเอียดเกี่ยวกับสิ่งนี้หากคุณต้องการ


1
หัวข้อเก่าแน่นอนและตั้งแต่นั้นสิ่งที่มีการเปลี่ยนแปลงไม่น้อยในขอบเขตที่อุปกรณ์ส่วนใหญ่ที่ผมได้สร้างรอมสำหรับจะมีไฟล์ fstab แบบสแตนด์อโลนทั้งในหรือ/system/etc /vendor/etcขอขอบคุณที่แจ้งข้อมูลใหม่
Andy Yan

mount: bad /etc/fstab: No such file or directoryพบการค้นหาโพสต์นี้ด้วยเหตุผลที่ว่าทำไมติดผลตอบแทนข้อผิดพลาด คุณมีความคิดหรือวิธีแก้ไขปัญหานี้หรือไม่?
Michael
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.