Skocz do zawartości
nv-

TUTORIAL Swap na karcie sd (swap partition)

    Rekomendowane odpowiedzi

    nv-

    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).

     

    Edytowane przez baca01
    wstawiono prefiks

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    nv-
    bardzo fajnie ale mam problem z tą linijką "chmod +x /etc/init.d/swap", dostaję komunikat "Bad mode"

    Wydaj polecenie:

    chmod 755 /etc/init.d/swap

    Zmieniłem już w poradniku. Moje małe przeoczenie, pisane było w części z pamięci.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    nv-

    Nie wiem czy rom Android Revolution HD (konkretnie kernel zawarty w nim) wspiera startowanie usług z /etc/init.d/

    W każdym razie - na Unity na pewno działa :)

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Nie patrz co mam w podpisie, kiedys cos tam ustawilem i nie aktualizuje(nie potrafie usiedziec na jednym romie dluzej niz tydzien). Na chwile obecna uzywam unity 2.35.

    Sent from my HTC Vision

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    nv-

    Pokaż wyniki poleceń:

    ls -l /etc/init.d/

    ls /dev/block/vold/

    cat /etc/init.d/swap

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    # ls -l /etc/init.d/

    -rwxr-x--- root shell 448 2008-08-01 14:00 05-virtuous-load_kernel_modules

    -rwxr-x--- root shell 1591 2008-08-01 14:00 10-virtuous-optimize_performance

    -rwxr-x--- root shell 2389 2008-08-01 14:00 20-virtuous-package_manager

    -rwxr-x--- root shell 1178 2008-08-01 14:00 90-battery-calibration

    -rwxr-x--- root shell 737 2008-08-01 14:00 90-virtuous-run_once

    -rwxr-x--- root shell 750 2008-08-01 14:00 91-fix-contact-pics

    -rwxr-xr-x root root 46 2011-08-30 13:44 swap

    # ls /dev/block/vold/

    179:67

    179:66

    179:65

    179:64

    # cat /etc/init.d/swap

    #!/system/bin/sh

    swapon /dev/block/vold/179:67#

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    nv-

    Bardzo dziwne. Wszystko wydaje się być ok.

    Jak ręcznie montujesz swap, to działa?

    Kernel domyślny z unity?

    Robiłeś jakieś modyfikacje systemu?

    Pobierz mój plik swap i umieść go w /etc/init.d/

    http://dl.dropbox.com/u/32936737/swap

    Nadaj mu oczywiście uprawnienia.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Recznie wszystko ok,tak domslny, nic nie modyfikowalem.

    No nic, nie działa. Dzięki za pomoc i przepraszam za problem, pomyśle może uda mi Sie uruchomić.

    Sent from my HTC Vision

    Edytowane przez napior

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

    Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

    Zarejestruj nowe konto

    Załóż nowe konto. To bardzo proste!

    Zarejestruj się

    Zaloguj się

    Posiadasz już konto? Zaloguj się poniżej.

    Zaloguj się

    • Ostatnio przeglądający   0 użytkowników

      Brak zarejestrowanych użytkowników przeglądających tę stronę.

    x