Xorg und Videotreiber

Veröffentlicht am: 23.01.2021 08:45

Wir werden in diesem Tutorial Xorg und die entsprechenden Grafiktreiber installieren und einrichten.

Xorg

Wir fügen unseren Benutzer der Gruppe „video“ hinzu, um Zugriff auf das DRI zu gewähren:

root#: pw groupmod video -m $USERNAME

Dann installieren wir die Pakete xorg und xscreensaver:

root#: pkg install xorg xscreensaver

FreeBSD als Gast auf der Virtualbox

Wenn wir FreeBSD unter VirtualBox verwenden wollen, benötigen wir das Paket virtualbox-ose-additions, damit wir die Auflösung automatisch angepasst wird.

root#: pkg install virtualbox-ose-additions

Anschließend tragen wir folgendes in die /etc/rc.conf ein.

root#: nano /etc/rc.conf =>

vboxguest_enable="YES"
vboxservice_enable="YES"
vboxservice_flags="--disable-timesync"

Video DRM Drivers (Intel, AMD, ATI)

Ab FreeBSD 11.2 können wir das Paket drm-fbsd11.2-kmod oder für FreeBSD 12 drm-fbsd12.0-kmod verwendet werden:

#FreeBSD 11.2
root#: pkg install drm-fbsd11.2-kmod

#FreeBSD 12
root#: pkg install drm-fbsd12.0-kmod

For amdgpu: sysrc kld_list+="amdgpu"
For Intel: sysrc kld_list+="/boot/modules/i915kms.ko"
For radeonkms: sysrc kld_list+="/boot/modules/radeonkms.ko"

Alte Treiber

Wenn die neuen DRM Treiber Probleme machen, können wir auch die alten Treiber verwenden.

Intel

root#: pkg install xf86-video-intel
root#: sysrc kld_list+="i915kms"

Radeon Graphic

root#: sysrc kld_list+="radeonkms"

Videobeschleunigung für Intel Grafikkarten

Für Intel Grafikkarten gibt es einen VA-API-Treiber (Video Acceleration API) für die Videobeschleunigung. Wir installieren das Paket libva-intel-driver mit diesem Befehl:

root#: pkg install libva-intel-driver

Dann testen wir, dass es funktioniert: Und vor allem testen wir auch den Suspend / Resume.

Für Benutzer der Intel Sandybridge-Karte (oder besser) kann die Aktivierung des SNA-Modus von Vorteil sein (Wir überprüfen dies, indem wir beispielsweise den Unterschied mit gtkperf messen).

Um diesen Modus zu aktivieren, eine Beispielkonfiguration:

root#: nano /usr/local/etc/X11/xorg.conf.d/20-video.conf =>

Section "Device"
    Identifier "Intel Graphics"
    Driver "modesetting"
    Option "AccelMethod" "sna"
EndSection

X11-Videotreiber für Nvidia

Für Nvidia-Treiber gibt es je nach Generation der Grafikkarte mehrere Treiber (nvidia-driver-304, nvidia-driver-340, nvidia-driver-390, nvidia-driver).

Damit wir wissen, welche GPU von welcher Version unterstützt wird schauen wir einfach bei nvidia nach.

Für eine aktuelle GPU installieren wir das Paket nvidia-driver folgendermaßen:

root#: pkg install nvidia-driver

root#: echo 'nvidia_load="YES"' >> /boot/loader.conf

root#: mkdir -p /usr/local/etc/X11/xorg.conf.d/

root#: nano /usr/local/etc/X11/xorg.conf.d/20-video.conf =>

Section "Device"
    Identifier "NVIDIA Card"
    VendorName "NVIDIA Corporation"
    Driver "nvidia"
EndSection

Wenn mehr als eine Grafikkarte in unserem Notebook vorhanden ist, kann der Eintrag BusID verwendet werden, um die gewünschte Karte auszuwählen. Eine Liste der BusIDs der Grafikkarten können wir mit pciconf -lv | grep -B3 display ausgegeben lassen.


root#: nano /usr/local/etc/X11/xorg.conf.d/20-video.conf =>

Section "Device"
    Identifier "NVIDIA Card"
    VendorName "NVIDIA Corporation"
    Driver "nvidia"
    BusID "PCI:1:0:0"
EndSection

System Console Frame Buffer (SCFB)

Wenn für unser FreeBSD-System kein beschleunigter Grafiktreiber verfügbar ist, können wir alternativ den Treiber scfb verwenden. Als erstes installieren wir das Paket xf86-video-scfb:

root#: pkg install xf86-video-scfb

Anschließend erstellen wir die Datei /usr/local/etc/X11/xorg.conf.d/driver-scfb.conf mit folgendem Inhalt:

root#: nano  /usr/local/etc/X11/xorg.conf.d/driver-scfb.conf => 

Section "Device"
    Identifier    "Card0"
    Driver        "scfb"
EndSection

dbus und HAL (für Gnome/KDE)

Die Verwendung von HAL ist veraltet, da Werkzeuge zunehmend devd verwenden sollten.

Xorg ist mit der Unterstützung von HAL kompiliert (die nur verwendet wird, um die automatische Installation von USB-Geräten unter Gnome / KDE-Umgebungen zu ermöglichen), wir konfigurieren den automatischen Start von diesen:

root#: sysrc dbus_enable=YES
root#: sysrc hald_enable=YES

Und wir starten diese Dienste:

root#: service dbus start
root#: service hald start

Standardmäßig lädt FreeBSD weder procfs noch fdesc. Aber für einige Anwendungen (wie HAL) werden diese benötigt. Wir bearbeiten die Datei /etc/fstab und fügen diese beiden Zeilen hinzu:

root#: nano /etc/fstab => 

proc    /proc        procfs     rw,late        0    0
fdesc   /dev/fd      fdescfs    rw,late        0    0

root#: mount /proc
root#: mount /dev/fd/

Polkit

In Bezug auf Software, die Polkit verwendet (z. B. xfce), können wir wie folgt festlegen, dass der Benutzer den Computer herunterfahren und den Ruhezustand für Benutzer der Gruppe „operator“ aktivieren kann.

root#: nano /usr/local/etc/polkit-1/rules.d/51.shutdown.rules =>

polkit.addRule(function (action, subject) {
    if ((action.id == "org.freedesktop.consolekit.system.restart" || action.id == "org.freedesktop.consolekit.system.stop") && subject.isInGroup("operator")) {
        return polkit.Result.YES;         
    }
});



root#: nano /usr/local/etc/polkit-1/rules.d/52.resume.rules =>

polkit.addRule(function (action, subject) {
    if (action.id == "org.freedesktop.consolekit.system.suspend" && subject.isInGroup("operator")) {
        return polkit.Result.YES;
    }
});

root#: chown -R polkitd /usr/local/etc/polkit-1/

Dann werden wir ein fehlendes Berechtigungsproblem bezüglich der Aktionen korrigieren. Wir sollten die folgenden Fehler in den /var/log/messages bemerken:

Jul 18 00:21:28 x220 dbus[20382]: [system] Rejected send message, 2 matched rules; type="method_call", sender=":1.19" (uid=1001 pid=63293 comm="") interface="org.freedesktop.ConsoleKit.Manager" member="CanSuspend" error name="(unset)" requested_reply="0" destination=":1.1" (uid=0 pid=44489 comm="")
Jul 18 00:21:28 x220 dbus[20382]: [system] Rejected send message, 2 matched rules; type="method_call", sender=":1.19" (uid=1001 pid=63293 comm="") interface="org.freedesktop.ConsoleKit.Manager" member="CanHibernate" error name="(unset)" requested_reply="0" destination=":1.1" (uid=0 pid=44489 comm="")

