Ubuntu - Building own Kernel

One of the reasons why I like Ubuntu is its simple usage. Most stuff works out-of-the-box or is configurable pretty easy. So it's also pretty easy to compile your own kernel.

The reason I wanted to build my own kernel were some issues with the amdgpu graphics card. Since Kernel 4.15 AMD has pushed it's recent open-source drivers upstream, so I wanted to give it a try.

In a nutshell

In principle you have to follow those simple steps

  1. MAKE SURE GRUB HAS A TIMEOUT so you can select an old kernel, in case something went wrong
  2. Download kernel sources from kernel.org
  3. Extract the sources into a directory and change into that directory
  4. Copy current configuration from /boot/config-uname -r to .config
  5. Check current configuration using make localmodconfig
  6. Compile using make [-j8]
  7. Install by using sudo make modules_install install

More details

For now I'm assuming we want to compile the current stable kernel, witch is 4.15.6

  1. Download kernel sources from kernel.org - I won't post a direct link to a kernel, because that will become outdated pretty soon!
  2. Extract the sources into a directory and change into that directory

I download the file and extract it with tar. For me it was like

In general it's save to hit the return key and just use the default values. But keep that in mind, if you run into problems you might have a more detailed look and the options

Now it's time to compile the kernel. Use -j4 to use 4 threads for building. I in general use up to 16, but that depends on your system. People report in general good results in taking a number between 1x and 2x the number of CPU cores you have. I have 8, so I choose 16, but that's up to you

Now watch the build process and grab a cup of coffee. That might take a while ....

If the build process completes, then run a simply a make modules_install and make install to install the new kernel

In Ubuntu this triggers a grub-update as well, so it should work the next time you boot into your system.

Nice 🙂

Ubuntu Linux - Map Wacom to one screen when using multiple screens

Quick Know-how post. How to limit a Wacom tablet in Ubuntu Linux to one screen, if you are having multiple displays.

Keywords: Wacom, Ubuntu, Linux, multiple screens, multiple displays


We need to gather system information with xrandr and xinput. First we use xrandr to determine the display, where the tablet should be active. Run xrandr

I want to have it on the primary display, witch is in my case DP-4.

Next we need to list the devices using xinput | grep -i Wacom

For me, it's id 12 to 15. No we map the Wacom tablet to DP-4

Done 🙂

Ubuntu 16.04 is here

Xerus-600x400
Eponym: African ground squirrel. They are cute! [Source]
Ubuntu 16.04 is here! You can immediately download it from the Ubuntu.com page. View the Release Notes here.

Since I'm away until the end of the next week, I will not have the time to try it out yet.

I am really looking forward to the announced snaps and the apt. I have hopes that the snaps will make a difference when it comes to unification of installing packages on different distributions. To be honest, unless the package is well supported, the situation is a mess. I don't want to be offensive, I know it's not easy to build a package for every distribution.

To support the community, my server now seed the Ubuntu Torrents 🙂

Have fun! I will have a closer look, when I'm back home. Until then - Hejda from Sweden 🙂

Fix Ubuntu

Ubuntu ab Version 12.10 wird datenschutzrechtlich bedenklich. Jede Eingabe im Dashboard wird an Drittanbieter gesendet, mehrere davon (z.B. Amazon) benuzten die Daten für personalisierte Werbung.

Abhilfe verschafft das Projekt Fix Ubuntu mit dem folgenden Shell-Script

Das Script ist hier auf meinem Blog ge-mirrored.

MTP in Ubuntu 12.04 und 12.10

Bei neueren Androiden ist der Zugriff auf das Dateisystem mittels einer USB-Partition nicht mehr möglich. Google entschied sich, das von Microsoft und Canon vorgestellte MTP Protokoll einzubauen, das leider nicht bei allen Betriebssystemen einwandfrei Out-of-the-box unterstützt wird.

 

Abhilfe in Ubuntu 12.04 und 12.10

Dieser Workaround geht über ein Update des virtuellen Gnome Filesystems gvfs.

Eine direkte Implementierung ist erst in Ubuntu 13. 04 "Raring Ringtail". Bis dahin, und bis sich ein Umstieg lohnt steht jedoch ein PPA für 12.04+ zur Verfügung, in dem das ganze nachinstalliert werden kann. Folgende Befehle sollten das ganze nachinstallieren:

sudo add-apt-repository ppa:langdalepl/gvfs-mtp
sudo apt-get dist-upgrade
sudo apt-get upgrade

Abmelden und neu anmelden sollte das ganze aktivieren. Ein Neustart ist meistens nicht erforderlich.

Ich habe das Procedere auf meinem Lenovo x220 Tablet und einem Samsung Galaxy Note 2 Tab getestet. Funktioniert ohne Probleme

Zurücksetzen

Einfach das PPA wieder entfernen und das Dateisystem gtvfs downgraden:


sudo ppa-purge ppa:langdalepl/gvfs-mtp
sudo apt-get update

Fertig! 🙂

Diavolino und Ubuntu

Diavolino. Von Evil Mad Science.

