きっかけ
ちょっとDPDK関係の仕事から離れている間に、DPDK SDKがバージョンが18から20とか21に上がっていた。現時点で最新のLTSバージョンをインストールしてみたら、バージョン18とは様子が随分変わっていたので、インストール手順のメモ。
注:私はDPDKで遊ぶとき、クラッシュ前提のrootアカウントでやってます。以下の手順もそうなってますので、十分ご注意ください。
まずMeson/Ninjaのインストールから
18ではmakeでビルドしていたが、20/21ではmakeでもcmakeでもなく、Meson/Ninjaに変わっていた。
# yum install python3-pip
# pip3 install meson ninja --user
でmesonとninjaが/root/.local/bin/にインストールされるので.bash_profileに以下の行を入れてPATHを張る。
export PATH=$PATH:/root/.local/bin
これでmesonとninjaが実行できる。
# meson --version
0.57.1
# ninja --version
1.10.0.git.kitware.jobserver-1
DPDK20のソースをダウンロードしてビルド/インストール
LTS(long term support)バージョンを入れないと余計な苦労をするハメになるので、ちゃんとここからLTSバージョンをダウンロードする。
# cd /home
# wget https://fast.dpdk.org/rel/dpdk-20.11.1.tar.xz
# tar xJvf dpdk-20.11.1.tar.xz
# cd dpdk-stable-20.11.1
Meson/Ninjaでビルド/インストールする。
`
cd /home/dpdk-stable-20.11.1
meson build
cd build
ninja
ninja install
` 以上でビルドとインストールは完了。恐ろしく簡単でした。/usr/local/binや /usr/local/includeにSDKの各種ファイルがちゃんとインストールされている。
`
alias db='/usr/local/bin/dpdk-devbind.py'
modprobe vfio-pci
modprobe uio_pci_generic
db -s
Network devices using kernel driver
0000:01:00.0 'I211 Gigabit Network Connection 1539' if=enp1s0 drv=igb unused=vfio-pci,uio_pci_generic 0000:02:00.0 'I211 Gigabit Network Connection 1539' if=enp2s0 drv=igb unused=vfio-pci,uio_pci_generic 0000:03:00.0 'I211 Gigabit Network Connection 1539' if=enp3s0 drv=igb unused=vfio-pci,uio_pci_generic 0000:04:00.0 'I211 Gigabit Network Connection 1539' if=enp4s0 drv=igb unused=vfio-pci,uio_pci_generic (後略) ` 注:dpdk-devbindは、頻繁に使用するので、dbとエリアス登録している。
DPDK対応ドライバuio_pci_genericやvfio-pciも使えそうだ。
次回予告
dpdk-devbindとかDPDK20/21の各種ツールを試してみたい。18とあまり変わらないと思うけど。