2016-05-24

"E:Failed to sysMapFile" Cyanogenmod 13 Nightly Update schlägt fehl [UPDATED]

English version

Ich benutze CM13 Nightly auf meinem Moto G (peregrine), was ziemlich rockt. Jetzt geht aber auf einmal der eingebaute Update-Mechanismus nicht mehr. Im Recovery kommt dieser Fehler:

E:Failed to sysMapFile /path/to/update.zip

Es hat sich herausgestellt, dass das passiert, wenn man seine SD-Karte als internen Speicher formatiert und noch eine alte 2.x Version von TWRP drauf hat.

Danke an "chriscjs" vom Cyanogenmod Forum, er hat mir den entscheidenden Tipp gegeben!

Was ist also der einfachste weg, das Recovery zu aktualisieren? Man braucht gar kein adb oder fastboot, man kann es einfach vom Play Store herunterladen, sehr schön!

Dazu muss man den root-Modus anschalten: Gehe in die Einstellungen -> Über das Gerät -> 7 Mal auf die Build-Nummer tippen -> zurück, Entwickler-Menü und hier root anschalten.

Zusätzlich braucht man busybox, was man auch im Play Store bekommt. Sobald das installiert ist, kannst du mit der TWRP app das Recovery auf den neusten Stand bringen.
Bei mir kam noch ein Fehler, dass Update wäre fehlgeschlagen. Funktioniert hat es aber trotzdem.

Jetzt kann ich die Nightlies wieder wie üblich installieren :)

PS: Ein Update hat geklappt aber das nächste hat mir wieder einen Fehler gebracht. Um es manuell zu installieren, wähle in TWRP "Install" und dann navigiere zu /sdcard/cmupdater.

PPS: Das nightly vom 2016-08-16 ist ohne das letzte Problem auf Anhieb durchgelaufen :)

"E:Failed to sysMapFile" Cyanogenmod 13 nightly update fails [UPDATED]

Deutsche Version

I'm running CM13 nightly on my Moto G peregrine, which rocks. Recently the installation process of a nightly update failed with this error while in recovery:

E:Failed to sysMapFile /path/to/update.zip

It turned out that this was because I formatted my SD card as internal storage and I ran an old 2.x version of TWRP which cannot handle that.
Thanks to user "chriscjs" from the Cyanogenmod forums to point me in the right direction!

So how is the easiest way to update the recovery? It turns out, you don't need adb or fastboot, you can just install it from the play store! Very nice!

The next step is to enable root: Go to settings -> About Device -> Tap 7 times on the Build Number -> go back to find the Developer menu where you can enable root.

As a requirement, busybox is needed, also available at the play store. Once installed, you can use the TWRP app to update the recovery.
I got an error that the recovery update failed, but it worked anyway.

Now I can install the nightly builds as usual :)

PS: One update worked but the now I get another error. To install new updates, in TWRP choose "Install", then navigate to /sdcard/cmupdater to install the update.

PPS: The nightly 2016-08-16 ran fine without the last issue :)

2016-02-22

VMware ESXi PSOD "GP Exception 13" could mean your CPUs don't match

Deutsche Version

Did you recently add another CPU to your VMware ESXi host? Now it doesn't boot but only shows this Pink Screen Of Death?



It turned out this happens when you install the same CPU model with a different stepping. It's not good for you!

You can check it with VMware's CPU checker: 
https://my.vmware.com/web/vmware/details?productId=136&downloadGroup=CPU%20IDENTIFICATION%20UTILITY

It should show "All CPUs are identical" obviously.

Alternativly, you can boot from a Linux Live-CD eg., GRML. Then read the stepping like this:


grep stepping /proc/cpuinfo


Of course the stepping should be identical.

VMware ESXi PSOD "GP Exception 13" bei unterschiedlichem CPU-Stepping

English version

Hast du eine zusätzliche CPU in deinen VMware ESXi Host eingebaut? Jetzt bootet er nicht mehr und zeigt diesen Pink Screen Of Death?



Das passiert, wenn es zwar das selbe CPU-Modell ist, aber nicht das gleiche Stepping. It's not good for you!

