云操作系统:DPDK配置踩坑
Weiquan Huang自从用上了Docker之后,VMWare早就不知道丢哪里去了。无论是现在的CSAPP、OS、CSE,还是云操作系统的Lab1,我都是用的Docker容器。可结果这个Lab2他还用不了Docker,属实无奈;不仅如此,配环境就花了我大量的时间,因此打算记录记录。
Why not Docker?
本来Docker用得好好的,结果make
一编译,给我报错了
1 | make -C /lib/modules/5.15.153.1-microsoft-standard-WSL2/build/ M=/root/dpdk-work/dpdk/kernel/linux/igb_uio |
遂查看容器里的/lib/modules/
目录,发现是真没有啊。Docker容器和宿主机共享内核,容器内部没有自己的内核模块,所以我印象中容器里这部分目录里面好像啥也没有,所以就只能乖乖地安装虚拟机了。
虚拟机难绷的经历
用就用吧,其实基本上按照文档PDF给出的进行配置,这里记录一下我都遇到了啥问题
首先是NIC和DPDK的关系,NIC是网卡,在使用DPDK的时候需要用到这玩意,所以要让网卡不去支持正常的网络收发,而去支持DPDK的连接和通信。我这里也集中写了脚本,可供参考。具体的NIC名称可能会有所不同
这是绑定脚本
1 | !/bin/bash |
这是解绑脚本
1 | !/bin/bash |
我当时遇到一个情况,就是在脚本里直接写sudo ... ~/...
,结果按下去就给我识别成root
了,非要去/root
里找文件,后续直接在普通状态跳转到相应目录后再用相对路径去执行
然后基本上Task1,2都可以解决
不过后面出现了个问题,就比如你在NIC已经绑定了DPDK之后,原来的网卡就用不了了,执行ifconfig
只有lo
回环网卡,只能处理自己发向自己的请求;解决办法是给虚拟机新加一个Network Adapter
(网络适配器)即可,无需重启,开箱即用,要连git啥的都很方便;还有一个用途就是,多了一个NIC,就可以用它来建立和VScode的连接
- 先在虚拟机安装
openssh
,好像叫这个吧? - VScode ssh配置,设置一下用户名和IP,虚拟机可连接的IP通过
systemctl
相关指令获取,具体细节可自行搜索
不过说到git,就不得不提一下我们中国程序员的扎实网络基础。虚拟机需要通过宿主机的VPN才可以访问到apt
包的更新和git
,那么首先需要找到宿主机的VMnet8
局域网地址,将其设为虚拟机git
的代理;同时Clash也要设置为“允许局域网连接”,大概这样即可
以及,VMWare支持创建对某个虚拟机的克隆虚拟机,选择link clone亲测可以;最好是把该配的配了,该编译的编译了,再去克隆,不然到时候得编译、配置两回
未完待续,仍在踩坑