[gelöst] Kernelmodul automatisch signieren

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
mcb

[gelöst] Kernelmodul automatisch signieren

Beitrag von mcb » 09.04.2021 17:37:21

Hallo,

ich möchte ein Kernelmodul - jeweils nach einem Kernelupdate (automatisch) mit meinem M.-Key signieren.

Das habe ich bisher zu Stande gebracht:

Code: Alles auswählen

/usr/lib/linux-kbuild-5.10/scripts/sign-file sha256 /root/MOK.priv /root/MOK.der /lib/modules/$(uname -r)/updates/dkms/acpi_call.ko

 
Kann ich das automatisieren ? Bzw. wie ?

Ich führe den 1zeiler jetzt nach jedem Kernelupdate per Hand aus. (Nach einem reboot) sonst stimmt $(uname -r) noch nicht :oops:
Zuletzt geändert von mcb am 31.07.2021 10:53:01, insgesamt 3-mal geändert.

Benutzeravatar
towo
Beiträge: 4541
Registriert: 27.02.2007 19:49:44
Lizenz eigener Beiträge: GNU Free Documentation License

Re: Kernelmodul signieren

Beitrag von towo » 09.04.2021 17:45:33


mcb

Re: Kernelmodul signieren

Beitrag von mcb » 09.04.2021 20:30:57

Tja - ich verstehe nur die Hälfte - passt das 1:1 auf Debian ?

kernelver habe ich z.B. nicht ...

mcb

Re: Kernelmodul signieren

Beitrag von mcb » 29.04.2021 13:09:59

towo hat geschrieben: ↑ zum Beitrag ↑
09.04.2021 17:45:33
https://computerlinguist.org/make-dkms- ... -1604.html
VIelleicht?
Hurray !!! :hail: :hail: :hail:

Tausend Dank ich habe es hinbekommen :THX: :THX: :THX:

mcb

Re: [Mist - war gelöst] Kernelmodul signieren

Beitrag von mcb » 04.06.2021 11:59:33

Mist es ging die ganze Zeit

nach dem heutigen Kernelupdate war das Modul nicht signiert -

S... wo suche ich da :roll:

Nach dem Einzeiler geht es wieder -

Bin für jede Hilfe / Hinweis dankbar wo ich überhaupt suchen muß.

mcb

Re: [Mist - war gelöst] Kernelmodul signieren

Beitrag von mcb » 04.06.2021 12:12:23

Hier ein wenig Info - bis zum letzten Kernelupdate lief die automatisch Signierung durch:

Code: Alles auswählen

root@mb:~# ls -al /etc/dkms/sign-kernel-objects.conf;cat /etc/dkms/sign-kernel-objects.conf; uname -a
-rw-r--r-- 1 root root 49 Apr 29 12:47 /etc/dkms/sign-kernel-objects.conf
POST_BUILD=../../../../../../root/sign-kernel.sh
Linux mb 5.10.0-7-amd64 #1 SMP Debian 5.10.40-1 (2021-05-28) x86_64 GNU/Linux


Code: Alles auswählen

Start-Date: 2021-06-04  11:37:23
Commandline: apt upgrade
Install: linux-image-5.10.0-7-amd64:amd64 (5.10.40-1, automatic), linux-headers-5.10.0-7-common:amd64 (5.10.40-1, automatic), linux-headers-5.10.0-7-amd64:amd64 (5.10.40-1, automatic)
Upgrade: linux-kbuild-5.10:amd64 (5.10.28-1, 5.10.40-1), console-setup:amd64 (1.202, 1.203), linux-compiler-gcc-10-x86:amd64 (5.10.28-1, 5.10.40-1), linux-headers-amd64:amd64 (5.10.28-1, 5.10.40-1), console-setup-linux:amd64 (1.202, 1.203), linux-image-amd64:amd64 (5.10.28-1, 5.10.40-1), libmagickwand-6.q16-6:amd64 (8:6.9.11.60+dfsg-1, 8:6.9.11.60+dfsg-1.3), libmagickcore-6.q16-6:amd64 (8:6.9.11.60+dfsg-1, 8:6.9.11.60+dfsg-1.3), imagemagick-6-common:amd64 (8:6.9.11.60+dfsg-1, 8:6.9.11.60+dfsg-1.3), keyboard-configuration:amd64 (1.202, 1.203), linux-libc-dev:amd64 (5.10.28-1, 5.10.40-1)
End-Date: 2021-06-04  11:38:00