Mit dem VMware CPU checker kann man das prüfen: 
https://my.vmware.com/web/vmware/details?productId=136&downloadGroup=CPU%20IDENTIFICATION%20UTILITY
Es sollte natürlich "All CPUs are identical" anzeigen.

Alternativ kann man eine Linux Live-CD wie GRML booten. Das Stepping kann man so checken:

grep stepping /proc/cpuinfo

Dabei sollte natürlich überall das selbe Stepping angezeigt werden.

IPMI Konsole: "Unable to find certificate in Default Keystore for validation" Java Fehler

English version

Hast du kürzlich ein Update auf Java 8 gemacht? Dann hast du vielleicht diesen Fehler, wenn du dich auf die KVM Konsole einer IPMI Karte verbinden willst:



Die Lösung? Ein Update der IPMI Firmware:
http://supermicro.com/support/bios/firmware0.aspx

Danach hat die Web-Oberfläche in einer alten Chrome-Version nicht mehr funktioniert, in Firefox geht es aber einwandfrei.

IPMI Console: "Unable to find certificate in Default Keystore for validation" Java Error

Deutsche Version

Did you recently update to Java 8? Then you might get this error when connecting to a Supermicro IPMI Console.



Solution? Update the IPMI Firmware:
http://supermicro.com/support/bios/firmware0.aspx

Afterwards the web interface wouldn't work in an old Chrome version but Firefox worked just fine.

2016-02-14

Prevent Linux NAS from standby while using Kodi, Plex, DLNA, Samba, FireTV, BTsync (Updated)

Deutsche Version

I set up a new home NAS and Plex Mediacenter on Linux Mint 17.2 (based on Ubuntu 14.04) and I wanted it to go into standby when it's not used. The problem is, that it also activates standby when Samba, Plex, Kodi (on FireTV) or DLNA is used.

Collin Delker posted a very good solution for Plex, thanks!
http://www.collindelker.com/wp/2015/07/plex-linux-prevent-sleep/

I took this and added functions to prevent sleeping when using Plex via DLNA (port 32469), this was important for the Playstation 3.
Note that the standby only works if X is running. I access X via VNC to set up the standby time since the box doesn't have a display attached. If somebody knows how to set up standby without X or how the standby can be set to 2 hours, let me know in the comments!

Just like Collin, I use Wake-on-LAN (WoL) to wake it up: https://www.depicus.com/wake-on-lan/

The best Android app: https://play.google.com/store/apps/details?id=co.uk.mrwebb.wakeonlan

Each script must be placed in /etc/pm/sleep.d/
The suspend actions are logged here: /var/log/pm-suspend.log


05_plexkeepawake

#!/bin/bash
 case "$1" in
     suspend|suspend_hybrid|hibernate)
        s=$(curl localhost:32400/status/sessions 2>/dev/null | sed -n "s/.*MediaContainer size=\"\(.*\)\".*/\1/p" )
        if [ $s -gt 0 ];then
                echo "Plex session active, cancel suspend"
                exit 1;
        fi
        dlna=$(netstat -aptun|egrep '32469.*EST')
        if [ -n "$dlna" ];then
                 echo "Plex session active, cancel suspend"
                 exit 1;
        fi
esac




06_sambakeepawake


#!/bin/bash
MOUNTPOINT=mango
case "$1" in
 suspend|suspend_hybrid|hibernate)
 s=$(smbstatus -L|awk '{print $6}'|sort -u|egrep -v '^$|NONE|Oplock')
 s2=$(lsof -n 2>/dev/null|egrep 'smb.*REG.*${MOUNTPOINT}')
 if [ "x${s}${s2}" == "x" ]; then
   true
 else
   echo "Samba session active, cancel suspend"
   exit 1;
 fi
esac

07_ssh_keepawake


#!/bin/bash
case "$1" in
     suspend|suspend_hybrid|hibernate)
        sshactive=$(netstat -aptun|egrep '22.*EST')
        if [ -n "$sshactive" ];then
                 echo "SSH session active, cancel suspend"
                 exit 1;
        fi

esac

08_btsync (change the TARGET_IP)

