在CentOS7 x64安装了ocz revodrive3x2驱动后, 系统无法启动.
http://ocz.com/consumer/download/drivers/linux-v4.1.769/oczpcie-fedora19-v4.1.769.x86_64.rpm
http://ocz.com/consumer/download/drivers
查看dmesg信息, 有几条内核被污染的告警.

# dmesg
[   11.568655] oczpcie: module verification failed: signature and/or required key missing - tainting kernel
[   11.590198] oczvca: module license 'OCZ' taints kernel.
[   11.590200] oczvca: module license 'OCZ' taints kernel.
[   11.590204] Disabling lock debugging due to kernel taint

同时内核污染状态如下 :

[root@localhost ~]# sysctl -a|grep tain
kernel.tainted = 6147

数字组合如下 :

1 - A module with a non-GPL license has been loaded, thisincludes modules with no license.Set by modutils >= 2.4.9 and module-init-tools.
2 - A module was force loaded by insmod -f.Set by modutils >= 2.4.9 and module-init-tools.
2048 - The system is working around a severe firmware bug.
4096 - An out-of-tree module has been loaded.
卸载rpm包, 重新启动系统正常, 还有一个告警和OCZ驱动RPM包无关.
[root@localhost ~]# sysctl -a|grep taint
kernel.tainted = 2048
2048 - The system is working around a severe firmware bug.

dmesg信息如下  :

[    0.407649] [Firmware Bug]: ACPI: BIOS _OSI(Linux) query ignored
[    0.407722] ACPI Error: [CDW1] Namespace lookup failure, AE_NOT_FOUND (20130517/psargs-359)
[    0.407727] ACPI Error: Method parse/execution failed [\_SB_._OSC] (Node ffff8817ba92b870), AE_NOT_FOUND (20130517/psparse-536)
[    0.407915] ACPI: Interpreter enabled
[    0.407920] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S1_] (20130517/hwxface-571)
[    0.407924] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S2_] (20130517/hwxface-571)
[    0.407927] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S3_] (20130517/hwxface-571)
[    0.407939] ACPI: (supports S0 S4 S5)
[    0.407940] ACPI: Using IOAPIC for interrupt routing
[    0.408037] HEST: Table parsing has been initialized.
[    0.408041] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
[    0.408095] ACPI: No dock devices found.
[    0.412782] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
[    0.412790] acpi PNP0A08:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI]
[    0.412903] acpi PNP0A08:00: PCIe AER handled by firmware
[    0.413128] acpi PNP0A08:00: _OSC: OS now controls [PCIeHotplug PME PCIeCapability]

OCZ revodrive 3 x2 pcie SSD由默认的mvsas驱动.

Disk /dev/sdc: 120.0 GB, 120034123776 bytes, 234441648 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x60d0fce7Device Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048   468881407   234439680   83  LinuxDisk /dev/sdd: 120.0 GB, 120034123776 bytes, 234441648 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

参数如下 :

[root@localhost modprobe.d]# ll /sys/module/mvsas/parameters/*
-r--r--r-- 1 root root 4096 Nov 27 00:06 /sys/module/mvsas/parameters/collector
[root@localhost modprobe.d]# cat /sys/module/mvsas/parameters/*
1
[root@localhost modprobe.d]# modinfo mvsas
filename:       /lib/modules/3.10.0-123.el7.x86_64/kernel/drivers/scsi/mvsas/mvsas.ko
license:        GPL
version:        0.8.16
description:    Marvell 88SE6440 SAS/SATA controller driver
author:         Jeff Garzik <jgarzik@pobox.com>
srcversion:     4FF6FB6153E662306329CB3
alias:          pci:v00001B85d00001084sv*sd*bc*sc*i*
alias:          pci:v00001B85d00001083sv*sd*bc*sc*i*
alias:          pci:v00001B85d00001080sv*sd*bc*sc*i*
alias:          pci:v00001B85d00001044sv*sd*bc*sc*i*
alias:          pci:v00001B85d00001043sv*sd*bc*sc*i*
alias:          pci:v00001B85d00001042sv*sd*bc*sc*i*
alias:          pci:v00001B85d00001041sv*sd*bc*sc*i*
alias:          pci:v00001B85d00001040sv*sd*bc*sc*i*
alias:          pci:v00001B85d00001022sv*sd*bc*sc*i*
alias:          pci:v00001B85d00001021sv*sd*bc*sc*i*
alias:          pci:v00001B4Bd00009485sv*sd00009480bc*sc*i*
alias:          pci:v00001B4Bd00009445sv*sd00009480bc*sc*i*
alias:          pci:v00001B4Bd00009480sv*sd00009480bc*sc*i*
alias:          pci:v00001103d00002760sv*sd*bc*sc*i*
alias:          pci:v00001103d00002744sv*sd*bc*sc*i*
alias:          pci:v00001103d00002740sv*sd*bc*sc*i*
alias:          pci:v00001103d00002722sv*sd*bc*sc*i*
alias:          pci:v00001103d00002721sv*sd*bc*sc*i*
alias:          pci:v00001103d00002720sv*sd*bc*sc*i*
alias:          pci:v00001103d00002710sv*sd*bc*sc*i*
alias:          pci:v00009005d00000450sv*sd*bc*sc*i*
alias:          pci:v000017D3d00001320sv*sd*bc*sc*i*
alias:          pci:v000017D3d00001300sv*sd*bc*sc*i*
alias:          pci:v000011ABd00009180sv*sd*bc*sc*i*
alias:          pci:v000011ABd00009480sv*sd*bc*sc*i*
alias:          pci:v000011ABd00006485sv*sd*bc*sc*i*
alias:          pci:v000011ABd00006440sv*sd*bc*sc*i*
alias:          pci:v000011ABd00006440sv*sd00006480bc*sc*i*
alias:          pci:v000011ABd00006340sv*sd*bc*sc*i*
alias:          pci:v000011ABd00006320sv*sd*bc*sc*i*
depends:        libsas,scsi_transport_sas
intree:         Y
vermagic:       3.10.0-123.el7.x86_64 SMP mod_unload modversions
signer:         CentOS Linux kernel signing key
sig_key:        BC:83:D0:FE:70:C6:2F:AB:1C:58:B4:EB:AA:95:E3:93:61:28:FC:F4
sig_hashalgo:   sha256
parm:           collector:If greater than one, tells the SAS Layer to run in Task CollectorMode.  If 1 or 0, tells the SAS Layer to run in Direct Mode.The mvsas SAS LLDD supports both modes.Default: 1 (Direct Mode).(int)

