Skip to content

enable kernel patch for Ubuntu 22.04 #10625

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged

Conversation

mengyui
Copy link
Contributor

@mengyui mengyui commented Jun 25, 2022

build kernel patch for Ubuntu 22.04

move to new kernel repo URL
remove some “sudo” command

BTW, there should be some issue in the kernel source repo for 5.15.0-39. In my environment, I can't insert the kernel module the system.

@mengyui mengyui force-pushed the kernel-patch-ubuntu-2204 branch 2 times, most recently from ea944ce to fdb4e49 Compare June 28, 2022 12:53
@dmipx
Copy link
Contributor

dmipx commented Jul 10, 2022

Please see attached log output for ubuntu 2022 jammy patching
jammy.zip
@mengyui
ubuntu22@ubuntu22:~/test/librealsense/scripts$ ./patch-realsense-ubuntu-lts.sh
./patch-realsense-ubuntu-lts.sh: line 61: ./scripts/patch-utils.sh: No such file or directory

@mengyui
Copy link
Contributor Author

mengyui commented Jul 15, 2022

https://github.com/IntelRealSense/librealsense/blame/master/doc/installation.md#L70
Hi @dmipx , according to this document. the script "patch-realsense-ubuntu-lts.sh" should be called from the root directory of

@dmipx
Copy link
Contributor

dmipx commented Jul 25, 2022

@mengyui I tried on clean ubuntu22, patch finished with following message, looks like module was not signed during build

dima@ubuntu22:~/git/librealsense$ ./scripts/patch-realsense-ubuntu-lts.sh 
....
Patched kernels modules were created successfully

[sudo] password for dima: 
Replacing videodev  -
	Applying the patched module ... modprobe: ERROR: could not insert 'videodev': Exec format error
Failed to insert the patched module. Operation is aborted, the original module is restored
Verify that the current kernel version is aligned to the patched module version
The original  videodev  module was reloaded

root@ubuntu22:/home/dima/git/librealsense# rmmod videodev

root@ubuntu22:/home/dima/git/librealsense# insmod /home/dima/git/librealsense/ubuntu-jammy/drivers/media/v4l2-core/videodev.ko

insmod: ERROR: could not insert module /home/dima/git/librealsense/ubuntu-jammy/drivers/media/v4l2-core/videodev.ko: Invalid module format
root@ubuntu22:/home/dima/git/librealsense# modinfo /home/dima/git/librealsense/ubuntu-jammy/drivers/media/v4l2-core/videodev.ko
filename:       /home/dima/git/librealsense/ubuntu-jammy/drivers/media/v4l2-core/videodev.ko
alias:          char-major-81-*
license:        GPL
description:    Video4Linux2 core driver
author:         Alan Cox, Mauro Carvalho Chehab <mchehab@kernel.org>, Bill Dirks, Justin Schoeman, Gerd Knorr
srcversion:     FC2616F9D93D6F49B92C6F7
depends:        mc
retpoline:      Y
name:           videodev
vermagic:       5.15.0-41-generic SMP mod_unload modversions 


root@ubuntu22:/home/dima/git/librealsense# modinfo videodev
filename:       /lib/modules/5.15.0-41-generic/kernel/drivers/media/v4l2-core/videodev.ko
alias:          char-major-81-*
license:        GPL
description:    Video4Linux2 core driver
author:         Alan Cox, Mauro Carvalho Chehab <mchehab@kernel.org>, Bill Dirks, Justin Schoeman, Gerd Knorr
srcversion:     5DEC66E6CBCC717A674CEFB
depends:        mc
retpoline:      Y
intree:         Y
name:           videodev
vermagic:       5.15.0-41-generic SMP mod_unload modversions 
sig_id:         PKCS#7
signer:         Build time autogenerated kernel key
sig_key:        1F:4E:23:82:4E:7F:DB:01:30:C1:63:2D:9B:09:11:2C:89:6D:22:1F
sig_hashalgo:   sha512
signature:      81:87:35:47:BE:9A:9D:A4:55:C9:73:BE:9B:30:4A:59:50:35:9D:99:
		49:B8:14:0D:9D:5B:74:43:9F:BF:62:D4:6A:47:78:E8:07:5C:19:79:
		00:45:9B:81:84:FB:76:0D:FF:3F:F9:FC:28:CB:4E:DC:E2:C3:1D:96:
		C2:2F:5C:CF:97:E5:EA:4F:E0:D0:A2:58:97:D1:A5:1F:38:AF:1D:19:
		05:DF:02:65:82:60:FC:67:95:73:78:CC:3C:DB:E6:BD:0D:07:5F:D5:
		75:37:2C:1F:F9:51:F6:78:4D:F0:23:AC:9A:B7:E3:82:D7:20:84:D3:
		93:AA:DF:2A:D6:96:06:57:1B:9B:37:9B:5A:FB:A0:58:96:29:FC:D6:
		DA:D8:1D:FF:9D:D3:6E:D3:F8:B8:08:A7:0D:16:75:78:D5:41:C3:50:
		C5:55:33:B3:9C:03:11:27:9C:5B:E2:50:40:C8:0C:45:1C:FF:62:9A:
		C4:94:F9:FA:85:C1:01:30:15:B9:E7:2D:09:97:01:80:3F:00:B7:05:
		10:28:76:A3:84:E8:7F:3C:DC:EF:A0:D1:75:D8:37:28:2B:1D:67:37:
		EE:A5:4B:41:41:96:EF:A9:B0:0B:8A:6E:9F:37:A2:76:2D:52:49:9E:
		80:A2:7E:76:DA:63:F3:FC:4C:B3:1B:E5:B5:E3:18:AC:6B:18:E2:69:
		8D:9B:FD:9A:CA:46:47:C8:F9:CB:E6:98:8B:01:3F:A2:AA:F8:29:A5:
		C1:7A:ED:E7:E6:1B:C4:FD:D1:E9:AD:57:60:38:65:92:7D:98:AC:DB:
		03:AE:66:39:B2:FC:C8:CB:69:73:D4:97:CD:66:DD:18:7B:85:22:40:
		9F:6B:88:ED:1F:2E:E9:80:46:4F:EA:D4:4F:AF:7D:23:84:E2:03:34:
		57:27:51:9D:13:35:2D:96:E7:DB:DC:A1:8E:2B:9F:9F:2A:E0:01:9B:
		AF:90:98:3A:AD:4E:CB:EC:03:91:F5:DC:8A:A9:61:12:78:22:17:1F:
		05:36:60:8E:0E:EC:9E:51:AB:71:04:7E:3A:51:C8:79:36:2B:7C:87:
		6F:8A:36:E6:39:57:F7:A4:44:26:85:F5:DF:3E:8A:68:93:8A:61:25:
		0B:B5:AF:8F:F8:9E:6E:60:B5:4A:A0:4D:39:92:55:96:D8:CF:C0:FC:
		D0:58:36:C2:78:66:31:08:7D:B5:52:11:23:F7:17:D0:2E:39:C2:E1:
		03:2A:E7:36:E2:5A:23:7A:3C:E7:66:B3:C7:DD:1F:F1:29:09:B0:C2:
		2B:B8:4F:83:7C:6F:6E:D5:64:C5:5C:7F:1C:AC:4A:CD:2A:48:13:BB:
		96:D1:5B:A5:BB:A6:BA:F0:6C:1F:74:65

dmesg:

[ 4629.401706] videodev: loading out-of-tree module taints kernel.
[ 4629.401823] videodev: module verification failed: signature and/or required key missing - tainting kernel
[ 4629.402107] module: x86/modules: Skipping invalid relocation target, existing value is nonzero for type 1, loc 00000000ed79e6d1, val ffffffffc090f055
[ 4629.456168] videodev: Linux video capture interface: v2.00

@dmipx
Copy link
Contributor

dmipx commented Aug 3, 2022

@ev-mp @Nir-Az
In order to implement Y16I for LRS-463 can we consider merging this PR to development branch?

@ev-mp
Copy link
Collaborator

ev-mp commented Aug 3, 2022

@mengyui , since the changes are in the main script file, this PR needs to be verified for regressions for Ubuntu 16/18 and 20 at least with the latests LTS kernel for each distribution.

@mengyui
Copy link
Contributor Author

mengyui commented Aug 3, 2022

Hi @dmipx,
the outputs of this script are not signed modules, even the origin version.

