Wissenswertes

Blender Fehler amdgpu_query_info failed (-9) beheben

Nach einem Downgrade von libdrm funktioniert Blender wunderbar.

Nach einem Downgrade von libdrm funktioniert Blender wunderbar.

Seit meinem Umstieg auf Arch Linux mit xf86-video-amdgpu als Grafikkarten Treiber (für meine AMD RX570), kann ich Blender nicht mehr nutzen. Auch das Ausführen als root oder eine Neuinstallation der Treiber brachte nichts.

Beim Start von Blender taucht direkt diese Fehlermeldung auf:

~ $ blender
amdgpu_device_initialize: amdgpu_query_info(ACCEL_WORKING) failed (-9)
Segmentation fault (core dumped)

Schaut man im dump nach (unter /tmp/bmw27_gpu.crash.txt oder /tmp/blender.crash.txt), so findet man dort etwas wie dieses hier:

# Blender 2.79 (sub 0), Commit date: 2018-05-26 21:51, Hash 32432d91bbe

# backtrace
blender(BLI_system_backtrace+0x34) [0x5607730d03f4]
blender(+0xb7b562) [0x56077265c562]
/usr/lib/libc.so.6(+0x37e00) [0x7f5b39807e00]
/usr/lib/libdrm_amdgpo.so.1(amdgpu_get_marketing_name+0xc) [0x7f5afcb35bdf] [...weitere Zeilen...]
(Kompletter dump: pastebin)

Die Lösung

Die Lösung kam von einem Nutzer auf StackExchange, der vorschlägt ein Downgrade von libdrm auf eine ältere Version (2.4.93-1) zu machen.

Unter Arch habe ich dazu einfach das Tool downgrade benutzt:

  1. Aus dem AUR installieren, z.B. mit yay -S downgrade
  2. Version suchen: downgrade libdrm
  3. Passende Version (bei mir ging es mit 2.4.93-1) auswählen

Danach funktionierte alles einwandfrei.

Vim als einfache IDE nutzen

Vim bringt eigentlich schon alles mit um es als IDE zu nutzen.

Vim bringt eigentlich schon alles mit um es als IDE zu nutzen.

Eine IDE installieren und nutzen kann jeder, aber vim als IDE nutzen? Ich zeige ein paar Einstellungen, Shortcuts und Funktionen von vim, die es zu einer IDE machen. Dabei werde ich keine Plugins und keine Magie nutzen, denn vim kann bereits alles nötige.

Das sind die Funktionen, die ich zeige und um die ich die Standard Konfiguration erweitern werde:

  • Bedienung, die vim schon kann:
    • Standard zeug: Öffnen, speichern, schließen, …
    • Dateiexplorer
    • Tabs öffnen und nutzen
    • Bildschirm teilen
  • Navigation, die vim schon kann:
    • Suchen, ersetzen,
    • Springen (z.B. zum nächsten Vorkommnis, zur Definition, …)
  • Software bauen (build & run)
    • Debugging
  • Mit Anpassungen an vim:
    • Zeilennummern, Syntax highlighting, Cursor-Zeile hervorheben, …
    • Autovervollständigung mit drop-down Menü

Mehr Anpassungen sind das auch nicht.

Grundlegende Bedienung von vim

Das mit dem Modi sollte man schon drauf haben. Hier auch nur ganz kurz das Wichtigste:

  • Datei öffnen (ohne Tabs): :e /path/to/file
  • Datei speichern: :w
  • Datei schließen: :q und wenn du nicht vorher speichern möchtest: :q!
  • Hilfe anschauen: :help Befehl

Eingebauter Dateiexplorer

(mehr …)

CLI-Argumente in Bash-Scripten parsen

Argumente zu parsen ist nicht schwer. Auch nicht in Bash-Scripten.

Argumente zu parsen ist nicht schwer. Auch nicht in Bash-Scripten.

Es gibt viele Möglichkeiten Parameter, die an ein Bash Script übergeben wurden, zu verarbeiten. Hier zwei ähnliche Varianten, die das Parameterschema -o /foo/ und --output=/foo/ behandeln können. Das zweite Beispiel zeigt zudem noch die Verwendung von Kommandos.

String Manipulation mit Bash-Hausmitteln

Falls du mit String Manipulation (z.B. ${var#=*} oder Ähnliches) noch nicht vertraut bist, rate ich dir hier weiter zu lesen. In den folgenden Scripten holen wir uns aus Strings immer einen Teilstring. Der Befehl dabei sieht immer wie folgt aus: ${<VARIABLE><SPLIT-CHARS><REGEX>}

Die Split-Chars definieren was hinterher raus kommt, denn das Ergebnis ist immer ein zusammenhängender String. Von denen gibt es vier verschiedene: (mehr …)

Passwort Seite überarbeitet

Ein sicheres Passwort muss nicht kompliziert sein, aber ein paar Kriterien erfüllen.

Ein sicheres Passwort muss nicht kompliziert sein, aber ein paar Kriterien erfüllen.

Nur kurz ein Hinweis in eigener Sache: Ich habe die Seite über das Erstellen von Passwörtern überarbeitet.

Was sich geändert hat

Was ich geändert habe ich eigentlich alles. Jetzt ist es mehr Fakten gestützt, leichter verständlich und es wird eher die Frage nach dem „warum“ und nicht mehr ausschließlich die nach dem „wie“ behandelt.

Zudem gibt es jetzt viele Gedankenexperimente, die sehr anschaulich zeigen was für ein Unterschied z.B. die Länge eines Passwortes für dessen Sicherheit aus macht.

Was ihr dort finden werdet

  • Hintergrundwissen
    • Wie werden Passwörter gespeichert und geknackt?
    • Grober Überblick über Hashwerte und Hashfunktionen
    • Kriterien an sichere Passwörter?
  • Passwort Erstellung und Umgang
    • Methoden: Diceware und Generator
    • Hinweise zum sicheren Umgang

Viel Spaß damit und her mit Kritik und Verbesserungsvorschlägen 🙂

Zur Seite

OS-Internals #2: Ext2 und Dateien in Linux

In Linux ist alles eine Datei, selbst Ordner und Geräte.

In Linux ist alles eine Datei, selbst Ordner und Geräte.

In Linux gibt es bezüglich Dingen wie Dateien, Ordnern, Geräten, Schnittstellen und Verknüpfungen eine schöne Regel: „On a UNIX system, everything is a file; if something is not a file, it is a process.“. Bei Linux ist also alles eine Datei (ja, auch Ordner sind Dateien), darum sollten wir mal einen genaueren Blick darauf werfen.

Dateisystem: ext2 und inodes

Da man Dateien nicht einfach hintereinander weg speichern kann (da sich z.B. die Größe ändern kann), greifen UNIX-Systeme meist auf das Konzept der inode (index node) zurück. Um zu verstehen, was eine inode ist, sollte man sich aber anschauen, wie z.B. das ext2 Dateisystem (welches inodes benutzt und auf dem viele weitere Dateisysteme basieren) funktioniert.

Zunächst zur Hardware: Ein Block ist eine Menge von Sektoren einer Festplatte, wobei ein Sektor die kleinste zu adressierende Einheit einer Festplatte ist. Ein Block ist normalerweise 1, 2, 4 oder 8 KiB groß (also ggf. ein Zusammenschluss von Sektoren), was bei der Formatierung der Festplatte angegeben wird. Fasst man mehrere Blöcke zusammen ist es eine block group.

Kommen wir jetzt zur inode, was im Prinzip nichts weiter als eine block group ist. Sie ist 128 bytes groß und enthält Metadaten und Referenzen auf weitere Blöcke.
Jede Datei ist eine Referenz auf genau eine inode, wobei die eigentlichen Daten eben in anderen inodes liegen und referenziert werden. Es gibt 12 direkte Referenzen und 3 weitere Referenzen, die jeweils auf cluster zeigen. Ein cluster enthält 256 Referenzen auf weitere cluster oder inodes. Dadurch kann eine Datei bis zu 2 TiB groß werden. (mehr …)