mvsas 参数可更改, 但是依旧是240变成2块120G的块设备.

[root@localhost modprobe.d]# pwd
/etc/modprobe.d
[root@localhost modprobe.d]# vi mvsas.conf
options mvsas collector=2
[root@localhost modprobe.d]# rmmod mvsas && modprobe mvsas

[参考]

1. https://www.kernel.org/doc/Documentation/sysctl/kernel.txt

tainted:Non-zero if the kernel has been tainted.  Numeric values, which
can be ORed together:1 - A module with a non-GPL license has been loaded, thisincludes modules with no license.Set by modutils >= 2.4.9 and module-init-tools.2 - A module was force loaded by insmod -f.Set by modutils >= 2.4.9 and module-init-tools.4 - Unsafe SMP processors: SMP with CPUs not designed for SMP.8 - A module was forcibly unloaded from the system by rmmod -f.16 - A hardware machine check error occurred on the system.32 - A bad page was discovered on the system.64 - The user has asked that the system be marked "tainted".  Thiscould be because they are running software that directly modifiesthe hardware, or for other reasons.128 - The system has died.256 - The ACPI DSDT has been overridden with one supplied by the userinstead of using the one provided by the hardware.512 - A kernel warning has occurred.
1024 - A module from drivers/staging was loaded.
2048 - The system is working around a severe firmware bug.
4096 - An out-of-tree module has been loaded.
8192 - An unsigned module has been loaded in a kernel supporting modulesignature.
16384 - A soft lockup has previously occurred on the system.

2. https://www.kernel.org/doc/Documentation/module-signing.txt

==========================
CONFIGURING MODULE SIGNING
==========================The module signing facility is enabled by going to the "Enable Loadable Module
Support" section of the kernel configuration and turning onCONFIG_MODULE_SIG   "Module signature verification"This has a number of options available:(1) "Require modules to be validly signed" (CONFIG_MODULE_SIG_FORCE)This specifies how the kernel should deal with a module that has asignature for which the key is not known or a module that is unsigned.If this is off (ie. "permissive"), then modules for which the key is notavailable and modules that are unsigned are permitted, but the kernel willbe marked as being tainted, and the concerned modules will be marked astainted, shown with the character 'E'.If this is on (ie. "restrictive"), only modules that have a validsignature that can be verified by a public key in the kernel's possessionwill be loaded.  All other modules will generate an error.Irrespective of the setting here, if the module has a signature block thatcannot be parsed, it will be rejected out of hand.(2) "Automatically sign all modules" (CONFIG_MODULE_SIG_ALL)If this is on then modules will be automatically signed during themodules_install phase of a build.  If this is off, then the modules mustbe signed manually using:scripts/sign-file(3) "Which hash algorithm should modules be signed with?"This presents a choice of which hash algorithm the installation phase willsign the modules with:CONFIG_MODULE_SIG_SHA1     "Sign modules with SHA-1"CONFIG_MODULE_SIG_SHA224 "Sign modules with SHA-224"CONFIG_MODULE_SIG_SHA256   "Sign modules with SHA-256"CONFIG_MODULE_SIG_SHA384   "Sign modules with SHA-384"CONFIG_MODULE_SIG_SHA512   "Sign modules with SHA-512"The algorithm selected here will also be built into the kernel (ratherthan being a module) so that modules signed with that algorithm can havetheir signatures checked without causing a dependency loop.
3. http://ocz.com/consumer/download/drivers