Das Diavolino ist ein freier, programmierbarer Mikrocontroller. Er ist Arduino-Kompatibel und muss selber zusamengelötet werden. Vorteile gegenüber einem zusammengebastelten Arduino

  • billiger (wenn man einen FTDI-Kabel/FTDI-Friend! besitzt)
  • Komponente können bei Bedarf aufgemotzt werden
  • Löten macht Spass 🙂

Zum Beginnen empfehle ich trotzdem einen Arduino. Ich habe selbst gemerkt, dass vor allem in der Anfangsphase etwas Frust unausweichlich ist ...

Karge beiliegende Beschreibung, die völlig ausreicht. Sofern man schon einmal gelötet hat ...

Nach ein paar wirklich nicht schweren Lötarbeiten, sollte der Controller fertig sein. Nochmals: Zum Einstieg Arduino verwenden. Diavolino ist sehr cool, aber man sollte vorher schon mal gelötet haben und sich mit dem Arduino auskennen, sonst ist Frust vorprogrammiert.

Assembly done. Diavolino rocking for action!

 

Diavolino und Ubuntu

Leidiges Kapitel. Hat mich etwa 2 Wochen gekostet bis ich das Teil endlich laufen hatte. Bis zum Schluss waren doch ein paar Tweak nötig, die ich hier kurz festhalten.

Ich gehe hier davon aus, dass der Leser sich bereits grundlegend mit dem Arduino auskennt sund schon mal ein Sketchbook kompiliert und geuploaded hat. Ansonsten könnt ihr das hier nachlesen.

OK. Zunächst braucht ihr einen FTDI Kabel oder ähnliches. Ich verwende den FTDI Friend! von Adafruit.
Damit ist zunächst einmal eine physische Verbindung zum Diavolino möglich. Leider funktionierte diese von Haus aus nicht mit dem Arduino von Ubuntu.

Ein Upload zum Diavolino endete stets mit

oder mit

Zunächst einmal wurde der FTDI-Friend nicht erkannt. Merkbar daran, dass das ls /dev/tty*-Kommando mit zwar mein Arduino angezeigt hat (ttyACM0), aber keinen FTDI-Friend (später als ttyUSB0)

ttyACM0 wird angezeigt, ttyUSB0 scheint nicht da zu sein.

Nach ein paar Recherchen hat mir dieser Beitrag geholfen, den FTDI Friend! mit Ubuntu zu koppeln:
Zunächst Vendor und Produkt-ID mit lsusb rausfinden

Notieren. Bei mir ist das also (Achtung! In HEX)

VENDOR-ID: 0x0403
PRODUCT-ID: 0x6001

Diese mit modprobe benutzen, um das ftdi-sio Kernel Modul richtig zu laden

Ohne vendor=0x0401 und product=0x06001 hat's bei mir nicht geklappt. Danach war jedoch ttyUSB0 zu finden:

Hurra! Doch ich hatte noch ein Problem: Auf ttypUSB0 konnte Arduino nicht schreiben. Merkbar daran, dass ttyUSB0 nicht unter "Tools->Serial Port" auftauchte ... Ein simples chmod reicht.

OK, ist grundsätzlich nicht gut, dass ALLE Benutzer lesend und Schreibend darauf zugreifen können. Consider it a temporary hack, and this should be removed soon! 😉

Viel Spass!

Fix Arduino in Ubuntu 12.04

HELL YEAH! Endlich ist das Adafruit-Packet aus Amerika eingetroffen. Los geht's mit etwa Arduino-Löt-Spass.

Doch anscheind ist die frische Arduino-Installation unter Ubuntu anderer Meinung und wirft einem gleich schon einen fetten Stein ins Boot: Hochladen auf das Arduno Board funktioniert von Haus aus nicht über die Arduino IDE.

Frustrierender Anblick: "Serial Port" ist nicht aktivierbar. Wie bitte soll ich da meinen Code hochladen?!??

Nach einigen Versuchen und etwas einlesen bin ich auf die Lösung gestoßen:

  1. Der aktive Benutzer muss zur Gruppe dialot gehören (sollte von Arduino selbst gelöst werden)
  2. Die Device file muss lese- und schreibbar sein

Gruppe dialout

Ersteres ist leicht zu bewerkstelligen, wenn sich die Arduino IDE noch nicht darum gekümmert hat:

sudo usermod -a -G dialout user

Wobei user durch den entsprechenden User ersetzt wird.

Device file

Zunächst die entsprechende Device file identifizieren. Mit

ls /dev/tty*

Bei mir läuft das Arduino unter ttyACM0, das Diavolino mit einem FTDI Friend als ttyUSB0. Entsprechende Device-file notieren, notfalls mit dmesg oder lsusb Nachforschungen anstellen.

Nehmen wir an, wir wollen ttyUSB0 für das Arduino verwenden. Dann wird die Device file jetzt für alle Benutzer zugängig gemacht:

sudo chmod a+rw ttyUSB0

Fertig!

Jetzt funztz: Serial port kann ausgewählt werden, mein Diavolino blinkt. 🙂

OK, damit läuft nun die Ardunio IDE unter Ubuntu 12.04. Viel Spass, und keep it moving 🙂