Poniższy poradnik dotyczy tylko Froyo (2.2) i lagfixa opartego na partycjach ext4.
W wersji kernela SpeedMod K10 i nowszych poniższe tweaki są zaimplementowane w kernelu. Pierwszy z nich jest zaimplementowany w Mount Options => FAST, drugi natomiast polega na użyciu lagfixa ext4 no journal. Jeśli używasz kernela SpeedMod to zalecam jego aktualizację i włączenie tych tweaków przez recovery.
Optymalizacja teoretycznie zwiększa szybkość systemu plików (szczególnie przy zapisywaniu) i zmniejsza obciążenie procesora przez system plików (a więc i zmniejsza zużycie baterii).
Czego potrzebujemy?
Pliku
tune2fs . Po ściągnięciu rozpakowujemy archiwum i wrzucamy plik tune2fs na /sdcard/ (wbudowaną kartę pamięci).
Zrootowanego telefonu z włączoną opcją Debugowania USB.
Działającej konsoli adb (można również przez Terminal Emulator).
Aktualnego backupu zrobionego za pomocą Clockwork Mod recovery (na wszelki wypadek).
W poradniku podaję dwa sposoby na zoptymalizowanie ext4. Pierwszy jest sprawdzony, drugi nie, ale daje lepsze wyniki. Gdy zastosujemy drugi sposób to pierwszego już nie ma sensu stosować. Jeśli zastosowaliśmy pierwszy to możemy potem zastosować również drugi. Osobiście korzystam z drugiego i jestem zadowolony.
Sposób pierwszy (sprawdzony, stabilny):
Zamiana typu journalingu na writeback (journal tylko dla danych metadata).
Podłączamy włączony telefon do kabla USB i włączamy terminal wpisując adb shell w oknie poleceń i dalej piszemy:
su (pierwsze użycie może wymagać akceptacji su na telefonie)
cp /sdcard/tune2fs /data/
busybox mount | grep ext4
Polecenie to zwróci nam listę partycji ext4. Jeśli używamy np. lagfixa all=ext4 będzie to wyglądać mniej więcej tak:
/dev/block/
mmcblk0p2 on /data type ext4 (rw,noatime,barrier=0,data=ordered,noauto_d a_alloc)
/dev/block/
stl10 on /dbdata type ext4 (rw,noatime,barrier=0,data=ordered,noauto_d a_alloc)
/dev/block/
stl11 on /cache type ext4 (rw,noatime,barrier=0,data=ordered,noauto_d a_alloc)
Zapisujemy sobie to co pogrubiłem w cytacie.
Zmieniamy typ journala na data=writeback:
data/tune2fs -o journal_data_writeback /dev/block/x
Zamiast x wstawiamy to co wcześniej było pogrubione (w moim przykładzie mmcblk0p2, potem stl10, potem stl11, łącznie odpalamy to tyle razy ile mamy partycji ext4).
Restartujemy telefon.
Po restarcie znów wchodzimy do terminala i wpisujemy:
busybox mount | grep ext4
Jeśli wszystkie partycje, które się pojawiły posiadając opcję data=writeback oznacza to, że wszystko jest jak powinno. Jeśli natomiast, któraś z partycji posiada opcję data=ordered to należy powtórzyć operację tylko dla tej partycji. Czyli jeśli będzie to np. partycja stl11 to wpisujemy w terminalu (adb shell):
su
data/tune2fs -o journal_data_writeback /dev/block/stl11
i znów restartujemy telefon. W moim przypadku musiałem powtórzyć tą operacją 3 razy dla stl11, aby w końcu była ona montowana z atrybutem data=writeback.
Gdy już wszystko działa nam z atrybutem data=writeback możemy dodać jeszcze automatyczne montowanie z atrybutem nobh.
Ściągamy ten plik:
Forum po zmianach, link nie działa .
Rozpakowujemy go i wrzucamy do katalogu /system/etc/init.d. Można to zrobić np. za pomocą RootExplorera.
Restartujemy telefon.
Po restarcie wpisujemy w terminalu:
busybox mount | grep ext4
Powinno nam pojawić się coś takiego (dla lagfixa all=ext4):
/dev/block/
mmcblk0p2 on /data type ext4 (rw,noatime,barrier=0,
nobh,data=writeback,noauto_d a_alloc)
/dev/block/
stl10 on /dbdata type ext4 (rw,noatime,barrier=0,
nobh,data=writeback,noauto_d a_alloc)
/dev/block/
stl11 on /cache type ext4 (rw,noatime,barrier=0,
nobh,data=writeback,noauto_d a_alloc)
Jak widać wszystkie partycje ext4 są zamontowane z opcją nobh.
Sposób drugi (niesprawdzony, póki co stabilny):
EDIT: Tweak ten został zaimplementowany w najnowszym kernelu Speedmod (K10 i nowsze) jako lagfix EXT4 no journal. Jeśli mamy taką opcję w recovery to zalecane jest jej użycie zamiast poniższego opisu.
Kompletne wyłączenie journalingu.
Wyłączamy i włączamy telefon. Po włączeniu czekamy 5 minut (aby wszystkie operacje na partycjach zostały zakończone).
Podłączamy włączony telefon do kabla USB i włączamy terminal wpisując adb shell w oknie poleceń i dalej piszemy:
su (pierwsze użycie może wymagać akceptacji su na telefonie)
cp /sdcard/tune2fs /data/
busybox mount | grep ext4
Polecenie to zwróci nam listę partycji ext4. Jeśli używamy np. lagfixa all=ext4 będzie to wyglądać mniej więcej tak:
/dev/block/
mmcblk0p2 on /data type ext4 (rw,noatime,barrier=0,data=ordered,noauto_d a_alloc)
/dev/block/
stl10 on /dbdata type ext4 (rw,noatime,barrier=0,data=ordered,noauto_d a_alloc)
/dev/block/
stl11 on /cache type ext4 (rw,noatime,barrier=0,data=ordered,noauto_d a_alloc)
Zapisujemy sobie to co pogrubiłem w cytacie.
Uruchamiamy sprawdzanie systemu plików dla każdej partycji:
e2fsck -f /dev/block/x
Zamiast x wstawiamy to co wcześniej było pogrubione (w moim przykładzie mmcblk0p2, potem stl10, potem stl11, łącznie odpalamy to tyle razy ile mamy partycji ext4). Za każdym uruchomieniem pojawi się pytanie czy kontynuować na zamontowanej partycji, odpowiadamy wpisując Y.
Usuwamy opcję has_journal wpisując:
/data/tune2fs -O ^has_journal /dev/block/x
I znów za x wstawiamy tak jak wcześniej. Należy zwrócić uwagę, że teraz używamy dużej literki O.
Sprawdzamy czy faktycznie journal nie będzie już używany. Wpisujemy:
/data/tune2fs -l /dev/block/x
dla każdej partycji (wstawiamy zamiast x mmcblk0p2, potem stl10, potem stl11) i patrzymy na wiersz Filesystem features czy jest w nim opcja has_journal. Jeśli jej nie ma to dobrze, jeśli jest to znaczy, że coś zrobiliśmy źle.
Restartujemy telefon.
Jeśli ktoś jest estetą, a stosował wcześniej pierwszy poradnik to może wyłączyć opcje przez niego dodane (nie zmienia to nic w działaniu systemu plików). Aby to zrobić należy najpierw usunąć opcję journal_data_writeback dla każdej partycji:
su
data/tune2fs -o ^journal_data_writeback /dev/block/x
a następnie usunąć plik /system/etc/init.d/S05nobhmount. Potem wystarczy zrestartować telefon (data=writeback będzie dalej widoczne w opcjach zamontowanej partycji, to normalne).