kernel taint相关推荐

  1. Linux Kernel Oops异常分析

    0.linux内核异常常用分析方法 异常地址是否在0附近,确认是否是空指针解引用问题 异常地址是否在iomem映射区,确认是否是设备访问总线异常问题,如PCI异常导致的地址访问异常 异常地址是否在st ...

  2. (WIP)Start my first kernel journey (by quqi99)

    作者:张华  发表于:2016-03-22 版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 ( http://blog.csdn.net/quqi99 ) 在内 ...

  3. linux kernel debug 之 CallTrace

    这篇文章是基于上次UWB(WUSB) wireless debug 的一个问题,然后引申出来的一个话题,对kenel有一定理解的同学可能会有一定的帮助. --其实这个问题,个人认为,这个个CallTr ...

  4. linux内核 异常 log,Linux Kernel WARN()/BUG(), Oops/Panic, Tainted分析

    稳定性范畴, 参考5.x kernel. kernel Oops Oops指的就是内核的不正确行为,比如对驱动来说:static int i82092aa_pci_probe(struct pci_d ...

  5. linux内核oops错误码说明,Linux Kernel Oops异常分析

    0.linux内核异常常用分析方法 异常地址是否在0附近,确认是否是空指针解引用问题 异常地址是否在iomem映射区,确认是否是设备访问总线异常问题,如PCI异常导致的地址访问异常 异常地址是否在st ...

  6. linux内核模块编译

    1 Makefile编写 ifneq ($(KERNELRELEASE),) obj-m := mytest.o mytest-objs := file1.o file2.o file3.o else ...

  7. 在Linux内核使用Kasan

    昨天的文章发出来后,有同学在群里说内核也可以使用这个工具,所以再转发一篇wowo网站的文章,希望对大家有帮助. Linux 应用调试神器- ASan 1. 前言 KASAN是一个动态检测内存错误的工具 ...

  8. Linux设备驱动02:Linux内核模块

    目录 1. 内核模块概述 1.1 引入原因 1.2 内核模块含义 1.3 内核模块构成 2. 内核模块操作命令 2.1 加载模块 2.2 卸载模块 2.3 查看模块信息 2.3.1 lsmod 2.3 ...

  9. drm debug log with drm.debug=6 debug

    t:s0 msg='unit=kmod-static-nodes comm="systemd" exe="/usr/lib/systemd/systemd" h ...

最新文章

  1. 线段树扫描线求矩形周长详解
  2. Ubuntu14.04安装apt-get方法Lnmp环境
  3. 十道常见的MyBatis 面试题
  4. C# 结合 Golang 开发
  5. windows10下安装pytorch并导入pycharm
  6. linux系统cpu文件,Linux_学堂:当前Linux系统运行的各种参数, 1、CPU   在文件“/proc/ - phpStudy...
  7. IS-IS快速收敛调优(二)——链路故障检测、LSP智能定时器和SPF智能定时器
  8. 计算机组成与设计 笔记(一)
  9. mysql触发器实例
  10. 基于php的微信公众号开发,基于ThinkPHP框架快速构建微信公众号开发框架
  11. DSP DTK6437、seed6437 通过指定的定标数据生成梯形波(带串口通信)
  12. Nginx中root与alias区别
  13. 赏帮赚,实战日记的第一天
  14. Linux命令行如何编辑word文档,在Linux平台下用命令行工具显示Word文档
  15. 共同抵制恶意APP CNCERT公布首批黑名单
  16. Java并发编程工具类:CountDownLatch、CyclicBarrier、Semaphore
  17. PDF.js 实现pdf分页加载的前端优化(实现按需加载)-前端的demo也已经上传
  18. 解决 input 输入框在 iOS 系统中无法输入内容
  19. 一款免杀远控,马子体积小
  20. php 无法加载activex,IE无法加载 Activex 控件的解决办法

热门文章

  1. FreeRADIUS服务器添加自定义参数
  2. 今日头条商业产品经理笔经面经(offer)
  3. 两部电梯的测试用例设计
  4. Python【第八天】面向对象基础(2)
  5. 计算机 正高级专业技术资格,[所有分类]正高级专业技术职务任职资格.doc
  6. 流媒体云时代的声与色,融云铺就的桥与路
  7. Soot(一):Soot的三种使用方式:命令行、idea、eclipse
  8. 转型「树木」,华为「树人」
  9. 聊聊什么是 i18n?JavaScript 中的 i18n 基本概念
  10. 《css+html小案例3》小米商城手机部分:利用浮动+弹性盒子布局