Odpowiedzi:
Nie myśl o Androidzie jako mocno zmodyfikowanej dystrybucji Linuksa. Ponieważ tak nie jest. Prawie jedyną rzeczą, którą Android dzieli z dystrybucją Linuksa, jest jądro. I nawet ten komponent jest modyfikowany. Różnią się także inne podstawowe komponenty, takie jak libc.
Android nie ma /etc/fstab
Nie musisz /etc/fstab
montować partycji. Ale nie ma też IIRC bez mount
polecenia. dev_mount
powinien działać (wymagany root). Aby odpowiedzieć na pytanie: Montaż w systemie startowym odbywa się za pomocą /etc/vold.fstab
skryptu pomocniczego.
Plik fstab jest w /
.
To się nazywa, /fstab.$systemname.rc
gdzie $systemname
jest oparte na właściwości odcisków palców słuchawki, albo zidentyfikowanej jako kategoria mikroukładu lub samego zestawu słuchawkowego.
/etc/vold.fstab
. :)
vold.fstab
, a w 4.3 i późniejszych /fstab.<device>
.
Widzę sprzeczne informacje. Jeden zasób mówi, że jest zakodowany na stałe , więc nie można tego zmienić po stronie użytkownika:
Programy inicjujące dla Androida znajdują się w urządzeniu / systemie / init. Dodaj komunikaty LOG, aby pomóc w debugowaniu potencjalnych problemów z makrem LOG zdefiniowanym w device / system / init / init.c.
Program init montuje bezpośrednio wszystkie systemy plików i urządzenia, używając albo zakodowanych nazw plików, albo nazw urządzeń wygenerowanych przez sondowanie systemu plików sysfs (eliminując w ten sposób potrzebę pliku / etc / fstab w Androidzie).
Gdzie indziej /etc/vold.fstab
i /etc/vold.conf
są wymienione. Mam je na moim urządzeniu w wersji CM 7.1, ale nie jestem pewien, jak są używane.
Możesz ponownie zamontować pamięć zewnętrzną, aby była wykonywalna, uruchamiając
mount -o remount, rw /mnt/sdcard
spowoduje to usunięcie flag noexec, nosuid i nodev, ale nadal będzie to vfat fs. Możesz tworzyć linki do tego fs, ale nie od wewnątrz. Ponowne podłączenie nie przetrwa ponownego uruchomienia, ponieważ plik vold.fstab zostanie odczytany i zostaną ponownie zamontowane przy ponownym uruchomieniu z flagami noexec.
Jeśli sformatujesz dowolną pamięć zewnętrzną na inną niż vfat, nie zostaną one ponownie zamontowane przy ponownym uruchomieniu, a wszelkie aplikacje przeniesione do dowolnej pamięci zewnętrznej nie będą nadawać się do użytku. Jeśli nie zamierzasz używać pamięci zewnętrznej dla aplikacji, możesz odmontować pamięć zewnętrzną i użyć busybox mke2fs DEVICE
jej, aby ją powiększyć2. Użyj, busybox newfs_msdos DEVICE
aby przywrócić vfat i sprawić, by znów był użyteczny.
Uwaga busybox mkfs.vfat
jest zepsuta, dostaniesz coś takiego
lseek: Wartość za duża dla zdefiniowanego typu danych
więc nie marnuj czasu. Wszystko to zakłada, że jesteś zrootowany i masz działający plik binarny busybox.
Zdaję sobie sprawę, że jest to stary temat, ale niektóre odpowiedzi tutaj utrudniły moje starania o zdobycie wiedzy o fstab
Androidzie, ponieważ tak mocno sugerują, że fstab
sytuacja w Androidzie jest bardzo różna od innych dystrybucji Linuksa. Z tego, co mogę powiedzieć, nie jest.
Jednak czytanie różnych odpowiedzi tutaj zastanawiało mnie: jaki fstab
ekwiwalentny plik lub pliki znajdują się na moim urządzeniu?
Cofając się na chwilę, zauważając, że „ Android nie ma / etc / fstab ” prawdopodobnie nie jest pomocne OP, ponieważ musieli już o tym wiedzieć. Gdyby było to nieprawdą, ich pytanie (pytanie, czym jest odpowiednik Androida /etc/fstab
) nie miałoby sensu. Z drugiej strony wiemy, że @Flow nie próbował sugerować, że nie ma odpowiednika na Androidzie, ponieważ wspomnieli o jednym z nich, o nazwie „skrypt pomocniczy” /etc/vold.fstab
.
Podsumowując, myślę, że na wynos z postu @ Flow jest to, że w niektórych systemach istnieje plik (prawdopodobnie „skrypt pomocniczy” - nie mogę tego sprawdzić na moim telefonie) /etc/vold.fstab
, a na tych systemach ten plik jest najbliższy odpowiednik /etc/fstab
.
Wracając do zastanawiania się nad własnym urządzeniem, zamierzam opublikować tutaj moje odkrycia z kilku powodów, pomimo wieku OP:
fstab
-Style plików mogę znaleźć w moim telefonie, piksel 2XL.Pozwólcie, że spróbuję podsumować wszystko, czego się nauczyłem z tego wszystkiego:
Android, a przynajmniej jego warianty, do których mam dostęp, korzysta z fstab
plików w stylu. Jednak dokładna nazwa, lokalizacja i funkcja tych plików różnią się w zależności od dystrybucji - co oznacza wersję Androida i urządzenie, a także pamięć ROM, jeśli używasz niestandardowej pamięci ROM.
Aby znaleźć te pliki na komputerze, otwórz terminal emulator jak tmux
albo adb shell
i uruchomić coś takiego: find / -type f -iname '*fstab*' 2>/dev/null
. Przekierowanie pliku 2 ( stderr
) /dev/null
sprawi, że Twoje dane wyjściowe będą znacznie czystsze, ponieważ będziesz w stanie zignorować napływ komunikatów o błędach, które otrzymasz find
, nawet jeśli tak jest root
.
W moim systemie (Pixel 2XL, nazwa kodowa „taimen”) znalazłem trzy pliki kandydatów:
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
Pierwsze dwa to osobne pliki, w których żaden nie jest ani twardym ani symbolicznym łączem do drugiego, ale jeśli diff
je znajdziesz, okaże się, że są identyczne. Patrząc nieco głębiej, jeśli uruchomisz stat
na plikach, zobaczysz, że mają one te same wartości Device i 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
zgłasza oba te nazwy plików jako zwykłe pliki z tylko jednym linkiem każdy (więc nie są zaangażowane żadne twarde ani symboliczne linki). Nie jestem ekspertem od systemów plików, ale to, co się tutaj wydarzyło, polega na tym, że to samo urządzenie zostało zamontowane dwukrotnie. Możesz to zobaczyć w danych wyjściowych następującego polecenia, gdzie jedynymi różnicami między dwoma liniami danych wyjściowych są punkty montowania (część bezpośrednio po „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)
Trzeci plik jest dla mnie widoczny tylko wtedy, gdy zaloguję się jako root, więc jeśli masz urządzenie identyczne z moim, nadal nie znajdziesz tego pliku lub nie będziesz mieć do niego dostępu, chyba że Twój telefon jest zrootowany. Ten plik ma związek z usługą o nazwie Open Mobile Alliance Device Management, ale jest to usługa, o której bardzo mało wiem, więc wspomnę o tym tutaj, a jeśli chcesz, możesz podać Google szczegółowe informacje na ten temat.
/system/etc
lub drugim /vendor/etc
. Dzięki za dostarczenie świeżych informacji.
mount: bad /etc/fstab: No such file or directory
. Czy masz jakieś przemyślenia lub rozwiązanie tego problemu?