Centos系列发行版默认没有编译nbd内核模块,需要手工编译后加载上才可以使用。在这一点上还是Debian/Ubuntu系列好用。
加载nbd模块方法:
1. 确认内核版本号,执行命令:uname -r
3.10.0-327.el7.x86_64
只支持上述内核版本,其他未验证
2. 拷贝nbd.ko到/lib/modules/3.10.0-327.el7.x86_64/kernel/drivers/block目录下,nbd.ko下载地址:nbd.ko.zip
3. 执行命令:depmod -a
4. 加载nbd模块:modprobe nbd
5. 确认nbd加载成功:ls /dev/nbd*可以看到nbd设备,lsmod|grep nbd可以看到内核模块
附1. 编译nbd模块方法:
参考https://www.ljjjustin.xyz/2016/12/07/compile-nbd-module-on-centos7文章中kernel-devel源码包下载链接已失效,kernel-devel源码包下载链接:wget ftp://ftp.icm.edu.pl/vol/rzm6/linux-slc/centos/7.1.1503/updates/Source/SPackages/kernel-3.10.0-327.el7.src.rpm
附2. 使用nbd设备挂载镜像分区方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
yum install ntfs-3g fuse ### 安装ntfs文件系统依赖(挂载windows系统镜像需要ntfs文件系统支持) qemu-nbd -c /dev/nbd10 win2k8r2-cn-qemu-10G.img ### 挂载镜像到nbd设备, # 有些镜像挂载到nbd设备之后直接就有分区了,可以通过查看是否出现/dev/nbd10p*来确认是否需要获取分区,如果没有需要用kpartx工具获取 kpartx -a /dev/nbd10 ### 获取镜像分区 ll /dev/mapper/nbd10p* ### 分区在这个目录下,p1、p2表示第1、2个分区 mount /dev/mapper/nbd10p1 /mnt ### 挂载镜像的第一个分区,Linux一般是vda1,windows一般是保留分区,而不是C盘 ll /mnt/ umount /mnt ### umount mount /dev/mapper/nbd10p2 /mnt ### 挂载第2个镜像分区(可以直接挂载第2个分区,上面挂载第1个分区是为了演示) cd /mnt/ ll cd Program\ Files ### 这次是C盘了 ll cd Qemu-ga/ ### 切换到想修改的文件所在目录,之后可以替换、删除、修改等操作 umount /mnt ### 操作结束后,umount挂载目录 kpartx -d /dev/nbd10 ### 卸载分区 qemu-nbd -d /dev/nbd10 ### 从nbd设备上卸载镜像 |
2018-11-15更新
在Centos7.5上编译可能报错:
Makefile:901: "Cannot use CONFIG_STACK_VALIDATION, please install libelf-dev or elfutils-libelf-devel"
或
No rule to make target `tools/objtool/objtool'
可参考:https://blog.csdn.net/miaodichiyou/article/details/76050361