Nie ponoszę odpowiedzialności za nieprawidłowe działanie Twojego telefonu po użyciu porad z tego tutoriala.
PRZED ROZPOCZĘCIEM ZRÓB BACKUP CAŁEJ KARTY SD NA KOMPUTERZE.
Tutorial testowany był tylko na najnowszej wersji Virtuous Unity. Nie wiem czy i jak będzie działać na innych romach.
EDIT: Napisałem skrypt, który automatyzuje większość procesu. Instrukcje w treści postu.
1. Wstęp
Swap jest czymś w rodzaju rozszerzenia pamięci ram. Z tym, że jest trzymany na karcie SD.
Dlaczego nie warto robić swapu na karcie sd z pomocą programu dd (tzw swapfile)?
Ponieważ przed każdym połączeniem telefonu z komputerem trzeba będzie wyłączyć swap.
Jeżeli tego nie zrobisz, może dojść do niestabilności urządzenia.
Plusy:
+ Znika problem zgubionych smsów.
+ Szybsze działanie telefonu.
+ Powinno rozwiązywać problem z resetującym się launcherem w niektórych romach.
Minusy:
- Szybsze zużycie karty SD.
- Odrobine mniejsza pojemność na partycji z fat32 (tej służącej do zapisu danych, zdjęć etc.)
Wymagania:
- Root
- Kernel obsługujący SWAP oraz pliki autostart z katalogu init.d
- CWM Recovery / 4ext recovery
- Dostęp do shella telefonu. Najlepiej z poziomu adb.
- Trochę czasu.
- Debugowanie USB włączone. (przy korzystaniu z adb)
UPDATE: Zipy do uruchamiania i wyłączania swapu
W dalszym ciągu wymagane jest partycjonowanie karty SD. Opis tego kroku znajduję się w dalszej części poradnika. Nie jest już wymagana partycja sd-ext
Wystarczy wgrać w recovery i cieszyć się swapem. Działa na każdym typie partycji, niezależnie czy wybrano dodatkową partycję sd-ext, czy też nie.
Należy pamiętać o tym, że jeśli kernel nie obsługuje swapu, lub autostartu z init.d - skrypt nic nie zdziała.
Jeżeli telefon wystartował, a my wciąż nie mamy swapu można spróbować wydać polecenie:
# sh /etc/init.d/06-swap
Jeżeli swap się uruchomił - kernel nie obsługuje autostartu z /etc/init.d/, jeżeli nie - nie ma obsługi modułu swap.
Linki:
swap_enabler_v2.zip
swap_disabler_v2.zip
PRZESTARZAŁA Metoda +/- automatyczna. Początek jak w metodzie ręcznej.
1. Zrób backup wszystkich danych z kartych pamięci (Skopiuj zawartość karty do komputera, gdyż operacja ta wymaże wszystkie dane z sd).
2. Reboot telefonu do CWM Recovery.
- advanced -> Partition SD Card -> i ustawiamy wybrane wartości partycji ext (polecam 128), oraz swapu (optymalne wg. mnie jest 256m)
3. Reboot telefonu.
4. Pobierz skrypt: http://dl.dropbox.com/u/32936737/swap_enabler.sh
5. Teraz kolejno wydajemy polecenia:
# adb push MIEJSCE_GDZIE_ZOSTAL_ZAPISANY_SKRYPT_I_NAZWA /data/
# adb shell
# chmod 755 /data/swap_enabler.sh
# sh /data/swap_enabler.sh
6. Reboot
METODA RĘCZNA
1. Zrób backup wszystkich danych z kartych pamięci (Skopiuj zawartość karty do komputera, gdyż operacja ta wymaże wszystkie dane z sd).
2. Reboot telefonu do CWM Recovery.
- advanced -> Partition SD Card -> i ustawiamy wybrane wartości partycji ext (polecam 128), oraz swapu (optymalne wg. mnie jest 256m)
3. Reboot telefonu.
4. Należy teraz połączyć się z telefonem za pomocą adb:
# adb shell
(lub możecie klepać komendy w emulatorze terminala, typu Terminal emulator, irssi connectbot etc.)
5. Musimy dowiedzieć się co nieco o naszej karcie SD:
# mount | grep sdcard
Wynik polecenia powinien być zbliżony do tego:
/dev/block/vold/179:65 /mnt/sdcard vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
tmpfs /mnt/sdcard/.android_secure tmpfs ro,relatime,size=0k,mode=000 0 0
Stąd wiemy, że partycja fat32 naszej karty to urządzenie /dev/block/vold/179:65
Potrzeba nam jednak więcej informacji:
# ls /dev/block/vold/
Wynik polecenia:
179:67
179:66
179:65
179:64
Podaje nam to liste partycji na naszej karcie.
Wygląda to tak:
:65 - fat32
:66 - ext założone w CWM
:67 - nasz swap - będziemy używać w dalszej części poradnika.
5. Włączamy swap za pomocą polecenia
# swapon /dev/block/vold/179:67
Jeżeli polecenie nie zwróciło błędów, to wszystko jest w porządku.
6. Sprawdzamy czy swap działa:
# free
Jeżeli w linii swap widnieją liczby różne od 0, to cieszymy się działającym swapem.
7. Jak włączyć swap przy starcie systemu?
a) Stwórz pusty plik BEZ ŻADNEGO ROZSZERZENIA o nazwie "swap".
B) Wklej do niego zawartość:
#!/system/bin/sh
swapon /dev/block/vold/179:67
c) Zamontuj telefon jako napęd dyskowy
d) Skopiuj plik na kartę sd telefonu
e) Odmontuj kartę (wybierz opcję tylko ładowanie)
f) Teraz trzeba przemontować partycję systemową:
# mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
e) Skopiujmy plik swap w odpowiednie miejsce i nadajmy mu uprawnienia:
# cp /mnt/sdcard/swap /etc/init.d/06-swap
# chmod 755 /etc/init.d/06-swap
g) Przemontujmy /system na tylko do odczytu:
# mount -o ro,remount -t yaffs2 /dev/block/mtdblock3 /system
8. Reboot telefonu i cieszymy się swapem. 🙂
UPDATE!
Usuwanie SWAPu
Zrobiłem update skryptu.
Od teraz aby usunąć swap należy pobrać skrypt na kartę pamięci ( http://dl.dropbox.com/u/32936737/swap_enabler.sh )
Za pomocą adb, lub terminal emulatora wydajemy polecenia jako ROOT:
su
chmod 755 /mnt/sdcard/swap_enabler.sh
sh /mnt/sdcard/swap_enabler.sh disable
Reboot telefonu.
Od teraz system nie będzie korzystał ze swapu, jednakże będzie on dalej dostępny jako partycja na karcie sd.
(Nie wpływa to na jej wydajność, ani zużycie).