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?
einzelnes Kernelmodul neu kompilieren?
Anmeldungsdatum: Beiträge: 701 Wohnort: Hamburg |
|
||
Anmeldungsdatum: Beiträge: 1347 |
Geht es nicht im Terminal? z.B.
|
||
(Themenstarter)
Anmeldungsdatum: Beiträge: 701 Wohnort: Hamburg |
nein, der Schalter auf dem Notebook deaktiviert das WLAN-Gerät, so dass Linux kein Wireless-Netzwerkgerät mehr findet. |
||
Anmeldungsdatum: Beiträge: 19610 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. |
||
(Themenstarter)
Anmeldungsdatum: Beiträge: 701 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. |
||
Anmeldungsdatum: Beiträge: 786 |
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 |
||
(Themenstarter)
Anmeldungsdatum: Beiträge: 701 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 |