Linux系统NBD驱动安装拓展篇
前言:
最近在安装中标麒麟机器的时候,发现麒麟的操作系统找不到src.rpm包,且系统内部也没有内核文件,导致正常方法安装NBD驱动无法实施。故这里找了另一种办法帮助此类型操作系统安装NBD驱动。
一、 中标麒麟系统类型及内核信息
|
系统镜像名称 |
内核版本 |
| Kylin-4.0-1E-desktop_20160401-final-x86_64-2016-04-01 | 3.16.0-23-generic |
| NeoKylin-Linux-Advanced-Server-6.7 | 2.6.32-573.el6.x86_64 |
| NeoKylin-sws-3.2(64) | 2.6.32-220.2.1.2.ky3.2.x86_64 |
| YHKylin-4.2-5-x86_64-server | 2.6.32-431.29.2.3.ky3.1.x86_64 |
对于以上4个内核版本的机器,其中3.16.0-23-generic和ubuntu(ubuntu-14.10-desktop-amd64)内核版本一模一样,而且/lib/modules/3.16.0-23-generic/kernel/drivers/block文件夹下已经有编译好的nbd.ko文件,测试发现可以插入到目标机器麒麟系统中。
二、查找相同内核的其他Linux系统:
例如红帽系统:

三、常规安装NBD驱动
在相同内核的系统(该系统可以通过常规方法安装NBD)上安装NBD驱动
以下是大概步骤:
uname -r #-> 3.10.0-123.el7.x86_64
yum install kernel-devel kernel-headers
cd /tmp
wget kernel-3.10.0-64.el7.x86_64.rpm
rpm -ivh kernel-3.10.0-64.el7.x86_64.rpm (这时会在/root/rpmbuild/SOURCES下生成tar包)
cd ~/rpmbuild/SOURCES
tar jxf kernel-3.10.0-64.el7.x86_64.tar -C /usr/src/kernels/
cd /usr/src/kernels
mv $(uname -r) $(uname -r)-old
mv linux-2.6.32-220.4.2.el6 $(uname -r)
cd $(uname -r)
make mrproper
cp ../$(uname -r)-old/Module.symvers .
cp /boot/config-$(uname -r) ./.config
make oldconfig
make prepare
make scripts
make CONFIG_BLK_DEV_NBD=m M=drivers/block
cp drivers/block/nbd.ko /lib/modules/$(uname -r)/kernel/drivers/block/
depmod -a modprobe nbd 启用nbd模块
四、拷贝nbd驱动到目标主机
通过在redhat机器中,成功编译安装NBD,然后将/lib/modules/$(uname -r)/kernel/drivers/block/目录下的nbd.ko文件拷贝到目标机/lib/modules/$(uname -r)/kernel/drivers/block/目录下。
五、加载驱动模块
方法一:
进入SHT21.ko驱动模块文件所在的目录,然后直接
insmod SHT21.ko
即可
方法二:
将SHT21.ko文件拷贝到/lib/modules/$(uname -r)/kernel/drivers/block/目录下,这里,#uname -r#意思是,在终端中输入
uname -r后显示的内核版本及名称,例如mini2440中#uname -r#就是2.6.32.2-FriendlyARM。
然后
depmod(会在/lib/modules/#uname -r#/目录下生成modules.dep和modules.dep.bb文件,表明模块的依赖关系)
最后
modprobe SHT21(注意这里无需输入.ko后缀)
即可
两种方法的区别:
modprobe和insmod类似,都是用来动态加载驱动模块的,区别在于modprobe可以解决load module时的依赖关系,它是通过/lib/modules/#uname -r/modules.dep(.bb)文件来查找依赖关系的;而insmod不能解决依赖问题。
也就是说,如果你确定你要加载的驱动模块不依赖其他驱动模块的话,既可以insmod也可以modprobe,当然insmod可以在任何目录下执行,更方便一些。而如果你要加载的驱动模块还依赖其他ko驱动模块的话,就只能将模块拷贝到上述的特定目录,depmod后再modprobe。
查看已加载的驱动模块列表
在任何目录下,
lsmod
即可
卸载驱动模块
在任何目录下,
rmmod <module_name>
即可
注意其中”module_name”是lsmod显示的模块名称,而不是对应的ko文件名
六、总结
1) 常规安装NBD过程之前,首先查看/usr/src/kernels/目录下是否含有$(uname -r)文件夹,如果没有则需要手动下载kernel-devel-2.6.32-220.el6.x86_64.rpm文件下载头文件手动安装。
参考链接(http://vault.centos.org/6.2/os/x86_64/Packages/)(不同操作系统安装不同内核的头文件)。
2) yum install kernel-devel kernel-headers只会下载最新的内核头文件,容易导致系统所正在运行的内核与kernel-header版本不一致,编译NBD失败;
建议使用(1)中的方法,找到相同版本内核heards & devel rpm文件包,手动安装。
Linux系统NBD驱动安装拓展篇的更多相关文章
- Jenkins:VMware虚拟机Linux系统的详细安装和使用教程
jenkins:VMware虚拟机Linux系统的详细安装和使用教程 (一) 不是windows安装虚拟机可跳过 1.Windows安装VMware 2.VMware安装linux系统 3.windo ...
- Linux系统无线网卡的安装【转】
转自:http://www.linuxidc.com/Linux/2013-03/81473.htm 现在的很多的可移动无线网卡都是usb接口的,把这种网卡应用到windows操作系统上是很容易就能起 ...
- Linux FC/iSCSI存储设备管理系列(一):Linux系统设备驱动入门
Linux FC/iSCSI存储设备管理系列(一):Linux系统设备驱动入门 转载请在文首保留原文出处:EMC中文支持论坛 - https://community.emc.com/go/chines ...
- linux系统下怎么安装.deb文件
linux系统下怎么安装.deb文件? deb 是 ubuntu .debian 的格式.rpm 是 redhat .fedora .suse 的格式. 他们不通用(虽然可以转换一下). deb是de ...
- linux系统下怎么安装.deb文件?
linux系统下怎么安装.deb文件? deb 是 ubuntu .debian 的格式. rpm 是 redhat .fedora .suse 的格式. 他们不通用(尽管能够转换一下). deb是d ...
- 【Oracle RAC】Linux系统Oracle11gR2 RAC安装配置详细过程V3.1(图文并茂)
[Oracle RAC]Linux系统Oracle11gR2 RAC安装配置详细过程V3.1(图文并茂) 2 Oracle11gR2 RAC数据库安装准备工作2.1 安装环境介绍2.2 数据库安装软件 ...
- 【Oracle RAC】Linux系统Oracle12c RAC安装配置详细记录过程V2.0(图文并茂)
[Oracle RAC]Linux系统Oracle12c RAC安装配置详细过程V2.0(图文并茂) 2 Oracle12c RAC数据库安装准备工作2.1 安装环境介绍2.2 数据库安装软件下载3 ...
- MySQL5.7.20 二进制包 在Linux系统中的 安装和配置
01, 下载安装包 => https://dev.mysql.com/downloads/mysql/ 02, 上传到linux系统, 笔者这里安装在 root 目录下, 常见安装在 var/ ...
- Linux 系统下Eclipse安装及使用
Linux 系统下Eclipse安装及使用 我们在搞上层开发的时候,都是在Windows下使用Eclipse,那么如果是Linux应用开发,就必须要在Linux中安装Eclipse,用于C/C++开发 ...
随机推荐
- Google自写插件详解
谷歌插件详解,跳转至个人主页查看. GoogleExtension
- font-size 基准
浏览器的缺省字体为16px: 你可以先将基准字体大小设置为10px; body { font-size: 62.5%; } 然后统一使用 em作为单位 div { font-size: 2.4em; ...
- 02_NIO简单实例
[一个用NIO实现的客户端向服务端单向通信的例子] [服务端程序] package com.nio.test; import java.io.IOException; import java.net. ...
- 二十一、如何导入svg图片
svg就相当于字体,如何将生成的svg导入到自己的项目中去呢? 1.将类似下面的文件放入自己的项目中: 2.生成的svg中有一个style.css文件,将里面的内容拷贝到你的css中,然后更改上图的路 ...
- 如何解决 Linux 虚拟机磁盘设备名不一致的问题
问题描述 在 Linux 虚拟机内,将附加的多块数据磁盘以设备名(/dev/sdxx)的方式创建文件系统,并将之写入 /etc/fstab 文件中实现启动自动挂载功能.但是在虚拟机重启之后,会随机出现 ...
- 【NLP_Stanford课堂】文本分类1
文本分类实例:分辨垃圾邮件.文章作者识别.作者性别识别.电影评论情感识别(积极或消极).文章主题识别及任何可分类的任务. 一.文本分类问题定义: 输入: 一个文本d 一个固定的类别集合C={c1,c2 ...
- windows线程时间打印
https://blog.csdn.net/xingcen/article/details/70084029
- 正则表达式 (python)
正则表达式 在正则表达式中,如果直接给出字符,就是精确匹配. 用\d可以匹配一个数字,\w可以匹配一个字母或数字,所以: '00\d'可以匹配'007',但无法匹配'00A': '\d\d\d'可以匹 ...
- python数据处理——numpy
标准安装的Python中用列表(list)保存一组值,可以用来当作数组使用,不过由于列表的元素可以是任何对象,因此列表中所保存的是对象的指针.这样为了保存一个简单的[1,2,3],需要有3个指针和三个 ...
- windows 安装redis并注册服务
windows下载地址 https://github.com/MSOpenTech/redis/releases 启动:redis-server redis.windows.conf ...