【问题标题】:How to load network block device on CentOS7CentOS7如何加载网络块设备
【发布时间】:2018-01-07 05:46:30
【问题描述】:

我正在尝试在我的 CentOS7 服务器上加载 nbd 网络块设备。但是,我得到了:

modprobe nbd
modprobe: FATAL: Module nbd not found.

如果有人能告诉我加载nbd 模块的最佳方式,我将不胜感激。最后,我希望我可以通过 ansible 自动执行这些任务。

这是我的内核版本:

$ uname -r
3.10.0-327.28.3.el7.x86_64

谢谢!

【问题讨论】:

  • 感谢您的评论。恕我直言,我认为这与发展有关。例如,类似的问题如:stackoverflow.com/questions/4839024/…stackoverflow.com/questions/35525960/…stackoverflow.com/questions/225845/…。但我感谢您在分享这些链接和通知我其他平台方面的帮助。 :)
  • 是的,请注意根据其他问题来衡量您的问题的主题性。他们可能也跑题了。问题是,我们(Stack Overflow 社区)在执行站点规则方面做得不好。你似乎掉进了一个更严重的陷阱——早在 2008 年或 2009 年,网站规则不同;像Unix & Linux Stack Exchange 这样的网站并不存在。但如果我错了,请显示驱动程序的相关代码,如insert_modremove_mod
  • 这是一个很好的观点,你是对的,从那时起规则发生了变化。至于显示驱动程序的相关代码,如果您能详细说明,将不胜感激。也许一个更好的问题标题是如何在 CentOS7 上安装网络设备块?在 Ubuntu 而不是 CentOS 上这样做似乎很简单。
  • 在解决了依赖项的一些错误并安装了 rpm-build 包(不在 rpm 包中)后,我能够将 NBD 模块添加到 CentOS 7 的内核中。确保在 @ 上使用正确的版本987654326@

标签: linux linux-kernel centos7 kernel-module network-block-device


【解决方案1】:

我发现这很有用。如果这对您不起作用,请告诉我

uname -r
sudo su
# useradd builder
# groupadd builder
cd /home/centos
# Get Source Code, make sure you check the kernel version first and download the proper version
wget http://vault.centos.org/7.2.1511/updates/Source/SPackages/kernel-3.10.0-327.28.3.el7.src.rpm
rpm -ivh kernel-3.10.0-327.28.3.el7.src.rpm

# Build Preparation
mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros
cd ~/rpmbuild/SPECS
rpmbuild -bp --target=$(uname -m) kernel.spec
cd ~/rpmbuild/BUILD/kernel-3.10.0-327.28.3.el7/linux-3.10.0-327.28.3.el7.centos.x86_64/

# Build
make menuconfig
# Device Driver -> Block devices -> Set “M” On “Network block device support”

make prepare && make modules_prepare && make
make M=drivers/block -j8
modinfo drivers/block/nbd.ko
cp drivers/block/nbd.ko /lib/modules/3.10.0-327.28.3.el7.x86_64/extra/
depmod -a && sudo modprobe nbd

这将在 CentOS7 上启用 nbd

【讨论】:

  • 这非常有用,我注意到您暗示添加用户 builder (因为建议不要以 root 身份构建),但最后运行 make 并不明确用户(~/rpmbuild 应该在哪里 - 是 /root/rpmbuild 还是 /home/builder/rpmbuild ?)
  • 至少从 Centos 7.4.1708 和内核版本 3.10.0-693.5.2 开始,您需要安装 gcc 版本 6 或更高版本,此处的说明stackoverflow.com/questions/36327805/…
  • 感谢您的 cmets @szmoore。因此,如果您确实想添加用户builder(建议),您应该在/home/builder/rpmbuild 下运行make。并感谢您发布安装说明的链接gcc 版本>6
  • 请注意,遇到此问题的新人,由于这些说明相当陈旧,因此还有一个附加说明。 NBD 的一些代码依赖于一个旧函数。因此,在您执行“make menuconfig”、vim 或 nano 或任何驱动程序/块/nbd.ko 并搜索具有“REQ_TYPE_SPECIAL”的行并将该部分重命名为“REQ_TYPE_DRV_PRIV”然后保存并关闭文件之后。然后继续说明。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-20
  • 2011-10-11
  • 2023-04-03
  • 2010-10-03
  • 2012-02-18
相关资源
最近更新 更多