====== Jolla Phone ====== Jolla Phone aus Finnland mit Sailfish OS ==== Software- /Paketverwaltung ==== Weitere Hilfen anzeigen zu ''pkcon''. Ausführlichere Hilfe als ''pkcon -h'' pkcon --filter x Nach search kommt zunächst ein Themen-Gebiet nach was genau gesucht werden soll, ''search [name|details|group|file] [data]'' pkcon search name play ==== System Infos === / # fdisk -l Disk /dev/mmcblk0: 15.6 GB, 15634268160 bytes 256 heads, 63 sectors/track, 1893 cylinders Units = cylinders of 16128 * 512 = 8257536 bytes Device Boot Start End Blocks Id System /dev/mmcblk0p1 1 266306 2147483647+ ee EFI GPT Disk /dev/mmcblk1: 31.4 GB, 31486640128 bytes 255 heads, 63 sectors/track, 3828 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/mmcblk1p1 1 3829 30744576 c Win95 FAT32 (LBA) / # cat /proc/cpu cpu/ cpuinfo / # cat /proc/cpuinfo Processor : ARMv7 Processor rev 4 (v7l) processor : 0 BogoMIPS : 13.53 processor : 1 BogoMIPS : 13.53 Features : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 CPU implementer : 0x51 CPU architecture: 7 CPU variant : 0x1 CPU part : 0x04d CPU revision : 4 Hardware : QCT MSM8930 CDP Revision : 300000 Serial : 0000000000000000 ==== SSH Verbindung per USB ==== SSH Aktivieren wie immer: - Enable Developer Mode, - Generate or write password - ssh using the password Sonst verbinde ich mich per WLAN aber als das Phone probleme machte (nach dem anstecken des Netzteils war nur die blaue LED zu sehen) und anscheinend nicht mehr richtig gestartet ist konnte man sich weiterhin per USB verbinden. Zunächst auf dem Desktop PC die IP-Adressen anzeigen lassen: ip a Es wurde mir neben den anderen Netzwerkkarten ein USB Gerät angezeigt: 5: usb0: mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000 link/ether b6:dd:92:43:ff:81 brd ff:ff:ff:ff:ff:ff inet 192.168.2.3/24 brd 192.168.2.255 scope global noprefixroute dynamic usb0 valid_lft 1847sec preferred_lft 1847sec inet6 fe80::24fa:4fe7:ff3a:b83/64 scope link noprefixroute valid_lft forever preferred_lft forever Die angezeigt IP auf dem USB Gerät ''usb0'': ist nur die dem Desktop PC zugeordnete. Verbinden konnte man sich nämlich nun per SSH über folgende IP: ssh nemo@192.168.2.15 Von hier konnte ich nun Daten per ''scp'' auf meinen direkt verbundenen Desktop PC sichern. Ausserdem konnten Kommandos zum Reparieren/warten des BTRFS Dateisystems verwendet werden: btrfs balance start / Nach einer Weile stellte ich fest, das er auf doppel tippen auf das Display endlich reagierte und er 32% Akkufüllstand angezeigt hatte. Nur per Netzteil hatte er periodisch neugestartet und jeweils 1x gepiept. Der Akku Füllstand lässt sich auch per SSH abfragen. cat /run/state/namespaces/Battery/ChargePercentage 32 Das bedeutet zu 32% geladen. ==== Sicherung Backup ==== Das komplette Home-Verzeichnis sichern: rsync -au -e ssh --exclude=.local/share/system/privileged --exclude=.config/signond --exclude=.local/share/harbour-halftrail/ --exclude=.cache/ --exclude=.mozilla/ --exclude=android_storage/.aptoide/ --delete --delete-excluded --progress nemo@jolla-ronni:/home/nemo/ /mnt/Synologic/System/Handy/$(date +%Y%m) Die Sicherung mit ''nohup'' in den Hintergrund schicken und gleichzeitig das Passwort per ''sshpass'' übergeben: sshpass -p 'geheim' nohup rsync -au -e ssh --exclude=.local/share/system/privileged --exclude=.config/signond --exclude=.local/share/harbour-halftrail/ --exclude=.cache/ --exclude=.mozilla/ --exclude=android_storage/.aptoide/ --delete --delete-excluded --progress nemo@jolla-ronni:/home/nemo/ /mnt/Synologic/System/Handy/$(date +%Y%m) & ==== Zugriff auf den internen Speicher ==== Im Jolla Recovery Menü Punkt //4) Shell// auswählen. Um auf eine Speicherkarte zuzugreifen: mkdir /mnt/sdcard mount /dev/mmcblk1p1 /mnt/sdcard Um auf den internen Flash-Speicher zuzugreifen: mkdir /mnt/rootfs mount /dev/mmcblk0p28 /mnt/rootfs Mit chroot kann man direkt auf dem System arbeiten: chroot /mnt/rootfs Hier kann man nun alle Operationen ausführen die man mag, z.B. eine Sicherung Wiederherstellen oder ein btrfs Filesystem check. ==== Fehler- Meldungen/Behebung ==== === CSD Tool === Vom Terminal mit den Kommando csd gestartet, liefert das csd Tool Informationen und Fehler über die Hardware. Dabei wird die Hardware komplett durch getestet. ===== BTRFS Befehle ===== Der btrfs Befehl unterstützt eine vielzahl von Optionen und Parametern ''btrfs --help'' gibt weitere Auskunft. Im folgenden werden Informationen über das Dateisystem angezeigt, mit den zweiten Kommando wird die Belegung des Filesystems angezeigt. Die Abkürzungen ''fi'' stehen für Filesystem und ''df'' steht für Diskfree. btrfs fi show btrfs fi df / Auflistung der BTRFS typischen Subvolumes: btrfs sub list / ==== BTRFS File-System Wartung ==== Balance chunks across the devices btrfs balance start [options] File-System check / # btrfs check --repair /dev/mmcblk0p28 enabling repair mode Checking filesystem on /dev/mmcblk0p28 UUID: 4b9a7c4f-83c2-49be-b2b7-6fe67cc12eae checking extents bad key ordering 10 11 bad block 113246208 incorrect offsets 3626 3634 bad block 128888832 owner ref check failed [113246208 4096] repair deleting extent record: key 113246208 168 4096 adding new tree backref on start 113246208 len 4096 parent 258 root 258 owner ref check failed [128888832 4096] repair deleting extent record: key 128888832 168 4096 adding new tree backref on start 128888832 len 4096 parent 1 root 1 Backref 145121280 parent 2 root 2 not found in extent tree Backref 145121280 root 2 not referenced back 0x9cea8 Incorrect global backref count on 145121280 found 1 wanted 0 backpointer mismatch on [145121280 4096] Backref 145125376 parent 2 root 2 not found in extent tree Backref 145125376 root 2 not referenced back 0xc10b8 Incorrect global backref count on 145125376 found 1 wanted 0 backpointer mismatch on [145125376 4096] Backref 145129472 parent 2 root 2 not found in extent tree Backref 145129472 root 2 not referenced back 0xc8010 Incorrect global backref count on 145129472 found 1 wanted 0 backpointer mismatch on [145129472 4096] Backref 145133568 parent 2 root 2 not found in extent tree Backref 145133568 root 2 not referenced back 0xc1308 Incorrect global backref count on 145133568 found 1 wanted 0 backpointer mismatch on [145133568 4096] Backref 145137664 parent 2 root 2 not found in extent tree Backref 145137664 root 2 not referenced back 0xcaba0 Incorrect global backref count on 145137664 found 1 wanted 0 backpointer mismatch on [145137664 4096] Backref 145149952 parent 2 root 2 not found in extent tree Backref 145149952 root 2 not referenced back 0xc11e0 Incorrect global backref count on 145149952 found 1 wanted 0 backpointer mismatch on [145149952 4096] repaired damaged extent references checking free space cache cache and super generation don't match, space cache will be invalidated checking fs roots parent transid verify failed on 93466624 wanted 2251799813685274 found 26 Ignoring transid failure root 258 inode 44871 errors 0 unresolved ref dir 35822 index 8796093022215 namelen 4 name 4668 filetype 2 error 40 root 258 inode 44875 errors 2001 unresolved ref dir 44800 index 7 namelen 8 name 3238.png filetype 1 error 0 root 258 inode 56618 errors 200 root 258 inode 56619 errors 0 unresolved ref dir 56618 index 2 namelen 51 name ea09c86e51a9d6484642de52bbd851cfffa39ba1nemo180x180 filetype 1 error 2 root 258 inode 56722 errors 0 unresolved ref dir 56618 index 4 namelen 51 name ea09c86e51a9d6484642de52bbd851cfffa39ba1nemo234x374 filetype 1 error 2 incorrect offsets 3626 3634 found 5935336472 bytes used err is 1 total csum bytes: 10523076 total tree bytes: 74870784 total fs tree bytes: 55795712 total extent tree bytes: 4431872 btree space waste bytes: 20293835 file data blocks allocated: 10993205248 referenced 10911858688 Btrfs v0.20-rc1 / # ==== btrfs restore ==== to save data to the SD card (which should be at least 16GB in size): mkdir -p /mnt/sd mount /dev/mmcblk1p1 /mnt/sd/ btrfs restore -i -v /dev/mmcblk0p28 /mnt/sd/ ===== Phone Reset Menü ===== - shut down - hold volume down - press power on - plug the usb Um in das Recover/Rest Menü zu gelangen muss das Jolla zunächst ausgeschaltet werden. Anschließend muss die Tastenkombination Lautstärke-Taste nach unten und die Power-Taste gedrückt werden bis das Phone eine Reaktion zeigt, wie z.B. Vibrieren, Leuchten der LED oder Display. Das der Recovery Modus aktiv ist erkennt man daran das auf dem Display das Jolla Logo angezeigt wird. Am PC kann nun über die Konsole die verfügbaren Netzwerkkarten angezeigt werden. Das Jolla nun per USB mit dem PC verbinden. Es wird nun eine Netzwerkkarte erzeugt welche man sich mit ''/sbin/ifconfig -a'' anzeigen lassen kann. Oft ist es die 2. Karte, bei systemd kann die bezeichnung der Netzwerkkarte anders als ethx sein. Ist der neuen NIC noch keine IP zugewiesen worden, muss der neuen Karte mit ''dhcpd ethx'' eine IP zugewiesen werden. ip a Im nächsten Schritt verbindet man sich per telnet mit der IP-Adresse 10.42.66.66 telnet 10.42.66.66 Es sollte nun folgendes Menü erscheinen: ----------------------------- Jolla Recovery v0.3.1 ----------------------------- Welcome to the recovery tool! The available options are: 1) Reset device to factory state 2) Reboot device 3) Bootloader unlock [Current state: locked] 4) Shell 5) Try btrfs recovery if your device is in bootloop 6) Exit Type the number of the desired action and press [Enter]: 5 Hier kann man zunächt durch Drücken von ''5'' probieren, das BTRFS Dateisystem Wiederherstellen. Sollte das nicht zum Erfolg führen, hilft nur noch die Werkseinstellungen durch drücken von ''1'' wiederherzustellen. Achtung :!: alles wird gelöscht!! 1 ALL DATA WILL BE ERASED! Clears everything from the device and reverts the software back to factory state. This means LOSING EVERYTHING you have added to the device (e.g. updates, apps, accounts, contacts, photos and other media). Are you really SURE? [y/N] y[CLEANUP] Starting cleanup! [CLEANUP] Umounting top volume... [CLEANUP] Deleting /mnt [CLEANUP] Cleanup done. Mounting /dev/mmcblk0p28 on /mnt sh: unlock: unknown operand [OK] No lockcode has been set. Proceeding... sh: unlock: unknown operand sh: shell: unknown operand [OK] Factory snapshots found. Resetting procedure started! Backing up current root and home subvolumes. If the backup fails, the old data will be deleted to let the recovery process continue. [Done] Restoring factory subvolumes... Create a snapshot of '/mnt/factory-@' in '/mnt/@' Create a snapshot of '/mnt/factory-@home' in '/mnt/@home' [Done] FSSync '/mnt' Checking swap subvolume Create subvolume '/mnt/@swap' [DONE] Swap is ok. Running flashing scripts from recovered snapshot ... Running /var/lib/platform-updates/flash-bootimg-sbj.sh ... 1754+0 records in 1754+0 records out 7184384 bytes (7.2 MB) copied, 0.352816 s, 20.4 MB/s [OK] Running /var/lib/platform-updates/flash-persist.sh ... 2048+0 records in 2048+0 records out 8388608 bytes (8.4 MB) copied, 0.343202 s, 24.4 MB/s [OK] Running /var/lib/platform-updates/flash-platform-images-sbj.sh ... 23+1 records in 23+1 records out 96464 bytes (96 kB) copied, 0.00732489 s, 13.2 MB/s 30+1 records in 30+1 records out 124588 bytes (125 kB) copied, 0.00863726 s, 14.4 MB/s 88+1 records in 88+1 records out 364360 bytes (364 kB) copied, 0.0189532 s, 19.2 MB/s 47+1 records in 47+1 records out 194360 bytes (194 kB) copied, 0.0125134 s, 15.5 MB/s 31+1 records in 31+1 records out 129180 bytes (129 kB) copied, 0.00891195 s, 14.5 MB/s 483+1 records in 483+1 records out 1980704 bytes (2.0 MB) copied, 0.0898825 s, 22.0 MB/s 11360+1 records in 11360+1 records out 46532096 bytes (47 MB) copied, 1.89181 s, 24.6 MB/s 2048+0 records in 2048+0 records out 8388608 bytes (8.4 MB) copied, 0.305021 s, 27.5 MB/s [OK] Running /var/lib/platform-updates/flash-recoveryimg-sbj.sh ... 2359+0 records in 2359+0 records out 9662464 bytes (9.7 MB) copied, 0.51671 s, 18.7 MB/s [OK] [DONE] flashing script succeeded. Deleting old subvolumes Delete subvolume '/mnt/rec-20140718_173358_@home' Delete subvolume '/mnt/rec-20140718_173358_@' Recovery procedure terminated SUCCESSFULLY! Now cleaning up... [CLEANUP] Starting cleanup! [CLEANUP] Umounting top volume... [CLEANUP] Umounting /mnt ===== Zeit gesteuertes Ausführen von Programmen ===== Unter Sailfish OS wird Zeitgesteuerte ausführen von Programmen nicht mit Cron vorgenommen sondern über Timer welche von systemd ausgeführt werden. Dazu muss eine timer Datei im Pfad ''/lib/systemd/system/'' angelegt werden, welche auf ''.timer'' endet. /lib/systemd/system/btrfs-balancer.timer