Um dieses Problem (und entsperren die „Standby“ und „Ruhezustand“ Aktionen) von z. B, XFCE zu beheben, müssen wir die Datei `usr/local/etc/dbus-1/system.d/ConsoleKit.conf bearbeiten, und füge diese 6 Zeileen nach der letzte deny Zeile ein:

root#: nano /usr/local/etc/dbus-1/system.d/ConsoleKit.conf =>

<deny send_destination="org.freedesktop.ConsoleKit"
      send_interface="org.freedesktop.DBus.Properties" />
<allow send_destination="org.freedesktop.ConsoleKit"
       send_interface="org.freedesktop.ConsoleKit.Manager"
       send_member="CanSuspend"/>
<allow send_destination="org.freedesktop.ConsoleKit"
       send_interface="org.freedesktop.ConsoleKit.Manager"
       send_member="CanHibernate"/>
<allow send_destination="org.freedesktop.ConsoleKit"
       send_interface="org.freedesktop.ConsoleKit.Manager"
       send_member="Restart"/>

Schriftarten

Wir installieren folgende hübsche Schriftarten:

root#: pkg install dejavu urwfonts bitstream-vera webfonts terminus-font hack-font

Wir überprüfen dann, was in Xorg durch diesen Befehl berücksichtigt wird:

root#: fc-list

Wenn wir ein Anti-Aliasing-Problem mit der Helvetica-Schrift haben (ich habe dieses Problem in Firefox), machen wir Folgendes, um es zu korrigieren:

root#: nano /usr/local/etc/fonts/local.conf =>

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
    <match target="pattern" name="family">
        <test qual="any" name="family">
            <string>Helvetica</string>
        </test>
        <edit name="family" mode="assign">
            <string>sans-serif</string>
        </edit>
    </match>      
</fontconfig>

UDEV

Seit FreeBSD 12.1 wird udev zur automatischen Konfiguration von Eingabegeräten verwendet.

Als erstes installieren wir folgende Pakete, libinput und xf86-input-libinput:

root#: pkg install libinput xf86-input-libinput

Wir werden nun folgende Konfigurationsdatei erstellen:

root#: nano  /usr/local/etc/X11/xorg.conf.d/99-myinput.conf => 

Section "InputClass"
    Identifier "libinput keyboard catchall"
    MatchIsKeyboard "on"
    MatchDevicePath "/dev/input/event*"
    Driver "libinput"
    Option "XkbRules" "evdev"
EndSection

Section "InputClass"
    Identifier "libinput touchpad catchall"
    MatchIsTouchpad "on"
    MatchDevicePath "/dev/input/event*"
    Driver "libinput"
    Option "MiddleEmulation" "on"
    Option "DisableWhileTyping" "on"
EndSection

In der /etc/sysctl.conf tragen wir folgendes ein:

root#: nano /etc/sysctl.conf => 

kern.evdev.rcpt_mask=12

Weitere einstellungsmöglichkeiten findet man hier.

DEVD

Wenn XOrg mit devd erstellt worden ist, müssen wir folgende Settings verwenden.

root#: echo 'hw.psm.synaptics_support="1"' >> /boot/loader.conf

sysrc moused_enable=YES

root#: service moused start

Für einen Trackpoint oder einen Elantec müssen wir das Wort „synaptics“ durch Ihren Zeigertyp ersetzen.

Unter Xorg verbessert der Befehl xset mouse 5 1 die Beschleunigung. Wir fügen einfach diese Zeile zu unserer ~/.xinitrc hinzu.

root#: nano ~/.xinit => 

xset mouse 5 1

Wir möchten, ein „MacBook“ ähnliches Scrollen mit zwei Fingern verwenden, dazu tragen wir in der /etc/sysctl.conf folgendes ein:

root#: nano /etc/sysctl.conf => 

hw.psm.synaptics.min_pressure=45
hw.psm.synaptics.max_pressure=220
hw.psm.synaptics.max_width=10

hw.psm.synaptics.vscroll_hor_area=1300
hw.psm.synaptics.vscroll_ver_area=-600
hw.psm.synaptics.vscroll_min_delta=50
hw.psm.synaptics.vscroll_div_min=100
hw.psm.synaptics.vscroll_div_max=150

hw.psm.synaptics.weight_current=3
hw.psm.synaptics.weight_previous=6
hw.psm.synaptics.weight_previous_na=20
hw.psm.synaptics.weight_len_squared=2000

hw.psm.synaptics.div_min=9
hw.psm.synaptics.div_max=17
hw.psm.synaptics.div_max_na=30
hw.psm.synaptics.div_len=100

hw.psm.synaptics.margin_top=200
hw.psm.synaptics.margin_right=200
hw.psm.synaptics.margin_bottom=200
hw.psm.synaptics.margin_left=200

hw.psm.synaptics.window_min=4
hw.psm.synaptics.window_max=10
hw.psm.synaptics.multiplicator=10000

hw.psm.tap_timeout=0
hw.psm.synaptics.tap_max_delta: 80
hw.psm.synaptics.tap_min_queue: 2
hw.psm.synaptics.taphold_timeout: 125000

Um den Tastaturtyp festzulegen, erstellen wir die Konfigurationsdatei /usr/local/etc/X11/xorg.conf.d/10-keyboard.conf, die mit folgendem Inhalt gefüllt ist:

root#: nano /usr/local/etc/X11/xorg.conf.d/10-keyboard.conf =>

Section "InputClass"
    Identifier "Keyboard Defauls"
    Driver "keyboard"
    MatchIsKeyboard "on"
    Option "XkbLayout" "de"
EndSection

Hinterlasse einen Kommentar

Verfügbare Formatierungen

Benutze Markdown-Befehle oder ihre HTML-Äquivalente, um deinen Kommentar zu formatieren:

Textauszeichnungen
*kursiv*, **fett**, ~~durchgestrichen~~, `Code` und <mark>markierter Text</mark>.
Listen
- Listenpunkt 1
- Listenpunkt 1
1. Nummerierte Liste 1
2. Nummerierte Liste 2
Zitate
> Zitierter Text
Code-Blöcke
```
// Ein einfacher Code-Block
```
```php
// Etwas PHP-Code
phpinfo();
```
Verlinkungen
[Link-Text](https://example.com)
Vollständige URLs werden automatisch in Links umgewandelt.

Auf der eigenen Website geantwortet? Sende eine Webmention!