温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何解读linux中blacklist.conf

发布时间:2021-10-21 17:29:53 来源:亿速云 阅读:191 作者:柒染 栏目:云计算

今天就跟大家聊聊有关如何解读linux中blacklist.conf,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

我们在linux中安装驱动,有时会遇到受限或冲突,通常解决方式都是要修改blacklist.conf, 那么如何认识和深入了解它呢?下面就解读下
一、blacklist黑名单
对内核模块来说,黑名单是指禁止某个模块装入的机制

在 /etc/modprobe.d/ 中创建 .conf 文件,使用 blacklist 关键字屏蔽不需要的模块,例如如果不想装入 pcspkr 模块:

/etc/modprobe.d/blacklist.conf
blacklist pcspkr
或者通过命令行的模式
modprobe.blacklist=modname1,modname2
从这里可以看出blacklist是一个模块参数,其实现在linux/module.c中
其源码如下:
static bool blacklisted(const char module_name)
{
const char
p;
size_t len;
#可以看到module_blacklist 这个list 为null,则直接返回false
if (!module_blacklist)
return false;
#这里通过查询这个list 来比较模块的name 是否在module_blacklist中,如果在的话,返回true,就不在加载#layout_and_allocate 这个函数中加载这个模块
for (p = module_blacklist; p; p += len) {
len = strcspn(p, ",");
if (strlen(module_name) == len && !memcmp(module_name, p, len))
return true;
if (p[len] == ',')
len++;
}
return false;
}
core_param(module_blacklist, module_blacklist, charp, 0400);
blacklisted 这个函数是在layout_and_allocate 中加载的
static struct module
layout_and_allocate(struct load_info info, int flags)
{
/
Module within temporary copy. /
struct module
mod;
unsigned int ndx;
int err;

mod = setup_load_info(info, flags);
if (IS_ERR(mod))
    return mod;
#可以看到如果blacklisted 返回true,则layout_and_allocate 就返回-EPERM,表示不加载这个模块
if (blacklisted(info->name))
    return ERR_PTR(-EPERM);

}

二、nvidia 显卡驱动问题示例
Linux系统一般默认安装的是开源的nouvea显卡驱动,它与nvidia显卡驱动产生冲突,欲装nvidia必禁nouvea!其次Nvidia驱动默认安装OpenGL桌面,然而这又与GNOME桌面冲突,为了系统不宕机,也需禁用nvidia的OpenGL,过程中需要搭建gcc、kernel等环境。如此,可顺利安装NVIDIA显卡驱动。

1、首先关闭secure boot
重启电脑,进入BIOS
找到seure boot,一般在boot选项中
将 “Enable” 改为 “Disable”

2、查看系统中存在的NVIDIA驱动 lspci | grep -i nvidia
选择适合本主机linux的nvidia官网驱动,点击搜索后进行下载

因为驱动和内核的源码进行编译,需要安装如下内核相关的包,以及一些编译源码的工具包:
yum install kernel-devel kernel-doc kernel-headers gcc* glibc* glibc-*

有时候 glx-utils.x86_64 会和驱动程序冲突,最好先删除掉:
yum remove glx-utils

3、把驱动加入黑名单中: /etc/modprobe.d/blacklist.conf 在后面加入:
#blacklist nvidiafb 将nvidiafb注释掉
然后添加两行
blacklist nouveau
options nouveau modeset=0
修改 /etc/default/grub 文件
在GRUB_CMDLINE_LINUX中添加

rd.driver.blacklist nouveau nouveau.modeset=0

4、重建 initramfs image

mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
dracut /boot/initramfs-$(uname -r).img $(uname -r)
5、安装编译环境
yum install gcc kernel-devel kernerl-hearders -y
或 yum -y install gcc kernel-devel

6、安装NVIDIA驱动
添加可执行权限
chmod +x NVIDIA-Linux-x86_64-375.39.run

7、退出X-server图形,进入文本模式或修改下inittab
init 3

8、执行下
sh NVIDIA-Linux-x86_64-375.39.run --no-opengl-files

9、后面OK、Accept、yes就装完了

10、最后使用nvidia-smi命令就可以看到驱动详情了

备注: depmod -a 对所有的模块检查下依赖性

        echo modprobe wl >> /etc/rc.local

看完上述内容,你们对如何解读linux中blacklist.conf有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI