Alle Artikel zu #linux


Fixing Arch boot after faulty package upgrade

I've been using a derivate of Arch Linux, Antergos, for over two years now, and while I am mostly satisfied, it does happen from time to time that a faulty package upgrade crashes my system and I can't boot. So here are some instructions on how to handle that case, especially if you did not prepare your bootloader for that case.

As mentioned, I am using Antergos, and with that, I have GRUB 2 as my bootloader.

GRUB boot loader main screen

So if you have been clever, you have already setup an entry in GRUB to boot into command line mode. If you have, you can skip this paragraph. If not, in the GRUB main screen (above), select the main boot entry and press E to edit it. Then find the line loading the Kernel, append systemd.unit=multi-user.target to it and press F10 to boot the modified script (it will not be saved). If you are outside the US, mind that the keyboard layout will not match yours. Find the US keyboard layout on Wikipedia if you need to look it up.

GRUB boot loader edit screen Antergos login screen

Now, login to your computer using your usual credentials. Mind that the keyboard layout is still US and this might bring difficulties to entering your password.

You now propably want three things. First, you want to fix that keyboard layout. Then you want to find the list of packages that have been upgraded and then you want to downgrade the faulty one. Here we go.

Change keyboard layout: sudo loadkeys de-latin

See man loadkeys for help. Note that this is not setxkbmap which does not work in command line only mode.

Check pacman log to find the list of upgraded packages: sudo tail /var/log/pacman.log -n 300 | less

Adjust the number if you get too many or too few entries. The entries have timestamps. You can use cat and grep instead to filter for a date if the upgrade was not recently.

Pacman logs

Now find the suspicious package. The log will show you the old and new version, you need this later. This time, I had a weird red screen when booting, and the only upgraded package that was somehow related to graphics was the Kernel, so I downgraded the Kernel. Other times, I got some error messages and had to look them up to see what packages might be related and usually I found one of the related packages in the list of upgraded ones.

Finally, sudo pacman -U /var/cache/pacman/pkg/name-of-package-1.9.tar.gz, with the name of the package from the log and also the version that was previously installed, will hopefully fix your problem. sudo shutdown -r now to reboot and good luck. :-)



Linux-Dateitypzuordnungen und Partitionsmounting

Trotz einigen Jahren Arbeit mit Linux als Hauptbetriebssystem kann ich immer noch nicht alles nachvollziehen. So wie folgende Begebenheit: Seit einiger Zeit habe ich Probleme damit, Dateien des Typs text/plain, also Dateien, die keinen erkennbaren Dateityp haben (typischerweise als Textdatei genutzte Dateien ohne Dateiendung und Header) per Doppelklick im Dateimanager von einem Programm meiner Wahl starten zu lassen. Es sollte Notepad++ sein, das ich per Wine nutze. Nach einigen Recherchen, wie man Wine-Applikationen überhaupt als Standardprogramm bzw. im Öffnen Mit-Kontextmenü nutzen kann, habe ich zumindest letzteres geschafft.

Nun sollte man normalerweise ganz einfach über die Eigenschaften einer Datei die Standardanwendung für den entsprechenden Dateityp ändern können. Dort war Notepad++ auch in der Tat sowohl für .txt-Textdateien als auch für ungekennzeichnete Dateien eingetragen. Trotzdem funktionierte das Öffnen der Dateien per Doppelklick bzw. "Öffnen" (nicht "Öffnen mit") nach einem mir nicht erkennbaren System manchmal nicht. Okay, ich schob das auf Wine und meine mangelnden Kenntnisse.

Als ich jetzt gerade aber Sublime Text installierte, um es mal auszuprobieren, wurde ich stutzig. Sublime ist nämlich nativ und sollte sich daher völlig problemlos als Standardanwendung für alles nutzen lassen. Und in der Tat hat es sich auch selbstständig für die betreffenden Dateitypen eingetragen - startete aber genauso wenig nachvollziehbar nicht immer.

