Treiber unter FreeBSD

FreeBSD lädt standardmäßig nicht alle möglichen Treiber, es muss angewiesen werden, die für unsere Hardware spezifischen Treiber zu laden.

Für eine Liste von ungeladenen Treibern können wir beispielsweise den folgenden Befehl verwenden:

dmesg | grep "no driver attached"
[root@laptop]~#dmesg | grep "no driver attached"
pci12: <network> at device 0.0 (no driver attached)
pci0: <multimedia, HDA> at device 27.0 (no driver attached)
pci0: <serial bus, SMBus> at device 31.3 (no driver attached)
pci9: <base peripheral, SD host controller> at device 0.1 (no driver attached)
pci9: <mass storage> at device 0.2 (no driver attached)

Hier fällt auf: ein Audio-Chip (Multimedia, HDA), eine Netzwerkkarte, das WLAN in meinem Fall (Netzwerk), ein SMBus-Chipsatz (serieller Bus, SMBus) und ein SD-Kartenleser.

Laden der Treiber des SD-Kartenlesers

sysrc kld_list+="mmc mmcsd sdhci"

Audio

Die gebräuchlichsten Audiotreiber sind standardmäßig seit 9.0 aktiviert. Wenn dies nicht der Fall ist, laden wir einen „Meta“ -Treiber, der alle Audiotreiber lädt, und wir schauen uns dann den an, der akzeptiert wird:

[root@laptop]~#kldload snd_driver
[root@laptop]~#cat /dev/sndstat
FreeBSD Audio Driver (newpcm: 64bit 2007061600/amd64)
Installed devices:
pcm0: <Intel 82801H High Definition Audio Controller> at memory 0xf6dfc000 irq 21 kld snd_hda [20080420_0052] [MPSAFE] (1p:1v/1r:1v channels duplex default)

In diesem Fall stimmen die snd_hda-Treiber überein. Dieser Treiber ist bereits seit der Version 9.0 standardmäßig im generischen Kernel enthalten, aber für eine ältere Version muss das Laden mit der alten Methode deklariert werden:

sysrc kld_list+="snd_hda"

Oder, seit der 9.0, Hinzufügen seines Namens in der Variablen kld_list der Datei /etc/rc.conf.

Bluetooth

Um die Lautsprecher / Bluetooth-Headsets zu verwenden, müssen diese über das Paket virtual_oss übergeben werden. Das ganze können wir mit dem folgenden Befehl installieren:

pkg install virtual_oss virtual_oss_ctl

SMBus

Wir laden und überprüfen ob der Treiber korrekt geladen wurde:

[root@laptop]~#kldload ichsmb
[root@laptop]~#dmesg | grep smbus
smbus0: <System Management Bus> on ichsmb0

Wir fügen dieses Modul in die Liste der Module hinzu, die automatisch geladen werden sollen:

sysrc kld_list+="smbus"

ACPI-spezifische Anleitung

Sehr nützlich auf Laptops, es gibt ACPI-Module, die herstellerspezifisch sind. Hier ist die Liste der unter FreeBSD 11 verfügbaren Module:

Modulname Beschreibung
acpi_asus.ko Asus Laptop Extras
acpi_dock.ko Laptop Docking Station device driver
acpi_fujitsu.ko Fujitsu Laptop Extras
acpi_hp.ko ACPI extras driver for HP laptops
acpi_ibm.ko ACPI extras driver for IBM laptops
acpi_panasonic.ko ACPI hotkey driver for Panasonic laptops
acpi_sony.ko ACPI notebook controller driver for Sony laptops
acpi_toshiba.ko Toshiba HCI interface
acpi_video.ko ACPI Video Extensions driver
acpi_wmi.ko ACPI to WMI mapping driver (bei Bedarf von anderen selbst geladen)

Um die Variable kld_load basierend auf unserer Hardware hinzuzufügen. Zum Beispiel für meinen IBM Laptop habe ich: acpi_ibm und acpi_video.

Energiesparmodus

Das spart die Batterie:

echo "hw.pci.do_power_nodriver=3" >> /etc/sysctl.conf