1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

[Anleitung] Swap-Partition auf externer SD-Card erstellen

Dieses Thema im Forum "Anleitungen für Samsung Galaxy S" wurde erstellt von sunra, 22.04.2012.

  1. sunra, 22.04.2012 #1
    sunra

    sunra Threadstarter Android-Lexikon

    Beiträge:
    1,742
    Erhaltene Danke:
    527
    Registriert seit:
    03.12.2010
    Auf XDA gibt es eine Anleitung wie man eine Swap-Partition
    auf der exernen SD-Karte unseres SGS erstellen kann.

    Das ganze funktioniert nur mit Kernel die das unterstützen!

    Post 1 - Übersetzung der originalen Anleitung
    Post 2 - CWM Package von mir




    Post 1 - Übersetzung der originalen Anleitung

    1. Ihr benötigt wie gesagt einen Kernel der swap Partitionen unterstützt.
    Den bekommt ihr hier:
    xda-developers - View Single Post - [Kernel][ICS] Devil2_0.72 [19/04/12] - i9000 and i9000B

    Danke an derTeufel!


    2. Es muss eine /swap Partition auf der externen SD-Karte erstellt werden. Dazu muss man vorher alle darauf befindlichen Daten sichern und dann eine /swap Partition anlegen (512mb wären mehr als genug) und dann denn restlichen Speicher wieder mit FAT32 formatieren.

    Unter Windows geht das mit diesem Programm:
    SD card partitioning - XDA-Developers

    Unter Linux z.B. mit gparted und auf einem Mac angeblich mit iPartition (kenn ich nicht hab keinen Mac).


    3. Nun die SD Karte wieder ins SGS geben. Die folgenden Befehle können per ADB-Shell ausgeführt werden oder direkt mit einem Terminal Emulator am SGS.

    3.1 Um die nummer der Swap-Partition festzustellen folgenden Befehl eingeben:

    Code:
    fdisk -l dev/block/mmcblk1
    Es sollte in etwa so etwas angezeigt werden:

    Code:
    /dev/block/mmcblk[COLOR=Red]1p2[/COLOR]            1861        1924      514080  82 Linux swap
    Merkt oder notiert euch die Nummer der Partition (rot markiert).

    Nun gebt folgendes ein:

    Code:
    swapon /dev/block/mmcblk[COLOR=Red]1pX[/COLOR]
    X steht führ die Nummer die ihr angezeigt bekommt!

    Wenn ihr nun den Befehl "free" eingebt, seht ihr ob die Swap-Partition aktiviert ist.


    3.2 Swap-Partition dauerhaft aktivieren damit es auch nach einem Reboot automatisch funktioniert.

    Nun muss ein Textfile erstellt werden. Dies kann man mit folgendem Befehl machen, also über den VI Editor oder man macht es direkt am SGS, oder auch mit einem anderen Editor:

    Code:
    vi /system/etc/init.d/05userinit
    Das File muss folgendes beinhalten:

    Code:
    #Activate swap at boot  
    #!/system/bin/sh  
    swapon -a
    Nun muss das File noch ausführbar gemacht werden mit folgendem Befehl:

    Code:
    chmod 750 /system/etc/init.d/05userinit
    Nun muss ein fstab File erzeugt werden damit der Kernel die Swap Partition findet:

    Code:
    vi /system/etc/fstab
    ... mit folgendem Inhalt:

    Code:
    /dev/block/mmcblk[COLOR=Red]1pX[/COLOR] swap swap
    X steht hier wieder für eure Partitionsnummer.Zum Schluss geben wir noch den Swap-Wert ein.
    Auf XDA könnt ihr euch da bezüglich feinheiten erkundigen. Ich gebe jetzt mal den Empfohlenen Wert an und wie man den dauerhaft aktiviert:

    Code:
    echo 60 > /proc/sys/vm/swappiness
    
    Am Ende sollte es nach Eingabe des Befehls "free" so aussehen:

    Code:
    shell@android:/ # free
                                    total         used         free       shared      buffers
     Mem:                385772       376352         9420            0        26420
     -/+ buffers:      349932        35840 
    Swap:               514076            0       514076
    
    Im zweiten Post hänge ich ein .zip File an mit welchem bis auf die Partitionierung alles automatisch geht.
     
    Zuletzt bearbeitet: 22.04.2012
    Boeing747, magic.dave, PJF16 und 2 andere haben sich bedankt.
  2. sunra, 22.04.2012 #2
    sunra

    sunra Threadstarter Android-Lexikon

    Beiträge:
    1,742
    Erhaltene Danke:
    527
    Registriert seit:
    03.12.2010
    Post 2 - CWM Package von mir


    Ich habe ein cwm-Paket erstellt um das ganze automatisch ablaufen zu lassen.

    1. Lest euch die Originalanleitung ordentlich durch!
    2. Erstellt eine Swap-Partition auf eurer externen SD-Card /emmc (512mb sollten mehr als genug sein)
    3. Es funktioniert nur mit folgender Partitionsnummer!!!

    Code:
         /dev/block/mmcblk[COLOR=Red]1p2[/COLOR] 
    4. Flasht das Packet via cwm.

    5. Nach dem Reboot könnt ihr im Terminal mit dem Befehl "free" überprüfen ob es funktioniert hat.

    6. Fertig

    Wenn eure Swap-Partition eine andere Nummer hat ändert das in folgenden Skripten im .zip Paket mit Notepad++ oder einem beliebigen Linuxeditor.

    1. \systm\etc\fstab


    Wenn ihr nicht wisst wovon ich rede flasht es NICHT!!!

    Ich bin kein Profi und hab das für mich selber erstellt. Vielleicht ist es für euch aber auch nützlich ...

    Macht vorher ein Nadroidbackup und teilt mir mit ob es funktioniert hat bei euch.
     

    Anhänge:

    Zuletzt bearbeitet: 04.05.2012
    DerTeufel bedankt sich.
  3. scheichuwe, 22.04.2012 #3
    scheichuwe

    scheichuwe Android-Ikone

    Beiträge:
    5,441
    Erhaltene Danke:
    2,541
    Registriert seit:
    09.09.2009
    Phone:
    LG G4
    Funktioniert das bei dir? (Gib mal cat /proc/sys/vm/swappiness ein)
    Ich hab gestern schon ein bisschen damit rumgespielt...

    Bei mir war das ohne Wirkung (der Wert bleibt bei 0).
    Ich hab daher diese Zeile
    Code:
    echo 60 > /proc/sys/vm/swappiness
    in die 05userinit reingepackt, die sieht dann so aus:
    Code:
    #!/system/bin/sh
    
    swapon -a
    echo 60 > /proc/sys/vm/swappiness
     
    sunra bedankt sich.
  4. sunra, 22.04.2012 #4
    sunra

    sunra Threadstarter Android-Lexikon

    Beiträge:
    1,742
    Erhaltene Danke:
    527
    Registriert seit:
    03.12.2010
    Ja du hast Recht. Ich werde das ändern. (Ist mittlerweile geändert in der angehängten .zip in Post2)

    Wie heisst deine Partition eigentlich? Auch 1p2 ?
    Ich frage mich ob die überhaupt bei wem anders heisst ...

    Wenn das so ist, müsste man noch irgendwie auslesen wie die Partition heisst und das mit einbauen. Dann kann das jeder verwenden ohne was überprüfen oder editieren zu müssen ...


    Hier sieht man z.b. dass gerade knapp 60mb des swap-Speichers genutzt werden ...
     

    Anhänge:

    Zuletzt bearbeitet: 22.04.2012
  5. PJF16, 23.04.2012 #5
    PJF16

    PJF16 Senior-Moderator Team-Mitglied

    Beiträge:
    13,859
    Erhaltene Danke:
    8,068
    Registriert seit:
    06.01.2011
    Phone:
    Xiaomi RedMi Note 4
    Tablet:
    Nexus 7 (2012), Nexus 10, iPad Air 2 Cellular
    Wearable:
    Motorola Moto 360
    Was für eine ext. SD verwendet ihr denn?

    Wäre der interne Speicher wirklich um soviel langsamer wie manche behaupten?
     
  6. sunra, 23.04.2012 #6
    sunra

    sunra Threadstarter Android-Lexikon

    Beiträge:
    1,742
    Erhaltene Danke:
    527
    Registriert seit:
    03.12.2010
    Ich hab eine 16gb class4 die werde ich jetzt auch nicht ersetzen dafür, wäre mir zu teuer.
    Wenn dann würde ich gleich eine 32gb class10 nehmen, aber wie gesagt das lohnt sich momentan nicht. Die Anwendungen im Vordergrund bekommen ohnehin den RAM zugeteilt.

    Wie schnell die interne SD wirklich ist weiß ich nicht. Man sollte sie nicht mit den vielen Schreib und Lesezugriffen beanspruchen die eine Swap Partition mit sich bringt.
    Also im Falle des Falles wäre es ungleich blöder wenn die interne SD den Geist aufgibt.
    Das ist hier das Hauptargument denke ich ...
     
    PJF16 bedankt sich.
  7. PJF16, 23.04.2012 #7
    PJF16

    PJF16 Senior-Moderator Team-Mitglied

    Beiträge:
    13,859
    Erhaltene Danke:
    8,068
    Registriert seit:
    06.01.2011
    Phone:
    Xiaomi RedMi Note 4
    Tablet:
    Nexus 7 (2012), Nexus 10, iPad Air 2 Cellular
    Wearable:
    Motorola Moto 360
    Danke dir schonmal. ;)

    Naja, dass das das Hauptargument weiß ich. Nur wird es bei mir sowieso Zeit für ein neues Smartphone. Daher sehe ich das nicht so tragisch. ;)
     
  8. sunra, 23.04.2012 #8
    sunra

    sunra Threadstarter Android-Lexikon

    Beiträge:
    1,742
    Erhaltene Danke:
    527
    Registriert seit:
    03.12.2010
    Ach mein SGS soll schon noch ein Weilchen halten. Dürfte noch ein bisschen dauren bis eine stabiler opensource build für das s3 erhältlich ist oder sonstige lohnenswerte alternativen verfügbar sind ;-)
     
  9. theKingJan, 26.04.2012 #9
    theKingJan

    theKingJan Android-Lexikon

    Beiträge:
    1,837
    Erhaltene Danke:
    426
    Registriert seit:
    21.11.2011
    Tablet:
    Asus Transformer Pad TF300
    Was kann ich mir unter einer Swap Partitition dwnken
    Eine Partition auf der externen die als Erweiterung der interne Sd behandelt wird.
    Oder eine Partition auf der Android Daten speochert?

    ...via Tapatalk 2.0...
     
  10. extralife, 26.04.2012 #10
    extralife

    extralife Android-Guru

    Beiträge:
    2,217
    Erhaltene Danke:
    818
    Registriert seit:
    22.09.2010
    ... in etwa wie die Auslagerungsdatei unter Windows.

    ... using tapatalk
     
  11. sunra, 26.04.2012 #11
    sunra

    sunra Threadstarter Android-Lexikon

    Beiträge:
    1,742
    Erhaltene Danke:
    527
    Registriert seit:
    03.12.2010
    theKingJan bedankt sich.
  12. PJF16, 27.04.2012 #12
    PJF16

    PJF16 Senior-Moderator Team-Mitglied

    Beiträge:
    13,859
    Erhaltene Danke:
    8,068
    Registriert seit:
    06.01.2011
    Phone:
    Xiaomi RedMi Note 4
    Tablet:
    Nexus 7 (2012), Nexus 10, iPad Air 2 Cellular
    Wearable:
    Motorola Moto 360
    Ich versuche gerade ein Programm zu erstellen, dass man das Handy einfach nur anschließen muss, die Partition erkennt und automatisch konfiguriert. Mal sehen wie weit ich es schaffe. :)
     
  13. sunra, 27.04.2012 #13
    sunra

    sunra Threadstarter Android-Lexikon

    Beiträge:
    1,742
    Erhaltene Danke:
    527
    Registriert seit:
    03.12.2010
    Ich arbeite an einem script welches das alles automatisch beim flashen des Kernels macht .. Mit einem swapfile funktioniert es schon, aber dann sieht man /emmc bei pc Verbindung via usb nicht mehr. Bekanntes Problem. Nun werde ich versuchen eine swap Partition per script erstellen zu lassen. Mal sehen ob ich das hinkomme ...
     
  14. PJF16, 27.04.2012 #14
    PJF16

    PJF16 Senior-Moderator Team-Mitglied

    Beiträge:
    13,859
    Erhaltene Danke:
    8,068
    Registriert seit:
    06.01.2011
    Phone:
    Xiaomi RedMi Note 4
    Tablet:
    Nexus 7 (2012), Nexus 10, iPad Air 2 Cellular
    Wearable:
    Motorola Moto 360
    Sehr schön. ;-)

    Sagmal. Hast du auch das Problem, dass deine interne unter /emmc liegt und umgekehrt? Bin mir nicht sicher obs ander ROM am Swap oder am Kernel liegt.

    Gesendet von meinem GT-I9000 mit Tapatalk 2
     
  15. sunra, 27.04.2012 #15
    sunra

    sunra Threadstarter Android-Lexikon

    Beiträge:
    1,742
    Erhaltene Danke:
    527
    Registriert seit:
    03.12.2010
    Bei mir ist alles wie gewohnt. Bin auf CNA 2.0 und nicht auf CM9.
    Ich melde mich am Abend und zeig dir dann das script und so.
     
  16. scheichuwe, 27.04.2012 #16
    scheichuwe

    scheichuwe Android-Ikone

    Beiträge:
    5,441
    Erhaltene Danke:
    2,541
    Registriert seit:
    09.09.2009
    Phone:
    LG G4
    Das liegt an CM9, der Kernel muss da angepasst werden (bzw. irgendwas in der initramfs).
    Das steht aber auch lang und breit im CM9-Thread :D
     
  17. PJF16, 27.04.2012 #17
    PJF16

    PJF16 Senior-Moderator Team-Mitglied

    Beiträge:
    13,859
    Erhaltene Danke:
    8,068
    Registriert seit:
    06.01.2011
    Phone:
    Xiaomi RedMi Note 4
    Tablet:
    Nexus 7 (2012), Nexus 10, iPad Air 2 Cellular
    Wearable:
    Motorola Moto 360
    @sunra Okay danke. Ich werde mein Programm aber wahrscheinlich trotzdem fertig schreiben und zur Verfügung stellen da ich schon fast am Ende bin. War eine gute Übung für mich sowieso. ;)

    @scheichuwe peinlich peinlich. Aber danke. :)
     
  18. sunra, 27.04.2012 #18
    sunra

    sunra Threadstarter Android-Lexikon

    Beiträge:
    1,742
    Erhaltene Danke:
    527
    Registriert seit:
    03.12.2010
    Ja mach nur Phillip. Ich machs ja auch eher für mich zur Übung ;-)

    Also ich zeig euch mal was ich bis jetzt habe:

    Code:
    #!/system/bin/sh
    
    #This script creates a hidden swap file of 512MB on the first partition of your external SD-card and configures android to use it on every reboot
    
    
    # Creating the initiation for ui_print from within a .sh file to recovery ui
    # this was created by Chainfire.
    
    # get file descriptor for output
    OUTFD=$(ps | grep -v "grep" | grep -o -E "update_binary(.*)" | cut -d " " -f 3);
    
    ui_print() {
      if [ $OUTFD != "" ]; then
        echo "ui_print ${1} " 1>&$OUTFD;
        echo "ui_print " 1>&$OUTFD;
      else
        echo "${1}";
      fi;
    }
    
    
    #Create directory where the swap file will be located on external SD card
    ui_print "  Create swap directory ... ";
    mkdir /emmc/.swap
    
    #Create swap file and overwrite it with zeros
    ui_print "  Create swap file and overwrite it with zeros ... ";
    ui_print "  ... please be patient ... ";
    dd if=/dev/zero of=/emmc/.swap/swapfile bs=1024 count=524288
    mkswap /emmc/.swap/swapfile
    
    #Add swapfile to fstab
    ui_print "  Add swapfile to fstab ... ";
    echo "/emmc/.swap/swapfile       none    swap    sw      0       0" >> /system/etc/fstab
    
    #Create file 99userinit and fill it with activation of swap and setting of swappiness
    ui_print "  Create file 99userinit with settings ... ";
    touch /system/etc/init.d/99userinit
    echo "#Activate swap at boot\n\n#!/system/bin/sh\n\sleep 60\nswapon /emmc/.swap/swapfile\necho 60 > /proc/sys/vm/swappiness" >> /system/etc/init.d/99userinit
    
    #Set permissions for init-script
    ui_print "  Set permissions ... ";
    chmod 750 /system/etc/init.d/99userinit
    chown -R root /emmc/.swap
    chmod -R 700 /emmc/.swap
    
    
    #May be distributed under CC licence
    #v0.1 scripted by Vincent Vegan & sunra 2012/04
    Hierbei hat mir ein Freund ein bisschen geholfen. Schön langsam versteh ich immer mehr ;-)

    Es wird also ein swapfile erstellt und so funktinoiert das auch.
    Im updater-script muss /emmc gemountet werden und das Script natürlich ausgeführt werden.

    Das Problem bei dieser Methode is wie gesagt, dass man dann vom Pc aus via USB keinen Zugriff mehr auf /emmc hat!
    Meine Recherchen diesbezüglich haben bis jetzt nur Warnungen dass es so ist ergeben. Lösung hab ich noch keine gefunden.

    Dieses Problem tritt nicht auf wenn man mit einer Swap-Partition arbeitet. Die FAT32 Partition wird dann ganz normal über USB gemountet.

    Einfach nur Swap zu deaktivieren hilft leider nicht bei der swapfile Methode. Man müsste es deaktivieren und rebooten.
    Aber das is ja alles Mist ...

    Was grundsätzlich noch fehlt is die Überprüfung des freien Speichers.
    Dies stellt aber kein großes Problem dar. Is nur noch nicht enthalten im Script.

    Also ich bin immer offen für Ideen und Anregungen.

    Mal sehen wann ich da weiterkomme ...



    Edit:

    Den freien Speicher frägt man so ab:

    Code:
    df /emmc | awk -F" " '{if (NR!=1) {print $4}}'
    Man definiert dann halt welchen Wert die Variable nicht unterschreiten darf, gibt eine entsrechende Meldung aus und macht dann entsprechend weiter ...
     
    Zuletzt bearbeitet: 27.04.2012
    DerTeufel bedankt sich.
  19. PJF16, 27.04.2012 #19
    PJF16

    PJF16 Senior-Moderator Team-Mitglied

    Beiträge:
    13,859
    Erhaltene Danke:
    8,068
    Registriert seit:
    06.01.2011
    Phone:
    Xiaomi RedMi Note 4
    Tablet:
    Nexus 7 (2012), Nexus 10, iPad Air 2 Cellular
    Wearable:
    Motorola Moto 360
    Sieht schonmal gut aus. Ich kann dir da ehrlich gesagt auch nicht viel weiterhelfen da ich da auch nur die Basics kenne.
     
  20. magic.dave, 29.04.2012 #20
    magic.dave

    magic.dave Android-Experte

    Beiträge:
    870
    Erhaltene Danke:
    59
    Registriert seit:
    04.10.2010
    Wenn ich Punkt 3.1 kommt bei mir leider nichts woraus die Nr geschlossen werden kann
     

    Anhänge:

Diese Seite empfehlen

Besucher kamen mit folgenden Begriffen auf unsere Seite:

  1. android swap Größe bestimmen

    ,
  2. android Swap Partitiom einrichten