ubuntuusers.de

einzelnes Kernelmodul neu kompilieren?

Status: Ungelöst | Ubuntu-Version: Xubuntu 18.04 (Bionic Beaver)
Antworten |

DoktorSeltsam

Anmeldungsdatum:
11. Februar 2007

Beiträge: 723

Wohnort: Hamburg

Ich richte für eine Arbeitskollegin ein altes Medion Notebook neu ein. Das Teil verfügt über Hardwaretasten für das eingebaute WLAN. Leider kann man damit nur deaktivieren - das Aktivieren geht anschließend nur über das BIOS. Das im Kernel befindliche Modul wistron_btns soll es ermöglichen. auch über die Taste einzuschalten. Leider hat das Modul seit Jahren einen Bug, den die Entwickler trotz regelmäßig eingereichter Patches ignorieren: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1633702 Nun stellt sich mir die Frage, ob ich nicht mit einem DKMS das Modul aus den Sourcen von linux-4.15/drivers/input/misc/wistron_btns.c einzeln selbst bauen könnte. Ich weiss bloß nicht, wie ich das mache - dafür bräuchte ich ja irgendwie ein eigenes angepasstes Makefile. Vielleicht hat jemand sowas schon mal gemacht?

Axel-Erfurt

Anmeldungsdatum:
18. Mai 2016

Beiträge: 1347

Geht es nicht im Terminal? z.B.

1
sudo ifconfig wlan0 up

DoktorSeltsam

(Themenstarter)

Anmeldungsdatum:
11. Februar 2007

Beiträge: 723

Wohnort: Hamburg

nein, der Schalter auf dem Notebook deaktiviert das WLAN-Gerät, so dass Linux kein Wireless-Netzwerkgerät mehr findet.

Kellerkind_2009

Avatar von Kellerkind_2009

Anmeldungsdatum:
26. November 2009

Beiträge: 19617

Wohnort: Schleswig-Holstein

Vielleicht hilft dir das https://forum.ubuntuusers.de/topic/lubuntu-erkennt-wlan-nicht/3/#post-6674857

Ist zwar etwas älter aber...

Auszug aus dem Wiki https://wiki.ubuntuusers.de/Acer_Hotkeys/

Mit wistron_btns steht ein '''alternatives''' Kernelmodul bereit, dass die '''gleiche''' Funktionalität wie acerhk bietet. 

DoktorSeltsam

(Themenstarter)

Anmeldungsdatum:
11. Februar 2007

Beiträge: 723

Wohnort: Hamburg

Um wistron_btns geht es ja. Das Modul führt sofort beim Laden zu einem segfault. Getestet mit mehreren Distris. Ich habe jetzt die WLAN-Taste deaktiviert durch Abkleben eines Pins auf der WLAN-Karte. Trotzdem wäre es interessant, ob und wie man einzelne Module eines Kernels kompilieren kann. Das war meine primäre Frage, deshalb lasse ich vorerst auf ungelöst stehen.

alterpinguin

Anmeldungsdatum:
24. Mai 2014

Beiträge: 786

DoktorSeltsam schrieb:

Um wistron_btns geht es ja. Das Modul führt sofort beim Laden zu einem segfault. Getestet mit mehreren Distris. Ich habe jetzt die WLAN-Taste deaktiviert durch Abkleben eines Pins auf der WLAN-Karte. Trotzdem wäre es interessant, ob und wie man einzelne Module eines Kernels kompilieren kann. Das war meine primäre Frage, deshalb lasse ich vorerst auf ungelöst stehen.

Du brauchst die Quellen des Kernel-Moduls und die "header-Dateien" des Kernels für das Du das Modul erstellen willst. Das ist eigentlich alles .... d.h. natürlich brauchst Du eine Entwicklungsumgebung mit Compiler, Assembler etc..

Ansonsten ist es z.B. bei mir, wenn ich ein modifiziertes it87-Modul erstelle zur Abfrage von mainboard-Werten, immer noch das "alte"

cd it87
make clean
make
und wenn das erfolgreich war das
make install