Code: Alles auswählen

dkms status
acpi-call, 1.1.0, 5.10.0-6-amd64, x86_64: installed
acpi-call, 1.1.0, 5.10.0-7-amd64, x86_64: installed (WARNING! Diff between built and installed module!)
root@mb:~# 


Ja das untere habe ich jetzt per Hand signiert nur wie bekomme ich den log von script beim Kernel update ?

So nochmal per Hand:

Code: Alles auswählen

root@mb:~# apt remove acpi-call-dkms -y
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages will be REMOVED:
  acpi-call-dkms
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 52.2 kB disk space will be freed.
(Reading database ... 264382 files and directories currently installed.)
Removing acpi-call-dkms (1.1.0-6) ...

-------- Uninstall Beginning --------
Module:  acpi-call
Version: 1.1.0
Kernel:  5.10.0-6-amd64 (x86_64)
-------------------------------------

Status: Before uninstall, this module version was ACTIVE on this kernel.

acpi_call.ko:
 - Uninstallation
   - Deleting from: /lib/modules/5.10.0-6-amd64/updates/dkms/
 - Original module
   - No original module was found for this module on this kernel.
   - Use the dkms install command to reinstall any previous module version.

depmod....

DKMS: uninstall completed.

-------- Uninstall Beginning --------
Module:  acpi-call
Version: 1.1.0
Kernel:  5.10.0-7-amd64 (x86_64)
-------------------------------------

Status: Before uninstall, this module version was ACTIVE on this kernel.

acpi_call.ko:
 - Uninstallation
   - Deleting from: /lib/modules/5.10.0-7-amd64/
rmdir: failed to remove '': No such file or directory
 - Original module
   - No original module was found for this module on this kernel.
   - Use the dkms install command to reinstall any previous module version.

depmod....

DKMS: uninstall completed.

------------------------------
Deleting module version: 1.1.0
completely from the DKMS tree.
------------------------------
Done.
root@mb:~# tlp start
TLP started in AC mode (auto).
root@mb:~# tlp-stat -b
--- TLP 1.4.0-alpha.2 --------------------------------------------

+++ Battery Care
Plugin: thinkpad
Supported features: charge thresholds, recalibration
Driver usage:
* natacpi (thinkpad_acpi) = active (charge thresholds)
* tpacpi-bat (acpi_call)  = active (recalibration)
Parameter value ranges:
* START_CHARGE_THRESH_BAT0/1:  0(off)..96(default)..99
* STOP_CHARGE_THRESH_BAT0/1:   1..100(default)

+++ ThinkPad Battery Status: BAT0 (Main / Internal)
/sys/class/power_supply/BAT0/manufacturer                   = SMP
/sys/class/power_supply/BAT0/model_name                     = 02DL014
/sys/class/power_supply/BAT0/cycle_count                    =     20
/sys/class/power_supply/BAT0/energy_full_design             =  57020 [mWh]
/sys/class/power_supply/BAT0/energy_full                    =  55580 [mWh]
/sys/class/power_supply/BAT0/energy_now                     =  26340 [mWh]
/sys/class/power_supply/BAT0/power_now                      =      0 [mW]
/sys/class/power_supply/BAT0/status                         = Idle

/sys/class/power_supply/BAT0/charge_control_start_threshold =     45 [%]
/sys/class/power_supply/BAT0/charge_control_end_threshold   =    100 [%]
tpacpi-bat.BAT0.forceDischarge                              =      0

Charge                                                      =   47.4 [%]
Capacity                                                    =   97.5 [%]

root@mb:~# dkms status
root@mb:~# apt install acpi-call-dkms -y
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:
  acpi-call-dkms
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 14.0 kB of archives.
After this operation, 52.2 kB of additional disk space will be used.
Get:1 http://deb.debian.org/debian bullseye/main amd64 acpi-call-dkms all 1.1.0-6 [14.0 kB]
Fetched 14.0 kB in 0s (125 kB/s)         
Retrieving bug reports... Done
Parsing Found/Fixed information... Done
Selecting previously unselected package acpi-call-dkms.
(Reading database ... 264363 files and directories currently installed.)
Preparing to unpack .../acpi-call-dkms_1.1.0-6_all.deb ...
Unpacking acpi-call-dkms (1.1.0-6) ...
Setting up acpi-call-dkms (1.1.0-6) ...
Loading new acpi-call-1.1.0 DKMS files...
Building for 5.10.0-7-amd64
Building initial module for 5.10.0-7-amd64
Done.

acpi_call.ko:
Running module version sanity check.
 - Original module
 - Installation
   - Installing to /lib/modules/5.10.0-7-amd64/updates/dkms/

depmod...

DKMS: install completed.
root@mb:~# 


mcb

Re: [Mist - war gelöst] Kernelmodul signieren

Beitrag von mcb » 04.06.2021 12:53:59

Ich verstehe es nicht:

nach reboot:

Code: Alles auswählen

marc@mb:~$ s
Password: 
root@mb:~# dkms status
acpi-call, 1.1.0, 5.10.0-7-amd64, x86_64: installed
root@mb:~# tlp-stat -b
--- TLP 1.4.0-alpha.2 --------------------------------------------

+++ Battery Care
Plugin: thinkpad
Supported features: charge thresholds, recalibration
Driver usage:
* natacpi (thinkpad_acpi) = active (charge thresholds)
* tpacpi-bat (acpi_call)  = active (recalibration)
Parameter value ranges:
* START_CHARGE_THRESH_BAT0/1:  0(off)..96(default)..99
* STOP_CHARGE_THRESH_BAT0/1:   1..100(default)

+++ ThinkPad Battery Status: BAT0 (Main / Internal)
/sys/class/power_supply/BAT0/manufacturer                   = SMP
/sys/class/power_supply/BAT0/model_name                     = 02DL014
/sys/class/power_supply/BAT0/cycle_count                    =     20
/sys/class/power_supply/BAT0/energy_full_design             =  57020 [mWh]
/sys/class/power_supply/BAT0/energy_full                    =  55580 [mWh]
/sys/class/power_supply/BAT0/energy_now                     =  26340 [mWh]
/sys/class/power_supply/BAT0/power_now                      =      0 [mW]
/sys/class/power_supply/BAT0/status                         = Idle

/sys/class/power_supply/BAT0/charge_control_start_threshold =     45 [%]
/sys/class/power_supply/BAT0/charge_control_end_threshold   =    100 [%]
tpacpi-bat.BAT0.forceDischarge                              =      0

Charge                                                      =   47.4 [%]
Capacity                                                    =   97.5 [%]

root@mb:~# dkms status
acpi-call, 1.1.0, 5.10.0-7-amd64, x86_64: installed
root@mb:~# 



mcb

Re: [Mist - war gelöst] Kernelmodul signieren

Beitrag von mcb » 25.06.2021 21:45:40

mcb hat geschrieben: ↑ zum Beitrag ↑
04.06.2021 11:59:33
Mist es ging die ganze Zeit

nach dem heutigen Kernelupdate war das Modul nicht signiert -

S... wo suche ich da :roll:

Nach dem Einzeiler geht es wieder -

Bin für jede Hilfe / Hinweis dankbar wo ich überhaupt suchen muß.
Hat Irgendwer eine Idee ?!?

Gruß

mcb

Re: [Mist - war gelöst] Kernelmodul signieren

Beitrag von mcb » 22.07.2021 11:43:11

Irgendetwas an der Anleitung passt nicht mehr unter Bullseye.

Ich kann jetzt nach jedem Kernelupdate das Modul neu installieren, sonst geht es nicht:

Code: Alles auswählen

#! /bin/bash

apt install acpi-call-dkms- -y; apt install acpi-call-dkms -y
Dann läuft es durch und wird signiert.

Benutzeravatar
towo
Beiträge: 4541
Registriert: 27.02.2007 19:49:44
Lizenz eigener Beiträge: GNU Free Documentation License

Re: [Mist - war gelöst] Kernelmodul signieren

Beitrag von towo » 22.07.2021 12:00:25

Warum deaktivierst Du nicht einfach Die Schlangenöl-Funktion im Bios?

mcb

Re: [Mist - war gelöst] Kernelmodul signieren

Beitrag von mcb » 22.07.2021 12:38:34

towo hat geschrieben: ↑ zum Beitrag ↑
22.07.2021 12:00:25
Warum deaktivierst Du nicht einfach Die Schlangenöl-Funktion im Bios?
Ja das wäre Plan C ...