if the signed modules are required, they should be signed by another script.
https://wiki.ubuntu.com/UEFI/SecureBoot/Signing

so, please turn off "Secure Boot" in BIOS.

Thanks, @ev-mp

@Nir-Az
Copy link
Collaborator

Nir-Az commented Aug 4, 2022

@ev-mp - Please note the authur comment

BTW, there should be some issue in the kernel source repo for 5.15.0-39. In my environment, I can't insert the kernel module the system.

This means it will not work for Ubuntu 22 default kernel right?

@ev-mp
Copy link
Collaborator

ev-mp commented Aug 9, 2022

@mengyui , you need to verify the script againt the older distros (16,18 and 20) as mentioned above.
Please run the tests and share the results internally - this is a prerequisite for merge.

@mengyui
Copy link
Contributor Author

mengyui commented Aug 16, 2022

Hi @ev-mp @Nir-Az @dmipx
the script works well for Ubuntu 18 (kernel 4.15)
and report error "mobprobe: ERROR: could not insert 'videodev': Exec format error" on Ubuntu 20 (kernel 5.13/5.15) or Ubuntu 22 (kernel 5.15).

It is a very odd issue. I remember there is a version of the kernel source that works with this script when I create this PR.
and the dkms package works well (https://github.com/mengyui/librealsense2-dkms)
the building steps are not changed in this PR.

@dmipx
Copy link
Contributor

dmipx commented Aug 22, 2022

Hi @mengyui!
We discussed with @ev-mp and best scenario is that we can merge all new patches but change scripts to be another ones, for example:

scripts/patch-realsense-ubuntu-lts.sh -> scripts/patch-realsense-ubuntu-lts-hwe.sh
scripts/patch-utils.sh -> scripts/patch-utils-hwe.sh

so this will not require regression tests for legacy versions.
Please rework and we will merge it, we need to add Y16I format for 5.13/5.15 kernels and we are blocked by this PR.
Thanks!

@dmipx
Copy link
Contributor

dmipx commented Aug 28, 2022

Hi @ev-mp @Nir-Az @dmipx the script works well for Ubuntu 18 (kernel 4.15) and report error "mobprobe: ERROR: could not insert 'videodev': Exec format error" on Ubuntu 20 (kernel 5.13/5.15) or Ubuntu 22 (kernel 5.15).

It is a very odd issue. I remember there is a version of the kernel source that works with this script when I create this PR. and the dkms package works well (https://github.com/mengyui/librealsense2-dkms) the building steps are not changed in this PR.

on older kernels - Makefile changed and set "CONFIG_MODULE_SIG=n"
look for example: realsense-camera-formats-xenial-Ubuntu-hwe-4.8.0-58.63_16.04.1.patch
That is not good idea but thus we can understand why it was working on older kernels.
The DKMS is working well indeed, the DKMS package performs module signing with x509 certificates bundled with kernel package.
BTW, can you PR librealsense2-dkms to dkms4librealsense?

@mengyui mengyui force-pushed the kernel-patch-ubuntu-2204 branch from fdb4e49 to e56db63 Compare September 1, 2022 07:37
Copy link
Contributor

@dmipx dmipx left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

;;
"5.15")
echo hwe-5.15
;;
*)
#error message shall be redirected to stderr to be printed properly
echo -e "\e[31mUnsupported kernel version $1 . The Focal patches are maintained for Ubuntu LTS with kernel 5.4, 5.8, 5.11 only\e[0m" >&2
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

message should also contain kernel versions 5.13, 5.15?

;;
*)
#error message shall be redirected to stderr to be printed properly
echo -e "\e[31mUnsupported kernel version $1 . The Focal patches are maintained for Ubuntu LTS with kernel 5.4, 5.8, 5.11 only\e[0m" >&2
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Focal -> jammy, kernel version 5.15..

esac

else
echo -e "\e[31mUnsupported distribution $2, kernel version $1 . The patches are maintained for Ubuntu 16/18/20 LTS\e[0m" >&2
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ubuntu 22 includes

@dmipx dmipx requested review from ev-mp and Nir-Az September 1, 2022 07:42
Copy link
Collaborator

@Nir-Az Nir-Az left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, we will follow by another PR for updating the installation guides

@Nir-Az Nir-Az merged commit 9862c7c into IntelRealSense:development Sep 1, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants