[dpdk][kernel][driver] 如何让DPDK的UIO开机自动加载到正确的网卡上 (没搞定)

0. 前言

开了虚拟机,开始dpdk之前,我每天都干这几件事:

[[email protected] potatos]# modprobe uio
[[email protected] potatos]# insmod /root/dpdk/x86_64-native-linuxapp-gcc/kmod/igb_uio.ko
[[email protected] potatos]# /root/dpdk/tools/dpdk-devbind.py -b igb_uio 0000:00:04.0

作为一个有理想的人,很明显,这件事需要让机器自己干 --! 做了上百次之后,我终于开窍了。。。

1. linux启动过程

  BOIS/UEFI --> MBR --> grub2 -> linux kernel --> initrd --> root_fs --> sys init / systemd / busybox --> shell --> logind/display manager --> X

可参考另一篇:https://i.cnblogs.com/PostDone.aspx?postid=6652739&actiontip=%E5%8F%91%E5%B8%83%E6%88%90%E5%8A%9F

  涉及到驱动的地方:

  A:linux kernel,有一部分驱动是直接编译到内核里边去的 /boot/vmlinuz-linux ,另一部分是动态加载的,在/usr/lib/modules/4.10.6-1-ARCH/kernel/ 下面。还有一部分是没有的。

    我们在编译内核之前,可以修改内核编译选项,有三个选项 Y / M / N  一一对应。

  B:initrd: 但是我们是两阶段启动,所以,initrd中也被集成了一部分驱动,他们的目的只是为了strap起 rootfs。可以在/etc/mkinitcpio.conf中指定。

  C:rootfs,也就是/usr/lib/modules/4.10.6-1-ARCH/kernel/ 下面的驱动。

2. 我们讨论 rootfs中的内容。

  A:我们可以手动加载卸载他们,用modprobe。了解modprobe的大概用法,配置。

# man modprobe
# man modprobe.d

  B:udev, 设备插拔之类的,udev会根据事件,自动的加载卸载驱动。

https://wiki.archlinux.org/index.php/udev

http://www.reactivated.net/writing_udev_rules.html

https://www.kernel.org/pub/linux/utils/kernel/hotplug/udev/udev.html

  看完两篇文档,我依然对udev了解不深。

所以,我应该把dpdk的uio放进udev么? 还是加入启动脚本里,在里边调用 modprobe?

了解一下sys init 和 systemd 的流程,应该会找到正确的方式。

3.   sys init / systemd 流程

  略。好像没啥关系

4.   来个别人总结的番外篇:(为了防止这位博友把原文删掉,我已经另存本地了。)

  http://www.cnblogs.com/image-eye/archive/2011/08/19/2145858.html

5.  按照番外片里的说法,所有设备在被内核发现的时候,内核就会发内核事件出来,而外面正在监听的udev就会捕获到,然后根据modprobe.alias 和 modprobe.dep中的内容,加载一系列的模块了。

  所以,我应该去改modprobe的配置,blacklist掉相应的网卡,使之使用dpdk的驱动。

6. https://wiki.archlinux.org/index.php/Kernel_modules#Blacklisting

CentOS 7 里边的方法:红色为关键操作。

[[email protected] ~]# cd /lib/modules/3.10.0-514.6.1.el7.x86_64/extra/
[[email protected] extra]# mkdir dpdk
[[email protected] extra]# cp /root/dpdk/x86_64-native-linuxapp-gcc/kmod/igb_uio.ko dpdk/
[[email protected] etc]# cd modules-load.d/
[[email protected] modules-load.d]# touch dpdk.conf
[[email protected] modules-load.d]# vim dpdk.conf
[[email protected] ~]# cat /etc/modules-load.d/dpdk.conf
igb_uio
[[email protected] ~]# depmod
[[email protected] ~]# modprobe igb_uio
[[email protected] ~]# reboot
[[email protected] ~]# lsmod |grep igb
igb_uio                13224  0
uio                    19259  1 igb_uio
[[email protected] ~]# 

http://stackoverflow.com/questions/34800731/module-not-found-when-i-do-a-modprobe

至此,UIO已经开机自动加载了,接下来的问题是,让UIO自动驱动网卡。

截至到目前,只能自动加载。却不知道如何让指定的网卡默认加载UIO,毕竟我不能blacklist intel的驱动。而

且从udev里卸载一个驱动去加载另一个是否常规呢?这些疑问都需要深入的理解了udev之后才能回答。

算了,放弃了。。。。 不然人家dpdk为啥要提供个脚本。。。

当然,实现功能是没问题的,只需要自启动一个脚本,调用这个驱动。

如果,有幸有人读到此处并愿意分享的话,欢迎留言。

时间: 2024-12-17 00:27:54

[dpdk][kernel][driver] 如何让DPDK的UIO开机自动加载到正确的网卡上 (没搞定)的相关文章

fedora25 安装virtualbox5.1 出现提示Kernel driver not installed (rc=-1908) 错误的解决方法

fedora25 安装virtualbox5.1 出现提示Kernel driver not installed (rc=-1908) 错误的解决方法: $ sudo /usr/lib/virtualbox/vboxdrv.sh setup        vboxdrv.sh: Building VirtualBox kernel modules.             vboxdrv.sh: Starting VirtualBox services.

Fedora安装VirtualBox时出现错误Kernel driver not installed (rc=-1908)的解决办法

新建虚拟机后启动时出现如下错误: Kernel driver not installed (rc=-1908) The VirtualBox Linux kernel driver (vboxdrv) is either not loaded or there is a permission problem with /dev/vboxdrv. Re-setup the kernel module by executing '/etc/init.d/vboxdrv setup' as root.

virtualbox cannot access the kernel driver的解决办法

一位网友windows xp sp3下安装virtualbox 4.1.20版本,安装好了重启过后,可以打开virtualbox,但是等到创建好虚拟电脑后按启动按钮,就出现了错误提示:"Cannot access the kernel driver",启动不了 virtualbox.根据错误的提示说明virtualbox不能访问核心驱动,也就是驱动除了问题,一般来说可能是杀毒软件导致安装virtualbox的时候驱动没安装上.1.先去安装virtualbox的文件夹,手动安装virtu

CentOS VirtualBox启动虚拟及报错:VirtualBox error: Kernel driver not installed (rc=1908)

VirtualBox error: Kernel driver not installed (rc=1908) Hi all, Let me first say that this is my final resort after googling this issue for the last several hours. None of the solutions that I have found are working for me. My VirtualBox (PUEL, not O

ERROR: The Nouveau kernel driver is currently in use by your system.

ERROR: The Nouveau kernel driver is currently in use by your system. This  driver is incompatible with the NVIDIA driver, and must be disabled before proceeding. Please consult the NVIDIA driver README and your Linux distribution's documentation for

Ubuntu下升级VisualBox后无法启动 Kernel driver not installed (rc=-1908)

Ubuntu下升级VisualBox后无法启动 Kernel driver not installed (rc=-1908) VisualBox之所以在Linux上比传统的VMware快得多,关键一点就是它和Linux内核的结合比较紧密,这也是开源的优点. 不过Linux内核更新很频繁,每次更新内核后启动VirtualBox都会提示: VirtualBox kernel driver not installed. The vboxdrv kernel module was either not

VirtualBox提示Kernel driver not installed (rc=-1908)

今天用虚拟机挂载了一个镜像文件,结果虚拟机不能打开(见下图),结果我还以为是我挂载的操作给影响的,后来经过谷歌查询,原来是因为linux内核升级的原因.仔细的想了一下,自己的确在上次关机的时候给电脑更新过软件.谷歌查询了解决办法,知道了原因,不过没按照网上说的去做.我是把虚拟机卸载(不会删除自己虚拟的系统),然后重新安装,结果就可以正常使用了. 卸载虚拟机VirtualBox(可以输入vir然后按Tab键来补全,查看自己虚拟机具体的软件名) [email protected]:~/Downloa

archlinux virtualbox 出现 Kernel driver not installed (rc=-1908)

错误内容: Kernel driver not installed (rc=-1908) The VirtualBox Linux kernel driver (vboxdrv) is either not loaded or there is a permission problem with /dev/vboxdrv. Please reinstall the kernel module by executing 'pacman -S virtualbox-modules' as root.

Ubuntu 升级VisualBox后无法启动 Kernel driver not installed (rc=-1908)

? ? VisualBox之所以在Linux上比传统的VMware快得多,关键一点就是它和Linux内核的结合比较紧密,这也是开源的优点. 不过Linux内核更新很频繁,每次更新内核后启动VirtualBox都会提示: VirtualBox kernel driver not installed. The vboxdrv kernel module was either not loaded or /dev/vboxdrv was not created for some reason. Re-