tails 3.1 und Optimus-Grafik

tails (the amnesic incognito live system) ist ein Linux-System zum Arbeiten am Computer, ohne dort Spuren zu hinterlassen. Es verfügt außerdem über sichere Internet-Zugänge über das Tor-Netzwerk. Derzeit liegt es in der Version 3.1 vor.

Diese Version hat jedoch den Fehler, dass sie nicht auf Systemen startet, die den Nouveau-Treiber für Nvidia-Grafikkarten verwenden – z.B. auch Systeme mit Optimus-Grafik. Um auf diesen Systemen tails 3.1 doch starten zu können, muss man beim Erscheinen des Boot-Menues die Leertaste drücken und folgende Startoption anfügen:

modprobe.blacklist=nouveau

Hinweis: auf der beim Boot-Menue eingestellten englischen Tastatur befindet sich das =-Zeichen dort, wo sich auf der deutschen Tastatur die Akzente befinden.

Veröffentlicht unter Datenschutz, Linux | Verschlagwortet mit , , , | Kommentare deaktiviert für tails 3.1 und Optimus-Grafik

VMWare-Player 12.5.7 und openSUSE Leap 42.3

Problem: nach dem Upgrade auf openSUSE Leap 42.3 funktioniert das Kompilieren der Kernel-Module des VMWare-Plaer 12.5.7 nicht mehr.

Lösung: Unter diesem Link zwei korrigierte Modulquellen (vmmon.tar und vmnet.tar im Verzeichnis /usr/lib/vmware/modules/source) herunterladen. Dann funktioniert es einwandfrei. Dank an Hendrik Woltersdorf.

Veröffentlicht unter Linux, Virtualisierung | Verschlagwortet mit , | Kommentare deaktiviert für VMWare-Player 12.5.7 und openSUSE Leap 42.3

Mac OSX auf Linux mit VirtualBox

Wenn man gerade mal keinen Mac zur Verfügung hat und trotzdem auf OSX angewiesen ist, ist es möglich, das Apple-Betriebssystem in einer virtuellen Maschine laufen zu lassen. Das ist eigentlich legal, da die Apple-Lizenzbedingungen es seit der OSX-Version 10.7 erlauben, OSX auch in einer virtuellen Maschine auszuführen. Allerdings gilt dies nur, wenn die Virtualisierung auf einem Apple-Computer erfolgt. Auf Linux- oder Windows-PCs besteht hier eine rechtliche Unsicherheit. Nichtsdestotrotz hat die Community nach Möglichkeiten gesucht, OSX auf Linux-Maschinen zum Laufen zu bringen. Ich beschreibe hier den Weg, den ich gegangen bin.

Voraussetzungen: Virtual Box 5.10.0, ISO-Datei von OSX 10.6 “Snow Leopard”

Erzeugen der virtuellen Maschine mit folgenden Daten:

  • Name: OSX_aktuell
  • Typ: OSX
  • Version: El Capitan
  • Hauptspeicher: 4096 MB
  • Zwischenablage: bidirektional
  • Hauptplatine: Diskette abwählen!
  • 1 Prozessor
  • Bildschirm: 128 MB
  • Massenspeicher: 60 GB

