Monthly Archives: März 2015

NFS Update verhindert Suspend / Hibernate

Seit einigen Tagen funktionierte Suspend2Ram auf meiner Workstation nichtmehr. Da ich dummerweise zum gleichen Zeitpunkt eine neue Grafikkarte eingebaut habe, dachte ich hier liegt der Fehler.

Weit gefehlt, der Übeltäter war das Paket nfs-utils-1.3.2. Unten der dmesg Output der mich auf die richtige Spur brachte. Es gibt auch schon mehrere Bugreports bei diversen Distributionen. Auch Debian ist betroffen. Da ich persönlich kein Hibernate benutze, kann ich hier nur vom kaputten Suspend berichten. Die Lösung dürfte aber in beiden Fällen funktionieren und lautet: NFS Downgrade.

Die Lösung: NFS Downgrade

Da NFS der Übeltäter ist und Suspend bei mir bisher einwandfrei funktionierte, war ein Downgrade die einfachste Lösung. Dummerweise habe ich meinen Package Cache vor einigen Tagen erst geleert. Die Lösung unter Archlinux lautet Arch Rollback Machine. Dort finden sich Mirrors, die eine Spiegelung älterer Builds vorhalten. Ich hab einfach die Version nfs-utils-1.3.1 genommen und Suspend funktioniert wieder einwandfrei.

Pro-Tipp: Bis zum nächsten NFS Update mit einem Fix sollte man an der Stelle noch das Paket nfs-utils in der pacman.conf unter „Ignored Packages“ eintragen.

nfs4.1-svc hangs and breaks suspend:
[ 242.963957] PM: Syncing filesystems ... done.
[ 243.535088] PM: Preparing system for mem sleep
[ 243.730776] Freezing user space processes ... (elapsed 0.002 seconds) done.
[ 243.733034] Freezing remaining freezable tasks ... 
[ 263.736906] Freezing of tasks failed after 20.007 seconds (1 tasks refusing to freeze, wq_busy=0):
[ 263.737154] nfsv4.1-svc D ffff8800a0fd7d78 0 951 2 0x00000000
[ 263.737165] ffff8800a0fd7d78 ffff8800a0f66d50 0000000000013f00 ffff8800a0fd7fd8
[ 263.737174] 0000000000013f00 ffff88012af86d50 ffff8800a0f66d50 ffffffffa0298aa0
[ 263.737181] ffff8800a0d70000 ffffffffa0298aa0 0000000000000000 ffff8800a0fd7cd8
[ 263.737188] Call Trace:
[ 263.737239] [] ? rpc_destroy_wait_queue+0x20/0x20 [sunrpc]
[ 263.737262] [] ? rpc_destroy_wait_queue+0x20/0x20 [sunrpc]
[ 263.737282] [] ? rpc_release_resources_task+0x34/0x40 [sunrpc]
[ 263.737301] [] ? __rpc_execute+0x2c8/0x4a0 [sunrpc]
[ 263.737313] [] ? lock_timer_base.isra.37+0x2b/0x50
[ 263.737323] [] schedule+0x29/0x70
[ 263.737332] [] schedule_timeout+0x11b/0x250
[ 263.737340] [] ? migrate_timer_list+0xd0/0xd0
[ 263.737362] [] nfs41_callback_svc+0x1aa/0x1e0 [nfsv4]
[ 263.737369] [] ? wait_woken+0x90/0x90
[ 263.737387] [] ? nfs4_callback_svc+0x60/0x60 [nfsv4]
[ 263.737396] [] kthread+0xd8/0xf0
[ 263.737404] [] ? kthread_create_on_node+0x1c0/0x1c0
[ 263.737412] [] ret_from_fork+0x58/0x90
[ 263.737419] [] ? kthread_create_on_node+0x1c0/0x1c0

Bilder verlustfrei komprimieren unter Linux

Viele Webworker dürften das Problem mit Bildern kennen. Irgendwie dauert die wenn möglich verlustfreie Komprimierung und das entfernen der Exif Daten dann doch länger oder kommt zu kurz. Ich habe mir jetzt vorgenommen künftig noch mehr darauf zu achten und bin auf die idiotensichere Lösung Trimage gestoßen.

Das Tool ist Open Source, für allerlei Plattformen verfügbar und kann genau eine Sache: Bilder im Format JPG oder PNG lossless zu komprimieren und auf Wunsch von sämtlichen Metadaten befreien.

Die Oberfläche ist bewusst simpel gehalten um ideal in den persönlichen Workflow eingebaut werden zu können. Außerdem kann das Tool auch prima übers Terminal angesteuert werden. Unterstützt werden JPGs und PNGs. Mehr brauche ich in 95% der Fälle nicht, insofern finde ich den KISS ansatz perfekt!

Webbasiert JPGs/PNGs verlustfrei komprimieren

Alternativ gibt es einige webbasierte Tool, wenn man keine Lust hat etwas zu installieren oder an fremden Rechnern sitzt. Mir am besten gefallen hat dabei https://compressor.io/.

Ist auch total fancy mit hipper .io URL…

Mit functions.php Code in Child Themes einfügen

WordPress bietet schon seit langem die Möglichkeit von Child Themes und man sollte es sich eigentlich zur Angewohnheit machen, direkt zu Beginn eins anzulegen. Man spart sich viel Stress und hat eigentlich nur Vorteile.

Will man bei einem Theme beispielsweise eine Datei verändern, kopiert man sie sich ins Child Theme und modifiziert wie gewünscht. Da diese nun priorisiert wird, werden die Modifikationen angezeigt.

Was aber nun, wenn man nur ein paar wenige Codezeilen in einem bestimmten Bereich einfügen will, z.B. im Header. Bei mir kommt das häufiger vor und es nervt gewaltig bei Theme Updates erst nachzusehen, ob die von mir modifizierte Datei auch geändert wurde und ich diese Änderungen dann ins Child Theme übernehmen muss.

Code irgendwo per functions.php einfügen

Praktischerweise gibt es dafür eine einfache Lösung: Mittels functions.php kann man vorhandene Funktionen deaktivieren bzw. neue einfügen. Also auch eine Funktion die in einem bestimmten Bereich ein wenig HTML injeziert.

Eine rudimentäre functions.php, welche Code in den Header einfügt sähe dann beispielsweise so aus:

<?php
add_action('wp_head', 'inject_wp_head');
function inject_wp_head(){
 ?> 
 <meta name="theme-color" content="#db5945">
 <?php 
}
?>

In diesem Beispiel füge ich ein Meta Tag für die mit Android Lolipop eingeführten Theme Colors ein. Nette Spielerei und jetzt habe ich den Code zum direkt kopieren auch endlich hier ;-)

 Scroll to top