Deswegen: https://thunderspy.io/ und es hat ja auch einige Zeit perfekt funktioniert. Finde ich schade wenn Speicherschutz funktioniert und man es nicht nutzen kann.

Klar kann ich ohne Secureboot oder ohne Module. Per Hand signieren ginge ja auch - müßte ich die Automatik wieder Rückgänging machen. Oh je.

Benutzeravatar
towo
Beiträge: 4541
Registriert: 27.02.2007 19:49:44
Lizenz eigener Beiträge: GNU Free Documentation License

Re: [Mist - war gelöst] Kernelmodul signieren

Beitrag von towo » 22.07.2021 12:45:10

Secureboot ist kein Speicherschutz!
Im Prinzip ist es Nutzlos wie ein Kropf.

mcb

Re: [Mist - war gelöst] Kernelmodul signieren

Beitrag von mcb » 22.07.2021 12:52:19

towo hat geschrieben: ↑ zum Beitrag ↑
22.07.2021 12:45:10
Secureboot ist kein Speicherschutz!
Im Prinzip ist es Nutzlos wie ein Kropf.
Meine Hardware bietet Speicherschutz unter Kernel 5.x kombiniert mit Secureboot. Bzw. ohne das Geraffel hauen die Designfehler von Intel und Co noch mehr durch.

Code: Alles auswählen

OS version:
 Linux kernel 5.10.0-8-amd64
Kernel DMA Protection:
 Enabled
System vendor: 
 LENOVO
Product name: 
 20NXC

Benutzeravatar
MSfree
Beiträge: 11604
Registriert: 25.09.2007 19:59:30

Re: [Mist - war gelöst] Kernelmodul signieren

Beitrag von MSfree » 22.07.2021 13:24:06

mcb hat geschrieben: ↑ zum Beitrag ↑
22.07.2021 12:52:19
Meine Hardware bietet Speicherschutz unter Kernel 5.x kombiniert mit Secureboot.
Speicherschutz hat nichts mit Secure Boot zu tun. Speicherschutz funktioniert auch ohne Secure Boot und umgekehrt.
Bzw. ohne das Geraffel hauen die Designfehler von Intel und Co noch mehr durch.
Falsch. Die Designfehler werden durch aktuelle Micorcodes eingeschränkt, mehr kann dein UEFI auch nicht leisten. Es ist aber egal, ob dein UEFI den Microdode lädt oder der Kernel. Wenn es der Kernel macht, hast du eine Chance darauf, aktuellere Microcodes nutzen zu können.

mcb

Re: [Mist - war gelöst] Kernelmodul signieren

Beitrag von mcb » 22.07.2021 20:37:04

Ne - da reden wir aneinander vorbei - der Microcode hat damit nichts zu tun.

Code: Alles auswählen

Kernel DMA Protection
z.B. für Thunderbolt.

mcb

Re: [Mist - war gelöst] Kernelmodul signieren

Beitrag von mcb » 28.07.2021 09:53:53

So ich habe es jetzt mal nach folgender 'Anleitung' konfiguriert:

https://old.reddit.com/r/debian/comment ... e/h6pwjo5/

"Edit /etc/dkms/framework.conf and enable the sign_tool option.

Then follow https://wiki.debian.org/SecureBoot#MOK_ ... _Owner_Key to create the necessary keys and to enroll them into the firmware.

Then either edit /etc/dkms/sign_helper.sh to point to the correct paths to your keys or put the keys into the paths already in there."


cat /etc/dkms/framework.conf

Code: Alles auswählen

## Script to sign modules during build, script is called with kernel version
## and module name
sign_tool="/etc/dkms/sign_helper.sh"
 
cat /etc/dkms/sign_helper.sh

Code: Alles auswählen

#!/bin/sh
/lib/modules/"$1"/build/scripts/sign-file sha256 /root/MOK.priv /root/MOK.der "$2"
 
Neuer Kernel kommt die Tage, ich werde dann berichten.

mcb

Re: [Mist - war gelöst] Kernelmodul signieren

Beitrag von mcb » 31.07.2021 10:52:09

OK - der neue Kernel kam heute. Works! :hail: :hail: :hail:

Ev. hilft es dem einen oder anderen.

Antworten