Systempartition vergrößern
Standardmäßig ist die Systempartition von Sailfish OS 2,44 GB groß, wovon 1,3 GB bereits vom System belegt sind. Dies kann nach der Installation vieler Apps im Falle eines Updates zum Problem werden, da Sailfish OS für jedes Systemupdate ca. 650-700 MB freien Speicher voraussetzt.
Die grundlegende Partitionsverwaltung von Sailfish OS basiert auf dem Logical Volume Manager (LVM), der eine relativ einfache Modifikation der Partitionsgrößen erlaubt. Um die LVM Verwaltung nutzen zu können, muss das Gerät im Recovery Modus gestartet werden. Wie der Recovertyboot und die Änderung der Partitionsgrößen funktioniert, wird im Folgenden beschrieben:
ACHTUNG! Vollständiger Datenverlust bei falscher Befehlseingabe oder der Wahl falscher Speichergrößen!
Das Gerät selbst kann nicht beschädigt werden, Wiederherstellung der Grundsystemkonfiguration jederzeit möglich, allerdings auch hier vollständiger Datenverlust!
- Gerät im Fastboot Modus mit Rechner verbinden (Gerät bei gedrückter Volume Up Taste mit dem Rechner verbinden, Signal LED des Gerätes leuchtet blau)
Recovery Image, falls nötig, (in ZIP-Installationsdatei enthalten) auf das Gerät flashen (i.d.R. kann das Recovery Image direkt über den PC gestartet werden, s. Schritt 2) :
1sudo fastboot flash recovery hybris-recovery.img - Recovery Image via Fastboot starten (Xperia X Compact: Bildschirm des Gerätes ist aktiv, jedoch vollkommen schwarz):
1sudo fastboot boot hybris-recovery.img - Verbindung zur Recovery Konsole des Gerätes über Telnet aufbauen:
1telnet 10.42.66.66 - Xperia X* (LUKS verschlüsselt) (Ausführliche Anleitung für alle Sailfish OS Systeme) PDF Download:
123456789101112131415161718192021222324252627282930313233343536# show LVM volumeslvm lvdisplay# open LUKS containercryptsetup luksOpen /dev/mapper/sailfish-home crypt-home# check filesystem and shrink home partitione2fsck -f /dev/mapper/crypt-homeresize2fs -f /dev/mapper/crypt-home 10Ge2fsck -f /dev/mapper/crypt-home# shrink size of cryptsetup-container to 10,49 GiB (22000000 sectors á 512 Bytes; you might use 66000000 = 31,47 GiB on 64 GiB devices):cryptsetup resize -b 22000000 /dev/mapper/sailfish-homecryptsetup close crypt-homelvm lvchange -a n sailfish/home# Shrink "home" volume by -911 extents (= -3644M) for a 6 GiB, -1423 extents (= -5692M) for a 8 GiB, -399 extents (= -1596M) for a 4 GiB or -1935 extents (= -7740M) for a 10 GiB "root" volume size:lvm lvresize -l -911 sailfish/home# extend LVM device root to 100% of freed spacelvm lvresize -l +100%FREE sailfish/root# open LVM home againlvm lvchange -a y sailfish/homecryptsetup luksOpen /dev/mapper/sailfish-home crypt-home# extend LVM device homecryptsetup resize /dev/mapper/sailfish-homeresize2fs -f /dev/mapper/crypt-homee2fsck -f /dev/mapper/crypt-homecryptsetup close crypt-homeresize2fs /dev/mapper/sailfish-root# show LVM volumeslvm lvdisplay - Xperia X* (keine LUKS verschlüsselung) (bis SFOS Version 3.3) => Shell/Konsole starten und Partitionen bearbeiten (Systempartition auf 4 GB vergrößern) :
12345678910e2fsck -f /dev/sailfish/home # ( use "4) Perform file system check" for encrypted devices )lvm pvslvm lvsresize2fs /dev/sailfish/home 15Glvm lvextend --size 4G /dev/sailfish/rootlvm lvresize -l +100%FREE /dev/sailfish/homeresize2fs /dev/sailfish/homeresize2fs /dev/sailfish/roote2fsck -f /dev/sailfish/homedf -hlvm lvs
* lvm lvextend –size 5G /dev/sailfish/root vergrößert die Systempartition auf 5 GB. Bei größeren Werten (< 6 GB) muss die Home Partition und der Home LV stärker reduziert werden.
- Das Ganze sieht dann wie folgt aus ( SFOS 4.4 @ XA2 , LUKS verschlüsselt )
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142-----------------------------Jolla Recovery v2.0-----------------------------Welcome to the recovery tool!The available options are:1) Reset device to factory state2) Reboot device3) Shell4) Perform file system check5) Run sshd6) ExitType the number of the desired action and press [Enter]:3If you continue, this may void your warranty. Are you really SURE? [y/N] y/dev/mmcblk0rpmb: read failed after 0 of 4096 at 0: Input/output error/dev/mmcblk0rpmb: read failed after 0 of 4096 at 4128768: Input/output error/dev/mmcblk0rpmb: read failed after 0 of 4096 at 4186112: Input/output error/dev/mmcblk0rpmb: read failed after 0 of 4096 at 4096: Input/output error2 logical volume(s) in volume group "sailfish" now activeSat May 21 14:44:30 UTC 2022Type your devicelock code and press [ENTER] key:(please note that the typed numbers won't be shown for security reasons)[OK] Code accepted./ # cryptsetup luksOpen /dev/mapper/sailfish-home crypt-homeEnter passphrase for /dev/mapper/sailfish-home:/ # e2fsck -f /dev/mapper/crypt-homee2fsck 1.45.4 (23-Sep-2019)Pass 1: Checking inodes, blocks, and sizesPass 2: Checking directory structurePass 3: Checking directory connectivityPass 4: Checking reference countsPass 5: Checking group summary information/dev/mapper/crypt-home: 1411/1150560 files (3.5% non-contiguous), 155108/4601344 blocks/ # resize2fs -f /dev/mapper/crypt-home 10Gresize2fs 1.45.4 (23-Sep-2019)Resizing the filesystem on /dev/mapper/crypt-home to 2621440 (4k) blocks.The filesystem on /dev/mapper/crypt-home is now 2621440 (4k) blocks long./ # e2fsck -f /dev/mapper/crypt-homee2fsck 1.45.4 (23-Sep-2019)Pass 1: Checking inodes, blocks, and sizesPass 2: Checking directory structurePass 3: Checking directory connectivityPass 4: Checking reference countsPass 5: Checking group summary information/dev/mapper/crypt-home: 1411/652800 files (3.5% non-contiguous), 121811/2621440 blocks/ # cryptsetup resize -b 22000000 /dev/mapper/sailfish-home/ # cryptsetup close crypt-home/ # lvm lvchange -a n sailfish/home/dev/mmcblk0rpmb: read failed after 0 of 4096 at 0: Input/output error/ # lvm lvresize -l -911 sailfish/home/dev/mmcblk0rpmb: read failed after 0 of 4096 at 0: Input/output errorSize of logical volume sailfish/home changed from 17.55 GiB (4494 extents) to <14.00 GiB (3583 extents).Logical volume sailfish/home successfully resized./ # lvm lvresize -l +100%FREE sailfish/root/dev/mmcblk0rpmb: read failed after 0 of 4096 at 0: Input/output errorSize of logical volume sailfish/root changed from 2.44 GiB (625 extents) to 6.00 GiB (1536 extents).Logical volume sailfish/root successfully resized./ # lvm lvchange -a y sailfish/home/dev/mmcblk0rpmb: read failed after 0 of 4096 at 0: Input/output error/ # lvm lvresize -l +100%FREE sailfish/root/dev/mmcblk0rpmb: read failed after 0 of 4096 at 0: Input/output errorNew size (1536 extents) matches existing size (1536 extents)./ # lvm lvchange -a y sailfish/home/dev/mmcblk0rpmb: read failed after 0 of 4096 at 0: Input/output error/ # cryptsetup luksOpen /dev/mapper/sailfish-home crypt-homeEnter passphrase for /dev/mapper/sailfish-home:/ # cryptsetup resize /dev/mapper/sailfish-home/ # resize2fs -f /dev/mapper/crypt-homeresize2fs 1.45.4 (23-Sep-2019)Resizing the filesystem on /dev/mapper/crypt-home to 3668480 (4k) blocks.The filesystem on /dev/mapper/crypt-home is now 3668480 (4k) blocks long./ # e2fsck -f /dev/mapper/crypt-homee2fsck 1.45.4 (23-Sep-2019)Pass 1: Checking inodes, blocks, and sizesPass 2: Checking directory structurePass 3: Checking directory connectivityPass 4: Checking reference countsPass 5: Checking group summary information/dev/mapper/crypt-home: 1411/913920 files (3.5% non-contiguous), 139222/3668480 blocks/ # cryptsetup close crypt-home/ # resize2fs /dev/mapper/sailfish-rootresize2fs 1.45.4 (23-Sep-2019)Filesystem at /dev/mapper/sailfish-root is mounted on /rootfs; on-line resizing requiredold_desc_blocks = 1, new_desc_blocks = 1The filesystem on /dev/mapper/sailfish-root is now 1572864 (4k) blocks long./ # lvm lvdisplay/dev/mmcblk0rpmb: read failed after 0 of 4096 at 0: Input/output error--- Logical volume ---LV Path /dev/sailfish/rootLV Name rootVG Name sailfishLV UUID By9QbR-6CTe-NONJ-637d-yPcT-yckB-04ljMeLV Write Access read/writeLV Creation host, time SailfishSDK, 2022-05-11 11:25:03 +0000LV Status available# open 1LV Size 6.00 GiBCurrent LE 1536Segments 3Allocation inheritRead ahead sectors auto- currently set to 256Block device 252:0--- Logical volume ---LV Path /dev/sailfish/homeLV Name homeVG Name sailfishLV UUID ztMtfR-x5qh-0scX-CmKK-tIoB-QB3z-TkaKDrLV Write Access read/writeLV Creation host, time SailfishSDK, 2022-05-11 11:25:03 +0000LV Status available# open 0LV Size <14.00 GiBCurrent LE 3583Segments 2Allocation inheritRead ahead sectors auto- currently set to 256Block device 252:1/ # exit-----------------------------Jolla Recovery v2.0-----------------------------Welcome to the recovery tool!The available options are:1) Reset device to factory state2) Reboot device3) Shell4) Perform file system check5) Run sshd6) ExitType the number of the desired action and press [Enter]:2Rebooting...
Xperia X Compact , unverschlüsselt :
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111Welcome to the recovery tool!The available options are:1) Reset device to factory state2) Reboot device3) Shell4) Perform file system check5) Run sshd6) ExitType the number of the desired action and press [Enter]:4/dev/mmcblk0rpmb: read failed after 0 of 4096 at 0: Input/output error2 logical volume(s) in volume group "sailfish" now activee2fsck 1.45.4 (23-Sep-2019)Pass 1: Checking inodes, blocks, and sizesPass 2: Checking directory structurePass 3: Checking directory connectivityPass 4: Checking reference countsPass 5: Checking group summary informationroot: 27418/153600 files (0.4% non-contiguous), 377279/640000 blocksOpening encrypted filesystem, you will be prompted for your security code.Enter passphrase for /dev/sailfish/home:e2fsck 1.45.4 (23-Sep-2019)Pass 1: Checking inodes, blocks, and sizesPass 2: Checking directory structurePass 3: Checking directory connectivityPass 4: Checking reference countsPass 5: Checking group summary information/dev/mapper/luks-home: 1322/1150560 files (3.5% non-contiguous), 159719/4601344 blocks/dev/mmcblk0rpmb: read failed after 0 of 4096 at 0: Input/output error0 logical volume(s) in volume group "sailfish" now activeDonePress [Enter] to return to recovery menu...-----------------------------Jolla Recovery v2.0-----------------------------Welcome to the recovery tool!The available options are:1) Reset device to factory state2) Reboot device3) Shell4) Perform file system check5) Run sshd6) ExitType the number of the desired action and press [Enter]:3If you continue, this may void your warranty. Are you really SURE? [y/N] [y/N] y/dev/mmcblk0rpmb: read failed after 0 of 4096 at 0: Input/output error/dev/mmcblk0rpmb: read failed after 0 of 4096 at 4128768: Input/output error/dev/mmcblk0rpmb: read failed after 0 of 4096 at 4186112: Input/output error/dev/mmcblk0rpmb: read failed after 0 of 4096 at 4096: Input/output error2 logical volume(s) in volume group "sailfish" now active[OK] No lockcode has been set. Proceeding.../ # lvm pvs/dev/mmcblk0rpmb: read failed after 0 of 4096 at 0: Input/output error/dev/mmcblk0rpmb: read failed after 0 of 4096 at 4128768: Input/output error/dev/mmcblk0rpmb: read failed after 0 of 4096 at 4186112: Input/output error/dev/mmcblk0rpmb: read failed after 0 of 4096 at 4096: Input/output errorPV VG Fmt Attr PSize PFree/ # lvm vgs/dev/mmcblk0rpmb: read failed after 0 of 4096 at 0: Input/output errorVG #PV #LV #SN Attr VSize VFreesailfish 1 2 0 wz--n- 22.25g 0/ # lvm lvs/dev/mmcblk0rpmb: read failed after 0 of 4096 at 0: Input/output errorLV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Converthome sailfish -wi-a----- <19.81groot sailfish -wi-ao---- 2.44g/ # resize2fs /dev/sailfish/home 15Gresize2fs 1.45.0 (6-Mar-2019)Resizing the filesystem on /dev/sailfish/home to 3932160 (4k) blocks.The filesystem on /dev/sailfish/home is now 3932160 (4k) blocks long./ # lvm lvresize -L -4563M /dev/sailfish/home/dev/mmcblk0rpmb: read failed after 0 of 4096 at 0: Input/output errorRounding size to boundary between physical extents: 4.45 GiB.WARNING: Reducing active logical volume to <15.36 GiB.THIS MAY DESTROY YOUR DATA (filesystem etc.)Do you really want to reduce sailfish/home? [y/n]: ySize of logical volume sailfish/home changed from <19.81 GiB (5071 extents) to <15.36 GiB (3931 extents).Logical volume sailfish/home successfully resized./ # lvm lvs/dev/mmcblk0rpmb: read failed after 0 of 4096 at 0: Input/output errorLV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Converthome sailfish -wi-a----- <15.36groot sailfish -wi-ao---- 2.44g/ # lvm vgs/dev/mmcblk0rpmb: read failed after 0 of 4096 at 0: Input/output errorVG #PV #LV #SN Attr VSize VFreesailfish 1 2 0 wz--n- 22.25g 4.45g/ # lvm lvextend --size 4G /dev/sailfish/root/dev/mmcblk0rpmb: read failed after 0 of 4096 at 0: Input/output errorSize of logical volume sailfish/root changed from 2.44 GiB (625 extents) to 4.00 GiB (1024 extents).Logical volume sailfish/root successfully resized./ # lvm lvresize -l +100%FREE /dev/sailfish/home/dev/mmcblk0rpmb: read failed after 0 of 4096 at 0: Input/output errorSize of logical volume sailfish/home changed from <15.36 GiB (3931 extents) to 18.25 GiB (4672 extents).Logical volume sailfish/home successfully resized./ # lvm lvs/dev/mmcblk0rpmb: read failed after 0 of 4096 at 0: Input/output errorLV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Converthome sailfish -wi-a----- 18.25groot sailfish -wi-ao---- 4.00g/ # resize2fs /dev/sailfish/homeresize2fs 1.45.0 (6-Mar-2019)Resizing the filesystem on /dev/sailfish/home to 4784128 (4k) blocks.The filesystem on /dev/sailfish/home is now 4784128 (4k) blocks long./ # resize2fs /dev/sailfish/rootresize2fs 1.45.0 (6-Mar-2019)Filesystem at /dev/sailfish/root is mounted on /rootfs; on-line resizing requiredold_desc_blocks = 1, new_desc_blocks = 1The filesystem on /dev/sailfish/root is now 1048576 (4k) blocks long.
Detaillierte Erläuterung des o.g. Vorgehens
Logical Volume Manager (LVM) basierende Systeme sind in zwei Schichten aufgebaut, die alle innerhalb eines Containers (Physical Volume (PV)) liegen. Die PVs enthalten die Logischen Volumes (LV) die wiederum die Dateisysteme enthalten auf denen letztendlich die Daten gespeichert werden.
Um Änderungen an den LVM Volumes und Dateisystemen durchzuführen muss man daher in umgekehrter Reihenfolge verfahren. Um z.b. die Dateisysteme/Partitionen, die sich in den LVs befinden, zu ändern müssen die Dateisysteme zuerst verkleinert werden damit dann die Logischen Volumes geändert werden können.
Ein frisch geflashtes Sailfish OS Gerät hat per Default folgende Speicheraufteilung:
(ab SFOS Gen. 2 Xperia X | Gen 1 hat keine Aufteilung zwischen System und Userdaten )
| PV auf gesamter Festplatte 22.25 GB |
| LV1 2.44GB | LV2 19.81GB |
| FS1 2.44GB | FS2 19.81GB |
Um FS1 auf LV1 um 2 GB auf 4 GB zu vergrößern muss dazu LV2 um 2GB verkleinert werden, da das PV den gesamten physikalischen speicher (gesamte Festplatte) bereits nutzt. Würde man einfach die logischen Volumes bearbeiten stimmen die Größen nicht mehr mit den darauf enthalten Dateisystemen überein und es kommt zu Dateisystem Fehlern und Datenverlust. Darum müssen zu erst die Dateisysteme selbst bearbeitet werden, i o.g. Fall muss das Dateisystem FS2 mindestens um 2 GB verkleinert werden.
Als Erstes wird FS2 auf 15 GB reduziert. Dabei enstehen im LV2 4,81 GB freier Speicher.
| PV auf gesamter Festplatte 22.25 GB |
| LV1 2.44GB | LV2 19.81GB |
| FS1 2.44GB | LV2 4,81GB frei | FS2 15.00GB |
Nachdem FS2 reduziert wurde kann jetzt LV2 reduziert werden. Zur Sicherheit sollte dabei ein Puffer berücksichtigt werden (0.36 GB).
| PV auf gesamter Festplatte 22.25 GB |
| LV1 2.44GB | PV 4.45GB frei | LV2 15.36GB |
| FS1 2.44GB | | LV2 0.36GB frei | FS2 15.00GB |
Der jetzt freie Speicher im PV kann nun den LVs zugewiesen werden. In diesem Fall wird LV1 auf 4GB vergrößert. In diesem Beispiel wäre eine maximale Vergrößerung von LV1 auf 6,89 GB (2,44GB + 4,45 GB) möglich.
| PV auf gesamter Festplatte 22.25 GB |
| LV1 4.00GB | PV 2,89GB frei | LV2 15.36GB |
| FS1 2.44GB | LV1 1.56 frei | | LV2 0.36GB frei | FS2 15.00GB |
Da LV1 nur auf 4 GB vergrößert wurde, und somit 2,89 GB im PV ungenutzt sind, wird der übrig gebliebene Speicher des PV jetzt wieder dem LV2 zugewiesen. Die Zuweisung kann auch direkt ohne den Zwischenschritt der Puffer durchgeführt werden, erfordert dabei aber genaue Berechnung der FS Extends und den FS Größen. Es ist jedoch einfacher den Ziel LV (LV1) mit einer direkten Größenagabe zu ändern und den nachfolgen LV (LV2) mit automatisch erfolger Speicherplatzberechnung wieder zu maximieren.
| PV auf gesamter Festplatte 22.25 GB |
| LV1 4.00GB | LV2 18,25GB |
| FS1 2.44GB | LV1 1.56 frei | LV2 3,25GB frei | FS2 15.00GB |
Nach Abschluss der Änderungen an den LVs muss jetzt noch das Dateisystem an die neuen Größen der LVs angepasst werden
| PV auf gesamter Festplatte 22.25 GB |
| LV1 4.00GB | LV2 18,25GB |
| FS1 4.00GB | FS2 15.00GB |
by Speefak | together.jolla.com | together.jolla.com | blog.pcfe.net | www.tecmint.com| Fastboot Befehle