Ubuntu 16.04.2 (64位)内核4.4.0-116-generic
制作一个最简单的hello.ko,执行insmod hello.ko时出错,日志显示错误是:
version magic '4.4.0-116-generic SMP mod_unload modversions'
should be '4.4.0-116-generic SMP mod_unload modversions retpoline'
Ubuntu说retpoline是为了解决安全问题引入的编译选项,貌似需要用支持retpoline选项的编译器(gcc 7.3)重新编译软件:
https://wiki.ubuntu.com/SecurityTeam/Kn ... ndMeltdown
https://wiki.ubuntu.com/SecurityTeam/Kn ... #Retpoline
https://lwn.net/Articles/745385/
我安装了gcc-7,可是7.2版本。
我也不清楚如何编译ko,使之支持retpoline,能运行在此内核中。
有人知道吗?
repoline的问题:insmod一个简单ko,出现错误
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
-
- 帖子: 22
- 注册时间: 2014-10-16 15:11
- 系统: Ubuntu
-
- 帖子: 22
- 注册时间: 2014-10-16 15:11
- 系统: Ubuntu
Re: repoline的问题:insmod一个简单ko,出现错误
目前已知这三个内核都有这个问题:
3.13.0-143-generic
4.4.0-116-generic
4.4.0-119-generic
如何解决?
3.13.0-143-generic
4.4.0-116-generic
4.4.0-119-generic
如何解决?
-
- 论坛版主
- 帖子: 18279
- 注册时间: 2009-08-04 16:33
Re: repoline的问题:insmod一个简单ko,出现错误
Ubuntu 16.04.2 (64位)内核4.4.0-116-generic
貌似需要用支持retpoline选项的编译器
升級到 Ubuntu 18.04 / 目前預裝 内核 4.15.0-13-generic目前已知这三个内核都有这个问题:
3.13.0-143-generic
4.4.0-116-generic
4.4.0-119-generic
預設 支援 retpoline
參閱
https://www.phoronix.com/scan.php?page= ... -Retpoline
Linux 4.15 has Retpoline support as of a few days ago.
-
- 帖子: 22
- 注册时间: 2014-10-16 15:11
- 系统: Ubuntu
Re: repoline的问题:insmod一个简单ko,出现错误
升級到 Ubuntu 18.04 / 目前預裝 内核 4.15.0-13-generic
預設 支援 retpoline
參閱
https://www.phoronix.com/scan.php?page= ... -Retpoline
Linux 4.15 has Retpoline support as of a few days ago.[/quote]
*********************************************************************************
我使用Ubuntu 18.04(内核4.15.0-15-generic),用modinfo查看显示如下:
ddk@ddk:/lib/modules/4.15.0-15-generic/kernel/net/x25$ modinfo x25.ko
filename: /lib/modules/4.15.0-15-generic/kernel/net/x25/x25.ko
alias: net-pf-9
license: GPL
description: The X.25 Packet Layer network layer protocol
author: Jonathan Naylor <g4klx@g4klx.demon.co.uk>
srcversion: 56421E42FEC48B08980FFFE
depends:
retpoline: Y
intree: Y
name: x25
vermagic: 4.15.0-15-generic SMP mod_unload
signat: PKCS#7
signer:
sig_key:
sig_hashalgo: md4
而在Ubuntu 16.04.2(内核4.4.0-119-generic)上,用modinfo查看显示如下:
ddk@ddk:/lib/modules/4.4.0-119-generic/kernel/net/x25$ modinfo x25.ko
filename: /lib/modules/4.4.0-119-generic/kernel/net/x25/x25.ko
alias: net-pf-9
license: GPL
description: The X.25 Packet Layer network layer protocol
author: Jonathan Naylor <g4klx@g4klx.demon.co.uk>
srcversion: 1C330644067B6F5B4EA0703
depends:
intree: Y
vermagic: 4.4.0-119-generic SMP mod_unload modversions retpoline
在 4.15.0-15-generic 上,编译和执行ko,都没有问题。
现在的问题是: 在 4.4.0-119-generic上,因为vermagic多了retpoline,导致编译后的ko无法执行。这个怎么解决?
預設 支援 retpoline
參閱
https://www.phoronix.com/scan.php?page= ... -Retpoline
Linux 4.15 has Retpoline support as of a few days ago.[/quote]
*********************************************************************************
我使用Ubuntu 18.04(内核4.15.0-15-generic),用modinfo查看显示如下:
ddk@ddk:/lib/modules/4.15.0-15-generic/kernel/net/x25$ modinfo x25.ko
filename: /lib/modules/4.15.0-15-generic/kernel/net/x25/x25.ko
alias: net-pf-9
license: GPL
description: The X.25 Packet Layer network layer protocol
author: Jonathan Naylor <g4klx@g4klx.demon.co.uk>
srcversion: 56421E42FEC48B08980FFFE
depends:
retpoline: Y
intree: Y
name: x25
vermagic: 4.15.0-15-generic SMP mod_unload
signat: PKCS#7
signer:
sig_key:
sig_hashalgo: md4
而在Ubuntu 16.04.2(内核4.4.0-119-generic)上,用modinfo查看显示如下:
ddk@ddk:/lib/modules/4.4.0-119-generic/kernel/net/x25$ modinfo x25.ko
filename: /lib/modules/4.4.0-119-generic/kernel/net/x25/x25.ko
alias: net-pf-9
license: GPL
description: The X.25 Packet Layer network layer protocol
author: Jonathan Naylor <g4klx@g4klx.demon.co.uk>
srcversion: 1C330644067B6F5B4EA0703
depends:
intree: Y
vermagic: 4.4.0-119-generic SMP mod_unload modversions retpoline
在 4.15.0-15-generic 上,编译和执行ko,都没有问题。
现在的问题是: 在 4.4.0-119-generic上,因为vermagic多了retpoline,导致编译后的ko无法执行。这个怎么解决?
-
- 帖子: 22
- 注册时间: 2014-10-16 15:11
- 系统: Ubuntu
Re: repoline的问题:insmod一个简单ko,出现错误
找到了一种解决方法:https://bugs.launchpad.net/ubuntu/+sour ... ug/1756506
修改头文件,增加 RETPOLINE 定义:
echo "#define RETPOLINE 1" >> /usr/src/linux-headers-3.13.0-143-generic/include/generated/utsrelease.h
编译内核模块ko,执行insmod成功。
修改头文件,增加 RETPOLINE 定义:
echo "#define RETPOLINE 1" >> /usr/src/linux-headers-3.13.0-143-generic/include/generated/utsrelease.h
编译内核模块ko,执行insmod成功。
-
- 帖子: 1
- 注册时间: 2020-11-12 16:31
- 系统: ubuntu14.04
Re: repoline的问题:insmod一个简单ko,出现错误
在路径/usr/src/linux-headers-4.4.0-142-generic/include/generated$
编辑utsrelease.h
加入一个宏定义 #define RETPOLINE 1
完美解决
编辑utsrelease.h
加入一个宏定义 #define RETPOLINE 1
完美解决