Anpassen der virtuellen Maschine mit dem Programm VBoxManage (zunächst VirtualBox beenden, dann in der Konsole folgende Befehle ausführen:

VBoxManage modifyvm "OSX_aktuell" --cpuidset 00000001 000106e5 00100800 0098e3fd bfebfbff
VBoxManage setextradata "OSX_aktuell" "VBoxInternal/Devices/efi/0/Config/DmiSystemProduct" "iMac11,3"
VBoxManage setextradata "OSX_aktuell" "VBoxInternal/Devices/efi/0/Config/DmiSystemVersion" "1.0"
VBoxManage setextradata "OSX_aktuell" "VBoxInternal/Devices/efi/0/Config/DmiBoardProduct" "Mac-F2238BAE"
VBoxManage setextradata "OSX_aktuell" "VBoxInternal/Devices/smc/0/Config/DeviceKey" "ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc"
VBoxManage setextradata "OSX_aktuell" "VBoxInternal/Devices/smc/0/Config/GetKeyFromRealSMC" 1

Dann Virtualbox starten und OSX von der “Snow Leopard” Installations-CD installieren (wie auf einem “normalen” Mac). Dann die Softwareaktualisierung ausführen (mindestens zweimal). Anschließend im App-Store OSX “El Capitan” downloaden und das Installationsprogramm ausführen.

Danach noch folgende Anpassung der Bildschirmauflösung auf 1440 x9 00 Bildpunkte vornehmen:

VBoxManage setextradata "OSX_aktuell" "VBoxInternal2/EfiGopMode" 4

und schließlich die Zahl der Prozessoren auf 2 erhöhen. Fertig

Veröffentlicht unter Linux, Mac, OSX, VirtualBox, Virtualisierung | Verschlagwortet mit , , , | Kommentare deaktiviert für Mac OSX auf Linux mit VirtualBox

Optimus-Grafik mit Prime

Wer einen Laptop mit Optimus-Grafik hat – also eine Intel-Grafik, die den Bildschirm steuert und für alle “normalen” Darstellungsaufgaben zuständig ist und dazu eine Nvidia Grafik (ich habe z.B. die GeForce GTX 670 M), die für schnelle 3D-Anwendungen und Spiele zuständig ist – hat(te) unter Linux oft Probleme. Meist läuft nur die Intel-Grafik und der Nvidia-Teil ist nicht ansprechbar.

Zwischenzeitlich steht aber mit DRI_PRIME eine Methode zur Verfügung, die es ermöglicht diese sogeannten Hybrid-Grafiken als schnelle OpenGL-Renderer zu nutzen. Um dies zu nutzen wie folgt vorgehen:

$xrandr --listproviders

die Ausgabe sollte dann etwa wie folgt aussehen

Providers: number : 3
Provider 0: id: 0x8b cap: 0xb, Source Output, Sink Output, Sink Offload crtcs: 4 outputs: 5 associated providers: 2 name:Intel
Provider 1: id: 0x62 cap: 0x7, Source Output, Sink Output, Source Offload crtcs: 2 outputs: 1 associated providers: 2 name:nouveau
Provider 2: id: 0x62 cap: 0x7, Source Output, Sink Output, Source Offload crtcs: 2 outputs: 1 associated providers: 2 name:nouveau

Danach folgenden Befehl eingeben:

xrandr --setprovideroffloadsink nouveau Intel

Zur Überprüfung, ob alles geklappt hat, folgenden Befehl eingeben:

$ DRI_PRIME=1 glxinfo | grep "OpenGL renderer"

Es sollte dann folgende Ausgabe erscheinen

OpenGL renderer string: Gallium 0.4 on NVCE

Programme, die die Nvidia-Grafik nutzen sollen, können nun durch Voranstellen von DRI_PRIME=1 gestartet werden, z.B.

DRI_PRIME=1 glxgears
Veröffentlicht unter Linux | Verschlagwortet mit , , , | Kommentare deaktiviert für Optimus-Grafik mit Prime

Network-Manager besser als Wicked Services

Falls unter Linux (openSUSE 13.2) das WLAN oder andere Netzwerkverbindungen nicht mehr korrekt funktionieren, kann das daran liegen, dass neuerdings die “Wicked Services” zum Aufbau verwendet werden. Falls es dabei zu einem Fehler aufgrund fehlender Authentifizierung kommt, sollte man anstelle der “Wicked Services” den älteren “Network Manager” zur Steuerung der Netzwerkfunktionen auswählen. Dann läuft’s wieder.

Veröffentlicht unter Linux | Verschlagwortet mit , , , , | Kommentare deaktiviert für Network-Manager besser als Wicked Services

Steam friert ein

Nach einem Update oder Absturz von Steam kann es vorkommen, dass das Programm beim Start einfriert. In den Logdateien erscheint dann folgende Fehlermeldung

/home/buildbot/buildslave_steam/steam_rel_client_ubuntu12_linux/build/src/webhelper/../common/html/chrome_ipc_server.cpp (155) : Assertion Failed: !"Failed to bind shmem socket"

Um das Problem zu beheben muss (als root) die Datei /tmp/steam_chrome_shmem gelöscht werden. Danach startet das Programm wieder wie gewohnt.

Veröffentlicht unter Linux, Spiele | Verschlagwortet mit , , , | Kommentare deaktiviert für Steam friert ein

Qt-Standard-Buttons übersetzen

Wenn man QMessageBox::information oder ähnliches benutzt, sind die Standard-Buttons (z.B. QMessageBox::Yes) englisch beschriftet. Die deutsche Bezeichnung erscheint mit folgendem Code in der Main-Schleife:

QTranslator qttr;
qttr.load("qt_de", ".");
a.installTranslator(&qttr);

Wichtig ist dann nur noch, dass sich die mit Qt mitgelieferte Datei qt_de.qm im selben Verzeichnis befindet wie die ausführbare Programmdatei (unter Windows erledigt dies das Hilfsprogramm “windeployqt” mit).

Veröffentlicht unter Qt | Kommentare deaktiviert für Qt-Standard-Buttons übersetzen

Qt-Anwendung für iOS kompilieren

Wenn man versucht, eine mit Qt und der Qt Creator-IDE erstelle Anwendung in OSX für iPhone oder iPad zu kompilieren, erhält man folgende (verkürzte) Fehlermeldung beim Start der Anwendung im iOS-Simulator:

You are creating QApplication before calling UIApplicationMain.

Die Lösung für dieses Problem ist überraschend einfach (getestet mit Qt 5.3.1). Einfach den Code der “Main”-Funktion wie folgt ändern:

#if defined(Q_OS_IOS)
extern "C" int qtmn(int argc, char *argv[])
#else
int main(int argc, char *argv[])
#endif
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

Veröffentlicht unter iOS, Qt | Kommentare deaktiviert für Qt-Anwendung für iOS kompilieren

Qt: In Android per Touch-Geste scrollen

Wer mit Qt programmiert möchte auch, dass beim Kompilieren für Android die Touch-Gesten aktiviert werden – um zum Beispiel in einem Textfeld auf dem Tablet scrollen zu können. Dies erreicht man mit folgendem Programmtext im Konstruktor des Fensters:

#include <QScroller>
#if defined(Q_OS_ANDROID)
    QScroller::grabGesture(ui->mtv_plainTextEdit,QScroller::TouchGesture); 
#endif
Veröffentlicht unter Android, Linux, Qt | Kommentare deaktiviert für Qt: In Android per Touch-Geste scrollen

Qt – Android Smartphone verbinden

Um ein Android-Smartphone zum Testen von Programmen zu verwenden, die mit Qt entwickelt wurden, sind unter Linux folgende Schritte nötig:

1. Erstellen einer Datei /etc/udev/rules.d/51-android.rules mit folgendem Inhalt:

SUBSYSTEMS==”usb”, ATTRS{idVendor}==”hersteller_id″, ATTRS{idProduct}==”product_id″, SYMLINK+=”android_adb”, MODE=”0666″, OWNER=”username”

Hersteller-ID und Produkt-ID ermittelt man mit Hilfe von lsusb

2. Eingabe folgender Befehele:

sudo chmod 644 /etc/udev/rules.d/51-android.rules
sudo chown root /etc/udev/rules.d/51-android.rules
sudo service udev restart
sudo killall adb

falls nötig, den Rechner neu starten und/oder das Android-Smartphone noch einmal aus- und anstecken.

3. Auf dem Android-Smartphone muss der Debug-Modus aktiviert sein und außerdem das Installieren von unbekannten Quellen erlaubt werden.

4. Das mit Qt geschriebene Programm für Android kompilieren und Ausführen – im Android Device Manager erscheint nun das Android-Smartphone als verbundenes Gerät (neben den virtuellen Smartphones, die zum Testen eingerichtet wurden) und man kann die Anwendung dort installieren und testen 🙂

Veröffentlicht unter Android, Linux, Qt | Kommentare deaktiviert für Qt – Android Smartphone verbinden