SocketCAN und der socketcand unter Arch Linux

Der Arch Linux Kernel hat zur Zeit keine SocketCAN Module integriert. Die einfachste Möglichkeit, dies zu ändern, ist, den aktuellen Kernel über das ABS neu zu bauen und dabei die benötigten Module zu integrieren. Die Basis dafür ist dieser Artikel.

**Custom Kernel mit SocketCAN-Support **Zunächst müssen einige Pakete installiert werden:

$ pacman -S abs base-devel

Jetzt wird ein Verzeichnis erstellt, in dem der Kernel neu kompiliert wird. Anschließend kann das PKGBUILD und Hilfsdateien des aktuellen Kernels in das Verzeichnis kopiert werden.

$ mkdir ~/kernelbuild
$ cd ~/kernelbuild
$ cp /var/abs/core/kernel26/* .

Damit die Module mit gebaut werden muss in die Konfiguration des Kernels eingegriffen werden. Dafür muss in der PKGBUILD in der build()-Funktion die ‘#’ vor ‘make xconfig’ entfernt werden. Dies sorgt dafür, dass beim Bauen des Pakets zwischendurch xconfig aufgerufen wird und eigene Einstellungen am Kernel ermöglicht. An dieser Stelle können dann unter ‘Networking support/CAN bus subsystem support’ die gewünschten Module selektiert werden. Anschließend die Konfiguration speichern und xconfig schließen.

$ makepkg

Danach fängt mkgpkg an, den Kernel zu bauen. Je nach verfügbarer Rechenleistung kann man die folgende Zeit mit einem Kaffee, der nächsten Mahlzeit, Einkaufen oder einem Kurzurlaub verbringen. Anschließend sollten drei Pakete entstanden sein, die nun installiert werden können und damit den aktuell installierten Kernel ersetzen:

$ pacman -S *.pkg.tar.xz

Zu beachten ist, dass entweder Installation von neueren Kernels aus dem Arch Repository verhindert werden, oder dieser Prozess mit jedem neuen Kernel erneut durchgeführt werden muss.

Der socketcand Nun wird der socketcand gebaut. Dafür wird vorausgesetzt, dass ein Tool wie yaourt vorhanden ist, das Pakete aus dem AUR installieren kann. Das Auschecken, Kompilieren und Installieren des socketcand ist damit ziemlich straightforward:

$ yaourt -S socketcand-git

Einbinden in den Startprozess Damit die Kernelmodule bereits beim Start geladen werden und der socketcand automatisch gestartet wird können die folgenden Änderungen in der /etc/rc.conf vorgenommen werden.

...
MODULES=(can vcan ... )
...
DAEMONS=(... @socketcand)