【Linux】CentOS 7 编译NBD驱动

本文详细介绍了如何使用yum安装内核开发包和头文件,下载并解压内核源码,创建目录结构,进行内核源码的编译和构建过程,包括清理旧版本内核、复制配置文件、重新配置、准备、生成脚本、构建模块等关键步骤。
uname -r #-> 3.10.0-123.el7.x86_64
 
yum install kernel-devel kernel-headers
cd /tmp
wget http://vault.centos.org/7.0.1406/os/Source/SPackages/kernel-3.10.0-123.el7.src.rpm
rpm -ihv kernel-3.10.0-123.el7.src.rpm
cd ~/rpmbuild/SOURCES
tar Jxvf linux-3.10.0-123.el7.tar.xz -C /usr/src/kernels/
cd /usr/src/kernels/
mv $(uname -r) $(uname -r)-old
mv linux-3.10.0-123.el7 $(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
centos7,make操作编译驱动文件是放在什么目录下?下面是我编译的输出: make -C /lib/modules/3.10.0-1160.118.1.el7.x86_64/build M=/opt/Itek/IKapInstall/Drivers/vulcan_cxp_board-1.0.0 modules make[1]: 进入目录“/usr/src/kernels/3.10.0-1160.118.1.el7.x86_64” CC [M] /opt/Itek/IKapInstall/Drivers/vulcan_cxp_board-1.0.0/dbg.o CC [M] /opt/Itek/IKapInstall/Drivers/vulcan_cxp_board-1.0.0/cxp_mod.o CC [M] /opt/Itek/IKapInstall/Drivers/vulcan_cxp_board-1.0.0/cxp_cdev.o CC [M] /opt/Itek/IKapInstall/Drivers/vulcan_cxp_board-1.0.0/cxp_isr.o CC [M] /opt/Itek/IKapInstall/Drivers/vulcan_cxp_board-1.0.0/cxp_ioctl.o /opt/Itek/IKapInstall/Drivers/vulcan_cxp_board-1.0.0/cxp_ioctl.c: 在函数‘ioctl_get_sg_dma_address.isra.15’中: /opt/Itek/IKapInstall/Drivers/vulcan_cxp_board-1.0.0/cxp_ioctl.c:315:26: 警告:此函数中的‘i’在使用前可能未初始化 [-Wmaybe-uninitialized] if (cdev->cuda_p2p[i].dma_mapping == 0) { ^ LD [M] /opt/Itek/IKapInstall/Drivers/vulcan_cxp_board-1.0.0/vulcan_cxp_board.o Building modules, stage 2. MODPOST 1 modules CC /opt/Itek/IKapInstall/Drivers/vulcan_cxp_board-1.0.0/vulcan_cxp_board.mod.o LD [M] /opt/Itek/IKapInstall/Drivers/vulcan_cxp_board-1.0.0/vulcan_cxp_board.ko make[1]: 离开目录“/usr/src/kernels/3.10.0-1160.118.1.el7.x86_64” cp: 无法获取"/lib/modules/3.10.0-1160.118.1.el7.x86_64/kernel/drivers/char/vulcan_cxp_board.ko" 的文件状态(stat): 结构需要清理 finish cp! Builid vulcan_cxp_board finished!
最新发布
08-02
[root@localhost linux-3.10.0-1160.el7]# cat -n include/linux/blk_types.h | grep "#define REQ_" 227 #define REQ_WRITE (1ULL << __REQ_WRITE) 228 #define REQ_FAILFAST_DEV (1ULL << __REQ_FAILFAST_DEV) 229 #define REQ_FAILFAST_TRANSPORT (1ULL << __REQ_FAILFAST_TRANSPORT) 230 #define REQ_FAILFAST_DRIVER (1ULL << __REQ_FAILFAST_DRIVER) 231 #define REQ_SYNC (1ULL << __REQ_SYNC) 232 #define REQ_META (1ULL << __REQ_META) 233 #define REQ_PRIO (1ULL << __REQ_PRIO) 234 #define REQ_DISCARD (1ULL << __REQ_DISCARD) 235 #define REQ_WRITE_SAME (1ULL << __REQ_WRITE_SAME) 236 #define REQ_NOIDLE (1ULL << __REQ_NOIDLE) 238 #define REQ_FAILFAST_MASK \ 240 #define REQ_COMMON_MASK \ 244 #define REQ_CLONE_MASK REQ_COMMON_MASK 249 #define REQ_NOMERGE_FLAGS \ 252 #define REQ_RAHEAD (1ULL << __REQ_RAHEAD) 253 #define REQ_THROTTLED (1ULL << __REQ_THROTTLED) 255 #define REQ_SORTED (1ULL << __REQ_SORTED) 256 #define REQ_SOFTBARRIER (1ULL << __REQ_SOFTBARRIER) 257 #define REQ_FUA (1ULL << __REQ_FUA) 258 #define REQ_NOMERGE (1ULL << __REQ_NOMERGE) 259 #define REQ_STARTED (1ULL << __REQ_STARTED) 260 #define REQ_DONTPREP (1ULL << __REQ_DONTPREP) 261 #define REQ_QUEUED (1ULL << __REQ_QUEUED) 262 #define REQ_ELVPRIV (1ULL << __REQ_ELVPRIV) 263 #define REQ_FAILED (1ULL << __REQ_FAILED) 264 #define REQ_QUIET (1ULL << __REQ_QUIET) 265 #define REQ_PREEMPT (1ULL << __REQ_PREEMPT) 266 #define REQ_ALLOCED (1ULL << __REQ_ALLOCED) 267 #define REQ_COPY_USER (1ULL << __REQ_COPY_USER) 268 #define REQ_FLUSH (1ULL << __REQ_FLUSH) 269 #define REQ_FLUSH_SEQ (1ULL << __REQ_FLUSH_SEQ) 270 #define REQ_IO_STAT (1ULL << __REQ_IO_STAT) 271 #define REQ_MIXED_MERGE (1ULL << __REQ_MIXED_MERGE) 272 #define REQ_SECURE (1ULL << __REQ_SECURE) 273 #define REQ_KERNEL (1ULL << __REQ_KERNEL) 274 #define REQ_PM (1ULL << __REQ_PM) 275 #define REQ_HASHED (1ULL << __REQ_HASHED) 276 #define REQ_MQ_INFLIGHT (1ULL << __REQ_MQ_INFLIGHT) 278 #define REQ_STATS (1ULL << __REQ_STATS) 281 #define REQ_TIMEOUT (1ULL << __REQ_TIMEOUT)
07-04
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值