#!/bin/bash
TARGET_IP=192.168.1.12
case "$1" in
     suspend|suspend_hybrid|hibernate)
        btsync=$(netstat -aptun|egrep '${TARGET_IP}.*EST.*btsync')
        if [ -n "$btsync" ];then
                 echo "btsync active, cancel suspend"
                 exit 1;
        fi
esac


Next step: re-animate my OpenVPN server on my Raspi to access Plex from outside and include a WoL command when connecting.


Linux NAS Standby verhindern bei Benutzung von Kodi, Plex, DLNA, Samba, FireTV, BTsync

English version

Zu Hause habe ich ein NAS mit Linux Mint 17.2 (basiert auf Ubuntu 14.04) und ich will, dass es in Standby geht, wenn es nicht benutzt wird.
Problem war, dass es auch in Standby ging, wenn es durch Samba, Plex, Kodi (auf einem FireTV) oder per DLNA in Benutzung war.

Von Collin Delker habe ich eine super Lösung für Plex gefunden, danke!
http://www.collindelker.com/wp/2015/07/plex-linux-prevent-sleep/

Ich habe sein Script ausgebaut und noch eine Ausnahme hinzugefügt wenn der Port 32469 von Plex verbunden ist. Das war wichtig für den Zugriff von der Playstation 3.

Das Standby funktioniert allerdings nur, wenn eine grafische Oberfläche läuft. Ich verbinde mich mit VNC um das Standby zu aktivieren, da der Rechner keinen Monitor hat. Falls jemand weiß, wie man Standby ohne X benutzen kann, oder wie man die Zeit auf 2 Stunden erhöhen kann, bitte ich um einen Kommentar!

Genauso wie Collin benutze ich Wake-on-LAN (WoL) um die Mühle aufzuwecken: https://www.depicus.com/wake-on-lan/

Die beste Android App dafür: https://play.google.com/store/apps/details?id=co.uk.mrwebb.wakeonlan

Alle Scripte müssen hier gespeichert werden: /etc/pm/sleep.d/
Die Aktivitäten werden hier geloggt: /var/log/pm-suspend.log

05_plexkeepawake

#!/bin/bash
 case "$1" in
     suspend|suspend_hybrid|hibernate)
        s=$(curl localhost:32400/status/sessions 2>/dev/null | sed -n "s/.*MediaContainer size=\"\(.*\)\".*/\1/p" )
        if [ $s -gt 0 ];then
                echo "Plex session active, cancel suspend"
                exit 1;
        fi
        dlna=$(netstat -aptun|egrep '32469.*EST')
        if [ -n "$dlna" ];then
                 echo "Plex session active, cancel suspend"
                 exit 1;
        fi
esac




06_sambakeepawake


#!/bin/bash
MOUNTPOINT=mango
case "$1" in
 suspend|suspend_hybrid|hibernate)
 s=$(smbstatus -L|awk '{print $6}'|sort -u|egrep -v '^$|NONE|Oplock')
 s2=$(lsof -n 2>/dev/null|egrep 'smb.*REG.*${MOUNTPOINT}')
 if [ "x${s}${s2}" == "x" ]; then
   true
 else
   echo "Samba session active, cancel suspend"
   exit 1;
 fi
esac

07_ssh_keepawake


#!/bin/bash
case "$1" in
     suspend|suspend_hybrid|hibernate)
        sshactive=$(netstat -aptun|egrep '22.*EST')
        if [ -n "$sshactive" ];then
                 echo "SSH session active, cancel suspend"
                 exit 1;
        fi

esac

08_btsync (change the TARGET_IP)

#!/bin/bash
TARGET_IP=192.168.1.12
case "$1" in
     suspend|suspend_hybrid|hibernate)
        btsync=$(netstat -aptun|egrep '${TARGET_IP}.*EST.*btsync')
        if [ -n "$btsync" ];then
                 echo "btsync active, cancel suspend"
                 exit 1;
        fi
esac


Nächster Schritt: OpenVPN auf meinem Raspi einrichten und beim Verbinden automatisch ein WoL Kommando auslösen.

2015-06-02

Optware, ipkg und Bootstrap für Synology DS715,DS1515,DS2015xs,DS215+,DS416 (armv7l)

English version

Ich möchte Optware auf einem Synology NAS mit  Annapurna Labs Alpine armv7l CPU laufen lassen, habe aber keine richtige Anleitung und keine Binaries dafür gefunden. Also habe ich mir selbst die Mühe gemacht, also habt ihr hier alles was ihr braucht und auch wie man selbst Pakete kompilieren kann! Es war ne Menge Arbeit und ich möchte "vputz" vom Synology Forum für das HowTo zum Aufsetzen der Build-Umgebung danken.

Das sollte auf allen Systemen mit Annapurna Alpine CPU funktionieren.

Ich habe keinen richtigen Webspace für eine Repository und ich habe nicht alle Pakete kompiliert, daher ist noch Handarbeit angesagt.

Hinterlasst mir einen Kommentar mit Fragen, Korrekturen usw. :)

Bootstrap

Den Bootstrap habe ich von einer anderen ARM-Umgebung. wget.ipk und ipkg-opt.ipk mussten ersetzt werden. Zusätzlich musste noch das Installer Script angepasst werden, so dass es die richtige CPU prüft:
Lade es herunter, kopiere es aufs NAS und führe den Installer aus:

tar xzf bootstrap-alpine.tgz
cd bootstrap-alpine
sh bootstrap.sh

Pakete

Mein primäres Ziel war es rsnapshot laufen zu lassen. Daneben habe ich noch andere Tools wie screen, htop, cron, bash, vim etc. kompiliert:

https://dl.dropboxusercontent.com/u/104542872/Blog/packages-alpine.tgz

tar xzf packages-alpine.tgz
mv packages-alpine /opt
ipkg update 
ipkg install rsnapshot

Wenn du die Pakete auf einem Webserver oder in einem anderen Pfad ablegen willst, muss diese Datei geändert werden:
/opt/etc/ipkg/cross-feed.conf

Mehr Pakete:
bzip2 https://dl.dropboxusercontent.com/u/104542872/Blog/bzip2_1.0.6-1_arm.ipk
glib https://dl.dropboxusercontent.com/u/104542872/Blog/glib_2.20.4-1_arm.ipk
iptraf https://dl.dropboxusercontent.com/u/104542872/Blog/iptraf_3.0.0-1_arm.ipk


Kompilieren

Ich habe eine Debian 8 64 Bit VM benutzt. Man braucht subversion, build-essential und wenn man auf einem 64 Bit System kompiliert, die 32bit Libs:

sudo apt-get install subversion build-essential autoconf
sudo apt-get install lib32gcc1 lib32stdc++6 lib32z1 lib32readline6

svn co http://svn.nslu2-linux.org/svnroot/optware/trunk optware
cd optware/platforms/
wget https://dl.dropboxusercontent.com/u/104542872/Blog/toolchain-ds2015xs.mk
wget https://dl.dropboxusercontent.com/u/104542872/Blog/packages-ds2015xs.mk
cd ../scripts
rm optware-check-package.pl
wget https://dl.dropboxusercontent.com/u/104542872/Blog/optware-check-package.pl
cd ..
make ds2015xs-target
cd ds2015xs
make toolchain
touch builds/invalid.xsh
make hello-ipk # append -ipk to compile & create the package
make index
ls packages
scp -r packages root@nas:/opt/packages-alpine

[UPDATE] Ich habe in der Datei toolchain-ds2015xs.mk die TARGET_CUSTOM_FLAGS (CFLAGS) Kompiler-Parameter für die Platform arm-linux-gnueabihf verbessert: -fPIC -marm 
Entferne oder ändere diese falls das Kompilieren nicht mehr klappt.

Manche der Paket-Quellen sind nicht mehr verfügbar. Dann kann man nach dem exakten Dateinamen googlen, die Datei manuell herunterladen und im Ordner "downloads" ablegen. Danach wieder make ausführen.
Einige Pakete werden ohne weitere Änderungen nicht kompilierbar sein, z.B. Perl.

Hallo Leute von nslu2, falls ihr das lest, ihr könnt gerne das Target zu euren Quellen hinzufügen!

Quellen

Anleitung zum Aufsetzen der Build-Umgebung: 
http://forum.synology.com/enu/viewtopic.php?f=40&t=69860&start=60#p305182

Synology Entwickler-Platform:
http://sourceforge.net/projects/dsgpl/files/DSM%205.2%20Tool%20Chains/Annapurna%20Alpine%20Linux%203.2.40/alpine-gcc472_glibc215_alpine-GPL.txz/download

ipkg Quellcode: 
http://ipkg.nslu2-linux.org/sources/ipkg-0.99.163.tar.gz

Optware, ipkg and Bootstrap for Synology DS715,DS1515,DS2015xs,DS215+,DS416 (armv7l) [UPDATED CFLAGS]

Deutsche Version

Since there is no proper guide and no binaries for this NAS with the Annapurna Labs Alpine armv7l CPU, here is all you need to install bootstrap and compile packages! This was a lot of work and I would like to thank the user "vputz" from the Synology forums for the basics how to set up the build environment.

This should work on all system with an Annapurna Alpine CPU.

I don't have a proper web space to host a the package repository and I didn't compile all packages so you have to use your own repository and compile missing packages.

Leave me a comment if you have questions, corrections etc. :)

Bootstrap

I used the bootstrap for another ARM based bootstrap as a base and replaced only wget.ipk, ipkg-opt.ipk and modified the installer script to check for the correct CPU:
Download it, copy it to the NAS and run the installer:

tar xzf bootstrap-alpine.tgz
cd bootstrap-alpine
sh bootstrap.sh

Packages

To get started with some packages, you can download the couple of packages I compiled for running rsnapshot and basic tools like screen, htop, cron, bash, vim, ...:

tar xzf packages-alpine.tgz
mv packages-alpine /opt
ipkg update 
ipkg install rsnapshot

If you want to place the packages elsewhere or on a webserver, modify:
/opt/etc/ipkg/cross-feed.conf

More packages:
bzip2 https://dl.dropboxusercontent.com/u/104542872/Blog/bzip2_1.0.6-1_arm.ipk
glib https://dl.dropboxusercontent.com/u/104542872/Blog/glib_2.20.4-1_arm.ipk
iptraf https://dl.dropboxusercontent.com/u/104542872/Blog/iptraf_3.0.0-1_arm.ipk

Compiling

I used a Debian 8 64bit machine to set this up. You need subversion, build-essential and, if you compile on 64bit, 32bit libs:

sudo apt-get install subversion build-essential autoconf
sudo apt-get install lib32gcc1 lib32stdc++6 lib32z1 lib32readline6

svn co http://svn.nslu2-linux.org/svnroot/optware/trunk optware
cd optware/platforms/
wget https://dl.dropboxusercontent.com/u/104542872/Blog/toolchain-ds2015xs.mk
wget https://dl.dropboxusercontent.com/u/104542872/Blog/packages-ds2015xs.mk
cd ../scripts
rm optware-check-package.pl
wget https://dl.dropboxusercontent.com/u/104542872/Blog/optware-check-package.pl
cd ..
make ds2015xs-target
cd ds2015xs
make toolchain
touch builds/invalid.xsh
make hello-ipk # append -ipk to compile & create the package
make index
ls packages
scp -r packages root@nas:/opt/packages-alpine

[2015-10-11] The file toolchain-ds2015xs.mk contains updated TARGET_CUSTOM_FLAGS (CFLAGS) compilation flags for the target arm-linux-gnueabihf: -fPIC -marm 
Remove or modify those if you have trouble compiling

Note that some links to source packages are dead so if you stumble across one, search for the exact filename in Google and download the package to the downloads folder. Then run make again.
Also note that some packages will only compile with further modifications, eg. Perl. Let me know if you need to compile Perl and I will create a patch.

If the nslu2 guys are reading this, you are welcome to add the target to your sources.

Sources

Basic guide to set up new build system: http://forum.synology.com/enu/viewtopic.php?f=40&t=69860&start=60#p305182

Synology dev platform:
http://sourceforge.net/projects/dsgpl/files/DSM%205.2%20Tool%20Chains/Annapurna%20Alpine%20Linux%203.2.40/alpine-gcc472_glibc215_alpine-GPL.txz/download

ipkg source: 
http://ipkg.nslu2-linux.org/sources/ipkg-0.99.163.tar.gz