Irgendwie fiel mein Blick beim Rumprobieren auf die Adresszeile im Dateimanager: Ich befand mich die ganze Zeit in meiner Dropbox, die auf einer separaten Partition liegt. Und während sich dort keinerlei Dateien öffnen ließen (bzw. eben nicht automatisch beim Doppelklick), ging das im Home-Verzeichnis problemlos. Sollte es etwas mit der Partition zu tun haben? Die war aus Faulheit und defaults irgendwelchen Gründen von root gemountet worden. Das habe ich jetzt geändert, weil es eh nicht sinnvoll war, und siehe da: Plötzlich öffnen sich alle Dateien ganz wie gewünscht.

Nun erklär mir mal bitte jemand den Zusammenhang zwischen dem Benutzer, der eine Partition einhängt (wohlgemerkt: nicht dem, der Schreibrechte darauf hat!), und der Funktion "Öffnen" beim Doppelklick auf nicht ausführbare Dateien...



Tastaturlayouts für eigene Zwecke anpassen unter Linux

Einer der Gründe, warum ich inzwischen seit mehreren Jahren nur noch Linux verwende, ist die gute Anpassbarkeit in jedem Detail. Nichts, was jeder braucht oder auch nur jeder nützlich finden würde, aber mir gefällt es. Vielleicht eine typische Eigenart von Programmierern - alles, was durch Anpassungen effizienter oder nützlicher werden könnte, soll es auch werden.

tastatur_kyrillisch.jpgZurzeit schreibe ich zum Beispiel oft Leadsheets für meine Band, dafür brauche ich immer wieder die Vorzeichen-Symbole ♭ und ♯. Natürlich kann man auch einfach b und # schreiben, das sieht dann aber doof aus: A♭ oder A♯ vs Ab oder A#. Vor allem wenn es As-Moll ist: Abm. Und man kann die Spezialsymbole zwar einfügen, obwohl sie auf der Tastatur fehlen, aber nur per Unicode-Spezialbefehl, in meinem Fall Strg + Shift + U, dann die Unicode-Folge (U266D bzw. U266F) und dann Leerzeichen. Dann hat man zwar A♭m, aber auf Dauer auch eine Arbeitsbeschaffungsmaßnahme.

Aber genug des Vorgeplänkels. Unter Linux kann man, sofern die verwendete Linux-Variante den X-Server verwendet (und das tun zumindest die gängigen alle), sein Tastaturlayout einfach anpassen. Ich habe das bereits früher mal gemacht, um die Belegung der internen Funktionstasten meines Notebooks zu ändern, aber dazu später. Ich wollte also gerne das ♭ erzeugen, indem ich die B-Taste mit Alt Gr zusammen verwende, und das ♯ entsprechend bei Alt Gr und #. Die Standard-Tastaturlayouts von Linux Mint haben auf der Alt Gr-Ebene schon irgendwelche anderen Sonderzeichen, auf die ich aber gut verzichten kann.

Die Tastaturlayouts sind unter /usr/share/X11/xkb/symbols gespeichert. Nicht jede mögliche Variante hat eine eigene Datei, nur die grundlegenden Layouts. Ich verwende zum Beispiel das Layout de in der Variante deadgraveacute - also die deutsche Belegung, bei der nur die Akzente Grave und Acute standardmäßig einen Buchstaben erwarten é è, das Circumflex ^ bekomme ich direkt. Die dafür zuständige Datei ist de.

In dieser Datei gibt es drei wesentliche Bestandteile:

xkb_symbols "deadgraveacute"
Dadurch wird die Variante gekennzeichnet. Es gibt immer eine Variante "basic" und dann abgewandelte Varianten. Tastenbelegungen können in mehreren Varianten vorkommen, es gilt, die richtige(n) zu ändern.
include "latin(type4)"
Damit nicht so viele Dopplungen auftauchen, können Layouts und Varianten eingebunden werden. Diese Zeile bindet das Layout latin ein, das sich in einer anderen Datei befindet, und zwar in der dort notierten Variante type4. Die Variante ist beim Einbinden optional. In meinem Fall befand sich die Tastenbelegung, die ich ändern wollte, gar nicht in der Datei de, sondern bereits in der Datei latin.
key { [ b, B, U266D, leftsinglequotemark ] };
In diesen Zeilen wird die tatsächliche Belegung der Tasten definiert. Der Name der Taste steht am Anfang in spitzen Klammern, die Namen richten sich dabei typischerweise nach der Standardbelegung im US-Layout. Hier bezeichnet AB05 die fünfte Taste1 auf der zweiten alphanumerischen Tastenreihe von unten. Es folgt dann wie oben zu sehen die Angabe der Belegung in der Reihenfolge Taste, Taste mit Umschalt, Taste mit Alt Gr und Taste mit Modifikatortaste für Ebene 4. Letztere kann unter Linux frei gewählt werden, bei mir ist es die Feststelltaste, die ich sonst nicht benutzen würde, bei manchen muss man dafür sowohl Umschalt als auch Alt Gr drücken. U266D steht für das Unicode-Zeichen 266D - das ist ♭.

Wenn alle beteiligten Layouts und Varianten nach Belieben angepasst wurden, muss das geänderte Layout noch übernommen werden. Dazu löscht man die Caches:
sudo rm /var/lib/xkb/*.xkm

Anschließend entweder einmal das Layout wechseln und zurückwechseln oder neu anmelden. Die neue Tastenbelegung sollte nun funktionieren. Per Skript aktiviert man mein Beispiel dann so:
setxkbmap de -variant deadgraveacute

Nun noch zu dem eingangs erwähnten Sonderfall mit der Notebooktastatur und der externen Tastatur. Bei meiner Notebooktastatur sind die Tasten Pos1 und Ende nur in Kombination mit der typischen Fn-Taste erreichbar. Das hat mich genervt. Praktischerweise ist das aber eine Hardware-Funktion, die Tastatur sendet in Kombination mit der Fn-Taste einen anderen Tastencode, so dass ich die Belegung mit der gleichen Methode wie oben einfach tauschen konnte.

Dadurch habe ich allerdings auch die normalen Tasten meiner externen Tastatur umbelegt. setxkbmap akzeptiert zwar die Angabe eines Gerätes, auf dass sich die Belegung beziehen soll (mit ID von xinput):
setxkbmap -device 3 de

aber in meinem Fall werden die Tastaturen zu merkwürdigen Virtual Keyboards zusammengefasst, da habe ich noch nicht raus, wie ich es schaffe, beide Tastaturen gleichzeitig mit dem korrekten Layout zu belegen. Bis ich das herausfinde, begnüge ich mich damit, die Belegung zusammen mit dem Monitor zu wechseln, dafür habe ich eh ein Skript auf eine Tastenkombination gelegt.
xrandr --output HDMI-0 --auto && xrandr --output LVDS-0 --off && xrandr --output VGA-0 --off setxkbmap -device 3 de -variant deadgraveacute

Damit habe ich immerhin an der Tastatur, die ich typischerweise zusammen mit dem entsprechenden Monitor verwende, die dafür passende Belegung. Und nun auch mit den Sonderzeichen, die ich gerne einfach eingeben können möchte.

--

Foto von Kecko auf Flickr, lizensiert unter CC-BY-ND 2.0

  1. Auf der amerikanischen Tastatur gibt es die Taste mit den größer- und kleiner-Zeichen nicht.


Evolution-Ordner aufräumen

Evolution könnte so ein schöner Mailclient für Linux-User sein, hätte es nicht die Angewohnheit, Mails zu zerfleddern, irgendwo hin zu schieben, wenn man es will, sie aber nicht zu verschieben, sondern bloß zu markieren, mysteriöse Ordner anzulegen...

Damit ist jetzt Schluss. Zu den beiden Einstellungen, die ich schon länger verwende, kamen nun in einer der letzten Versionen noch zwei neue Einstellungen, so dass man nun endlich seine Mails beisammen halten kann: Die virtuellen "Junk"- und "Trash"-Folder lassen sich nun deaktivieren.

Ich gehe hier mal davon aus, dass E-Mails per IMAP abgerufen werden und keine Sonderkonfigurationen mit Mailserver auf dem lokalen Rechner o.ä. verwendet werden.

Dann gibt es nämlich nur zwei Probleme zu lösen:

  • Entwürfe und verschickte Mails landen in einem lokalen Ordner statt auf dem Server
  • Spam-Mails und gelöschte Mails werden nur markiert und dann in Evolution in einem separaten Ordner angezeigt, aber nicht wirklich in einen separaten Ordner verschoben.

Dadurch guckt man schnell in die Röhre, wenn man seine Mails mal nicht mit Evolution abruft.

Alle vier Mailarten können in den "Standardeinstellungen" in den jeweiligen Kontoeinstellungen ein passendes Ziel bekommen. Entwürfe und Verschickte Mails werden dort einfach in einen anderen Ordner gesteckt. Für Junk ("unerwünschte Mails") und gelöschte Mails aktiviert man jeweils die Option "realen Ordner verwenden" und wählt auch dann einen Ordner auf dem Server. Damit die Fake-Ordner anschließend verschwinden, ist ein Neustart von Evolution erforderlich. Das ist der ganze Zauber. Fragt sich nur, wieso es so lange gedauert hat, bis die letztere Option eingebaut wurde.

Ich habe diese vier Ordner dann unterhalb meiner Inbox gelegt, während die Ordner, die ich manuell verwende, parallel zur Inbox liegen. Das Konto "Auf diesem Rechner" kann nun deaktiviert werden. So gestaltet sich mein Evolution plötzlich wunderbar aufgeräumt.

evolution-einstellungen.png

evolution-aufgeräumt.png



Mehr RAM nutzen

Eine der Stärken von Linux gegenüber Windows ist die effizientere RAM-Nutzung. Das System selbst benötigt schon nicht so viel, dadurch bleibt mehr für Programme und Dateien, und auch die Verteilung von Prozessen und Dateien auf echten (physikalischen) RAM und die Auslagerungspartition (Swap) funktioniert besser. Trotzdem kommt es vor, dass aktive Prozesse ausgelagert werden, obwohl noch genug physikalischer RAM zur Verfügung stehen würde. Dann wird z.B. das Browsen im Internet unglaublich langsam, weil die Tabs des Browsers nicht aus dem schnellen RAM, sondern von der Festplatte gelesen werden müssen. Bei mir unter Xubuntu passierte das besonders häufig nach dem Standby.

In dem Fall habe ich das System dann radikal angewiesen, den gesamten Swap in den physikalischen RAM zu räumen:

swapoff -a

Wenn man nicht sehr großzügig aufgestellt ist, sollte man direkt danach das Auslagern wieder erlauben:

swapon -a

Und damit in Zukunft generell nicht so schnell ausgelagert wird, kann man auch die Swappiness, die Tendenz des Systems, Daten auszulagern, einstellen. Auf den meisten Systemen kann man die getrost deutlich reduzieren, ausprobieren ist aber angesagt. Dazu editiert man die Datei /etc/sysctl.conf und setzt den Wert vm.swappiness auf irgendwas zwischen 0 und 100.

Alle diese Informationen stammen von help.ubuntu.com und können dort (in englischer Sprache) wesentlich detaillierter nachgelesen werden.



Veraltete Datenbank-Backups löschen

Dank des Perl-Skripts von MySQLDumper laufen Datenbank-Backups bei mir vollautomatisch. Mit der Funktion des regelmäßigen Aufräumens war ich aber nicht ganz zufrieden. Ich wollte gerne, dass immer die zehn neuesten Backups behalten werden und von den älteren nur noch eins pro Woche. Das geht mit folgendem Bash-Skript:

#!/bin/bash # Get all konzertheld backup files reverse ordered (konzertheld_yyyy_mm_dd_hh_mm.sql.gz) FILES=`ls konzertheld_* -r` # Initiate i=0 LWNR=0 # Go for f in $FILES do i=`expr $i + 1` # skip first 10 backups if [ $i -gt 10 ] then # Get the database name by extracting the substring before the position of the first _ # echo ${f:0:`expr index "$f" _`-1} # Get the date part by extracting a 10 long substring from the position after the first _ DATUM=${f:`expr index "$f" _`:10} DATUM=${DATUM//_/-} # Get week number WNR=`date +%V -d $DATUM` # If we already had that week number this is an older backup from that week. Delete it! if [ $LWNR -eq $WNR ] then echo $f fi # Set the last week number to the current one. So if the next backup is from a different week it will be kept, if not, deleted. LWNR=$WNR fi done

So werden von den älteren immer alle bis auf eines aus einer Woche gelöscht. Wenn man nur automatisiert backupt, kann man das natürlich auch ohne die Wochennummer machen und einfach jedes siebte Ei jede siebte Datei löschen, aber mit der obigen Methode werden auch alte Backups gelöscht, die man mal manuell angelegt hat. So wie ich an Tagen, an denen alle zehn Minuten die Datenbank explodieren könnte, so dass ich ständig Backups anstoße...



Ubuntu + Gnome 3: Standby beim Zuklappen des Laptop-Deckels

Seit gestern bin ich Linux-User. So wie es aussieht, diesmal dauerhaft, nicht nur für ein paar Tage - nach zwei harten Nächten läuft tatsächlich bereits fast alles so wie es soll.

Gehakt hat es beim Standby. Der funktionierte zwar super, aber nicht beim Zuklappen des Netbook-Deckels. Nach etwas Recherche zeigte sich: Seit Gnome 3 (genauer, glaube ich, 3.4) wird beim Zuklappen des Deckels kein Standby mehr ausgelöst, wenn ein externer Monitor angeschlossen ist. Ziemlich sinnfrei, wenn der externe Monitor der einzige ist, da dieser dann auf schwarz geschaltet wird - wird also während einer Beamer-Präsentation der Deckel zugeklappt, ist einem der Spott der Zuschauer trotzdem sicher.

Abhilfe schafft ein kleiner Griff in die ACPI-Konfiguration. Wir brauchen das Paket pm-utils, welches uns das Skript pm-suspend bereitstellt. Dann mit sudoedit die Datei /etc/acpi/lid.sh öffnen (vorher Sicherungskopie machen!) und im oberen Teil des großen if-Blocks diese beiden Zeilen auskommentieren:

export DISPLAY=":$displaynum"
. /usr/share/acpi-support/screenblank

und durch diese ersetzen.

pm-suspend

Die Konfiguration neu laden (sudo service acpid reload), fertig. Und größtenteils habe ich auch verstanden was man da tut: lid.sh wird ausgeführt, wenn der Deckel auf- oder zugeklappt wird (ausgelöst durch /etc/acpi/events/lidbtn). Da wir nur wollen, dass das Notebook in den Standby geht, wenn wir es zuklappen (sonst ist es unpraktisch...), schmeißen wir rigoros den Code raus, der ausgeführt wird, wenn das der Fall ist, und knallen ein Standby-Skript rein.

Und nun dürfen sich auch die erfreuen, die keine Ahnung haben, warum man sich mit sowas rumschlägt: Ich habe ein grünes Linux! Yay! hahahah

Green Linux