DoktorSeltsam

(Themenstarter)

Anmeldungsdatum:
11. Februar 2007

Beiträge: 723

Wohnort: Hamburg

Beim 4.15er Kernel gibt es innerhalb der Unterodner keine vollständigen Makefiles. In drivers/input/misc sieht es so aus, damit kann der make-Befehl nichts anfangen:

# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the input misc drivers.
#

# Each configuration option enables a list of files.

obj-$(CONFIG_INPUT_88PM860X_ONKEY)	+= 88pm860x_onkey.o
obj-$(CONFIG_INPUT_88PM80X_ONKEY)	+= 88pm80x_onkey.o
obj-$(CONFIG_INPUT_AB8500_PONKEY)	+= ab8500-ponkey.o
obj-$(CONFIG_INPUT_AD714X)		+= ad714x.o
obj-$(CONFIG_INPUT_AD714X_I2C)		+= ad714x-i2c.o
obj-$(CONFIG_INPUT_AD714X_SPI)		+= ad714x-spi.o
obj-$(CONFIG_INPUT_ADXL34X)		+= adxl34x.o
obj-$(CONFIG_INPUT_ADXL34X_I2C)		+= adxl34x-i2c.o
obj-$(CONFIG_INPUT_ADXL34X_SPI)		+= adxl34x-spi.o
obj-$(CONFIG_INPUT_APANEL)		+= apanel.o
obj-$(CONFIG_INPUT_ARIZONA_HAPTICS)	+= arizona-haptics.o
obj-$(CONFIG_INPUT_ATI_REMOTE2)		+= ati_remote2.o
obj-$(CONFIG_INPUT_ATLAS_BTNS)		+= atlas_btns.o
obj-$(CONFIG_INPUT_ATMEL_CAPTOUCH)	+= atmel_captouch.o
obj-$(CONFIG_INPUT_BFIN_ROTARY)		+= bfin_rotary.o
obj-$(CONFIG_INPUT_BMA150)		+= bma150.o
obj-$(CONFIG_INPUT_CM109)		+= cm109.o
obj-$(CONFIG_INPUT_CMA3000)		+= cma3000_d0x.o
obj-$(CONFIG_INPUT_CMA3000_I2C)		+= cma3000_d0x_i2c.o
obj-$(CONFIG_INPUT_COBALT_BTNS)		+= cobalt_btns.o
obj-$(CONFIG_INPUT_CPCAP_PWRBUTTON)	+= cpcap-pwrbutton.o
obj-$(CONFIG_INPUT_DA9052_ONKEY)	+= da9052_onkey.o
obj-$(CONFIG_INPUT_DA9055_ONKEY)	+= da9055_onkey.o
obj-$(CONFIG_INPUT_DA9063_ONKEY)	+= da9063_onkey.o
obj-$(CONFIG_INPUT_DM355EVM)		+= dm355evm_keys.o
obj-$(CONFIG_INPUT_E3X0_BUTTON)		+= e3x0-button.o
obj-$(CONFIG_INPUT_DRV260X_HAPTICS)	+= drv260x.o
obj-$(CONFIG_INPUT_DRV2665_HAPTICS)	+= drv2665.o
obj-$(CONFIG_INPUT_DRV2667_HAPTICS)	+= drv2667.o
obj-$(CONFIG_INPUT_GP2A)		+= gp2ap002a00f.o
obj-$(CONFIG_INPUT_GPIO_BEEPER)		+= gpio-beeper.o
obj-$(CONFIG_INPUT_GPIO_TILT_POLLED)	+= gpio_tilt_polled.o
obj-$(CONFIG_INPUT_GPIO_DECODER)	+= gpio_decoder.o
obj-$(CONFIG_INPUT_HISI_POWERKEY)	+= hisi_powerkey.o
obj-$(CONFIG_HP_SDC_RTC)		+= hp_sdc_rtc.o
obj-$(CONFIG_INPUT_IMS_PCU)		+= ims-pcu.o
obj-$(CONFIG_INPUT_IXP4XX_BEEPER)	+= ixp4xx-beeper.o
obj-$(CONFIG_INPUT_KEYSPAN_REMOTE)	+= keyspan_remote.o
obj-$(CONFIG_INPUT_KXTJ9)		+= kxtj9.o
obj-$(CONFIG_INPUT_M68K_BEEP)		+= m68kspkr.o
obj-$(CONFIG_INPUT_MAX77693_HAPTIC)	+= max77693-haptic.o
obj-$(CONFIG_INPUT_MAX8925_ONKEY)	+= max8925_onkey.o
obj-$(CONFIG_INPUT_MAX8997_HAPTIC)	+= max8997_haptic.o
obj-$(CONFIG_INPUT_MC13783_PWRBUTTON)	+= mc13783-pwrbutton.o
obj-$(CONFIG_INPUT_MMA8450)		+= mma8450.o
obj-$(CONFIG_INPUT_PALMAS_PWRBUTTON)	+= palmas-pwrbutton.o
obj-$(CONFIG_INPUT_PCAP)		+= pcap_keys.o
obj-$(CONFIG_INPUT_PCF50633_PMU)	+= pcf50633-input.o
obj-$(CONFIG_INPUT_PCF8574)		+= pcf8574_keypad.o
obj-$(CONFIG_INPUT_PCSPKR)		+= pcspkr.o
obj-$(CONFIG_INPUT_PM8941_PWRKEY)	+= pm8941-pwrkey.o
obj-$(CONFIG_INPUT_PM8XXX_VIBRATOR)	+= pm8xxx-vibrator.o
obj-$(CONFIG_INPUT_PMIC8XXX_PWRKEY)	+= pmic8xxx-pwrkey.o
obj-$(CONFIG_INPUT_POWERMATE)		+= powermate.o
obj-$(CONFIG_INPUT_PWM_BEEPER)		+= pwm-beeper.o
obj-$(CONFIG_INPUT_PWM_VIBRA)		+= pwm-vibra.o
obj-$(CONFIG_INPUT_RB532_BUTTON)	+= rb532_button.o
obj-$(CONFIG_INPUT_REGULATOR_HAPTIC)	+= regulator-haptic.o
obj-$(CONFIG_INPUT_RETU_PWRBUTTON)	+= retu-pwrbutton.o
obj-$(CONFIG_INPUT_AXP20X_PEK)		+= axp20x-pek.o
obj-$(CONFIG_INPUT_GPIO_ROTARY_ENCODER)	+= rotary_encoder.o
obj-$(CONFIG_INPUT_RK805_PWRKEY)	+= rk805-pwrkey.o
obj-$(CONFIG_INPUT_SGI_BTNS)		+= sgi_btns.o
obj-$(CONFIG_INPUT_SIRFSOC_ONKEY)	+= sirfsoc-onkey.o
obj-$(CONFIG_INPUT_SOC_BUTTON_ARRAY)	+= soc_button_array.o
obj-$(CONFIG_INPUT_SPARCSPKR)		+= sparcspkr.o
obj-$(CONFIG_INPUT_TPS65218_PWRBUTTON)	+= tps65218-pwrbutton.o
obj-$(CONFIG_INPUT_TWL4030_PWRBUTTON)	+= twl4030-pwrbutton.o
obj-$(CONFIG_INPUT_TWL4030_VIBRA)	+= twl4030-vibra.o
obj-$(CONFIG_INPUT_TWL6040_VIBRA)	+= twl6040-vibra.o
obj-$(CONFIG_INPUT_UINPUT)		+= uinput.o
obj-$(CONFIG_INPUT_WISTRON_BTNS)	+= wistron_btns.o
obj-$(CONFIG_INPUT_WM831X_ON)		+= wm831x-on.o
obj-$(CONFIG_INPUT_XEN_KBDDEV_FRONTEND)	+= xen-kbdfront.o
obj-$(CONFIG_INPUT_YEALINK)		+= yealink.o
obj-$(CONFIG_INPUT_IDEAPAD_SLIDEBAR)	+= ideapad_slidebar.o
Antworten |