Linux系统安装驱动过程中ko文件加载错误(Required key not available)的解决办法

Linux系统安装驱动过程中ko文件加载错误(Required key not available)的解决办法

问题描述

在Ubuntu上使用CP210x USB转UART设备时需要安装驱动程序(CP210x USB to UART Bridge VCP Drivers),安装驱动过程中cp210x.ko文件已经编译成功,但使用命令

 insmod /lib/modules/4.15.0-43-generic/kernel/drivers/usb/serial/usbserial.ko

加载usbserial模块时报错:

Required key not available

开发环境

操作系统:Ubuntu 18.04
Linux内核版本:4.15.0-43-generic
使用命令 $uname -a查看系统环境,得到如下结果:
在这里插入图片描述
另附:CP210x驱动下载地址:https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers
关于该驱动的详细安装教程,请参考上述官网说明.

解决步骤

1.首先,对于Ubuntu系统,可以使用如下命令安装 mokutil工具:

 $sudo apt-get install mokutil

2.然后任意目录下,创建一个生成证书的参数配置文件 x509-configuration.ini,配置文件内容如下:

[ req ]
default_bits = 4096
distinguished_name = req_distinguished_name
prompt = no
string_mask = utf8only
x509_extensions = myexts
[ req_distinguished_name ]
O = YOUR_USERNAME
CN = YOUR_USERNAME
emailAddress = YOUR_EMAIL_ADDRESS
[ myexts ]
basicConstraints=critical,CA:FALSE
keyUsage=digitalSignature
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid

3.在该目录下调用openssl命令, 生成public_key.der 和 private_key.priv文件。其中public_key.der是证书:

$sudo openssl req -x509 -new -nodes -utf8 -sha256 -days 36500 -batch -config x509-configuration.ini -outform DER -out public_key.der -keyout private_key.priv
  1. 用mokutil 命令把证书public_key.der放进数据库mokdb里:
$mokutil --import  public_key.der

当提示输入密码时,需要输入root用户的密码,若默认未创建root用户密码,则需要通过下面的命令设置新的root密码:

$sudo passwd

上述步骤执行完毕后,输入reboot命令重启计算机即可。

注意!重启过程中也需要输入上述root用户密码。 另外,mokutil具有保护机制,若root用户密码连续输错两次以上,则需要重启计算机重新输入。

5.给模块赋予签名
重启计算机后,使用形式如下的命令给加载错误的模块赋予签名,例如:

$/usr/src/4.15.0-43-generic/scripts/sign-file sha256 private_key.priv public_key.der  /lib/modules/4.15.0-43-generic/kernel/drivers/usb/serial/usbserial.ko

随后,重新加载该模块:

$insmod /lib/modules/4.15.0-43-generic/kernel/drivers/usb/serial/usbserial.ko

即可成功加载.大功告成!

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要单独编译 Linux 驱动模块(ko 文件),你需要有 Linux 内核的源代码和相应的编译工具链。以下是一个基本的步骤: 1. 首先,确保你已经安装了所需的编译工具链,包括 GCC、Make 和相应的头文件。你可以使用以下命令来安装它们: ```shell sudo apt-get install build-essential ``` 2. 获取 Linux 内核的源代码。你可以从官方网站下载特定版本的内核源代码,或者使用你当前系统正在运行的内核版本的源代码。 3. 解压源代码压缩包并进入源代码目录。 4. 在源代码目录,使用 `make` 命令来配置内核编译选项。你可以使用以下命令来复制当前正在运行的内核配置: ```shell cp /boot/config-$(uname -r) .config ``` 或者,如果你下载了特定版本的内核源代码,可以使用以下命令来进行配置: ```shell make menuconfig ``` 在配置界面,选择你需要编译的驱动模块,并保存配置文件。 5. 编译驱动模块。使用以下命令来编译驱动模块: ```shell make modules ``` 这将会编译所有的驱动模块。如果你只想编译特定的驱动模块,可以使用以下命令: ```shell make modules SUBDIRS=path/to/driver ``` 其 `path/to/driver` 是驱动模块的路径。 6. 编译完成后,在源代码目录会生成编译好的驱动模块(ko 文件)。你可以在 `drivers` 目录下找到这些模块。 请注意,编译驱动模块可能需要一些额外的步骤,具体取决于驱动模块的要求和依赖项。在实际使用,你可能需要参考相关文档或向开发者寻求帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值