虚拟机重新安装内核版本以及安装dpdk源码

centos虚拟机检查版本

常用命令
1、查看系统正在使用的内核版本
#uname -r
5.11.16-1.el7.elrepo.x86_64
2、查看系统中全部的内核版本
#rpm -qa |grep kernel
rpm -qa |grep kernel
kernel-ml-5.15.13-1.el7.elrepo.x86_64	
kernel-3.10.0-1160.15.2.el7.x86_64
kernel-headers-4.9.241-37.el7.x86_64
kernel-devel-4.9.215-36.el7.x86_64
kernel-3.10.0-1160.15.2.el7.x86_64
kernel-headers-4.9.241-37.el7.x86_64
kernel-devel-4.9.215-36.el7.x86_640
3、删除旧的内核版本
#yum remove kernel-headers-4.9.241-37.el7.x86_64

在这里插入图片描述

centos安装内核rpm包

1、拷贝linux rpm包

1、下载路径 最新的rpm包:
https://elrepo.org/linux/kernel/el7/x86_64/RPMS/

2、官网下载最新的rpm包

wget https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-ml-5.15.13-1.el7.elrepo.x86_64.rpm

3、安装内核:
rpm -ivh kernel-ml-5.15.13-1.el7.elrepo.x86_64.rpm

4、更新kernel-ml-headers

wget http://ftp.osuosl.org/pub/elrepo/kernel/el7/x86_64/RPMS/kernel-ml-headers-5.15.13 -1.el7.elrepo.x86_64.rpm

5、安装headers:

rpm -ivh kernel-ml-headers-5.15.13-1.el7.elrepo.x86_64.rpm

6、更新kernel-ml-devel

wget http://ftp.osuosl.org/pub/elrepo/kernel/el7/x86_64/RPMS/kernel-ml-devel-5.15.13-1.el7.elrepo.x86_64.rpm

7、安装devel:

rpm -ivh kernel-ml-devel-5.15.13-1.el7.elrepo.x86_64.rpm

到此,内核的升级已经完成,其中 kernel-ml-headers 和 kernel-ml-devel 是开发驱动程序等的时候用到的。如果不做开发,则可以不安装着两个包。

一、安装qemu步骤

1、拷贝qemu5.2.0.tar.zxvf

wget https://download.qemu.org/qemu-5.2.0.tar.xz #下载qemu,版本可选

2、解压tar -xvf qemu5.2.0.tar
3、安装插件
root@debian:/home/qemu/qemu-5.2.0#./configure --prefix="/home/lyd/qemu-v5.2.0/qemu_install" --target-list=x86_64-softmmu --enable-kvm --disable-gtk --disable-glusterfs
Using './build' as the directory for build output

ERROR: pkg-config binary 'pkg-config' not found  

注释:没有安装pkg-config

1、root@debian:/home/qemu/qemu-5.2.0# apt-get install pkg-config

2、安装成功后继续直接上述,提示:

ERROR: glib-2.48 gthread-2.0 is required to compile QEMU

安装如下文件:

apt-get install build-essential zlib1g-dev pkg-config libglib2.0-dev binutils-dev libboost-all-dev autoconf libtool libssl-dev

linux解决办法

yum install glib2 glib2-devel

3、继续编译提示

ERROR: Dependency "pixman-1" not found, tried pkgconfig

linux解决办法:

yum install bzip  
yum install pixman-devel

详细方法转载之:https://blog.csdn.net/qq_42035918/article/details/123705610

继续编译出错
提示如下:

ERROR:meson setup failed
apt-cache search pixman
libfcft-dev - font loading and glyph rasterization library -- development files
libfcft-doc - font loading and glyph rasterization library -- documentation
libfcft3 - font loading and glyph rasterization library
libpixman-1-0 - pixel-manipulation library for X and cairo
libpixman-1-dev - pixel-manipulation library for X and cairo (development files)
root@debian:/home/qemu/qemu-5.2.0#
root@debian:/home/qemu/qemu-5.2.0#
root@debian:/home/qemu/qemu-5.2.0# apt-get install libpixman-1-dev
Reading package lists... Done

修改完成后在此编译

./configure --prefix="/home/lyd/qemu-v5.2.0/qemu_install" --target-list=x86_64-softmmu --enable-kvm --disable-gtk --disable-glusterfs 

显示完成:

    xen_pci_passthrough          : disabled
    xkbcommon                    : auto

Found ninja-1.8.2 at /usr/local/bin/ninja

执行make
执行make install

虚拟机中缺少modprobe

ln -s /usr/sbin/modprobe /usr/bin/modprobe
ln -s /usr/sbin/insmod /usr/bin/insmod

二、升级gcc

第一种办法:升级gcc(适应于centos)
1、安装centos-release-scl
yum install centos-release-scl
2、安装 devtoolset
yum install devtoolset-9
3、激活
scl enable devtoolset-9 bash
4、更新完成后检查安装版本:
rpm -qa |grep kernel
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
第二种办法:(适应于无法安装yum等软件包,或第一种不生效)
1、官网查找版本:

http://ftp.gnu.org/gnu/gcc/

2、下载版本,确保ping 8.8.8.8可达
wget http://ftp.gnu.org/gnu/gcc/gcc-10.3.0/gcc-10.3.0.tar.gz
3、解压版本
tar -xvf gcc-10.3.0.tar.gz
4、安装依赖库文件:
cd gcc-10.3.0
./contrib/download_prerequisites
2022-05-31 11:10:18 URL:http://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.1.0.tar.bz2 [2383840/2383840] -> "./gmp-6.1.0.tar.bz2" [1]
2022-05-31 11:10:20 URL:http://gcc.gnu.org/pub/gcc/infrastructure/mpfr-3.1.4.tar.bz2 [1279284/1279284] -> "./mpfr-3.1.4.tar.bz2" [1]
2022-05-31 11:10:23 URL:http://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.0.3.tar.gz [669925/669925] -> "./mpc-1.0.3.tar.gz" [1]
2022-05-31 11:10:25 URL:http://gcc.gnu.org/pub/gcc/infrastructure/isl-0.18.tar.bz2 [1658291/1658291] -> "./isl-0.18.tar.bz2" [1]
gmp-6.1.0.tar.bz2: 成功
mpfr-3.1.4.tar.bz2: 成功
mpc-1.0.3.tar.gz: 成功
isl-0.18.tar.bz2: 成功
All prerequisites downloaded successfully.

5、编译

三、安装dpdk源码

1、下载dpdk源码

http://core.dpdk.org/download/

cd dpdk-stable-19.11.10/
meson build
cd build
ninja
ninja install
"./librte_rawdev_ntb.so.20.0" -> "dpdk/pmds-20.0/librte_rawdev_ntb.so.20.0"
"./librte_rawdev_octeontx2_dma.so" -> "dpdk/pmds-20.0/librte_rawdev_octeontx2_dma.so"
"./librte_rawdev_octeontx2_dma.so.20.0" -> "dpdk/pmds-20.0/librte_rawdev_octeontx2_dma.so.20.0"
"./librte_rawdev_skeleton.so" -> "dpdk/pmds-20.0/librte_rawdev_skeleton.so"
"./librte_rawdev_skeleton.so.20.0" -> "dpdk/pmds-20.0/librte_rawdev_skeleton.so.20.0"

查看到如上显示编译成功

四、错误提示及解决方案

1、编译dpdk失败提示error,需要检查gcc版本,如过太低,需要更换到9.3.1版本
pwd
/lib/modules/5.11.16-1.el7.elrepo.x86_64/build

vim .config查看gcc版本

gcc -v
gcc version 9.3.1 20200408 (Red Hat 9.3.1-2) (GCC)
2、升级gcc再次进行dpdk版本编译

提示没有ninja,安装ninja

1、安装re2c 下载地址:http://re2c.org/index.html
2、https://sourceforge.net/projects/re2c/files/latest/download
解压版本:

tar -xzvf re2c-1.0.3.tar.gz
cd re2c-1.0.3/
Autoreconf -i -W all
./configure
make 
make install
3、安装完成后安装ninja
git clone https://github.com/ninja-build/ninja.git && cd ninja
./configure.py --bootstrap
cp ninja /usr/bin/ 

安装完成后使用ninja --v查看版本是否是最新版本

如果显示如下error。配置失败
没有python文件或者目录
需要检查python3的安装路径

wget https://github.com/ninja-build/ninja/archive/refs/tags/v1.10.2.tar.gz
 
tar -zxf v1.10.2.tar.gz && cd ninja-1.10.2
 
./configure.py --bootstrap

检查python3安装路径并修改configre文件

which python3
我的路径为:/usr/bin/python3

则修改configure.py第一行为如下

#/usr/bin/python3

具体参考:https://blog.csdn.net/hhs_1996/article/details/123057804
如果依然存在问题,编译失败,提示ninja error
修改方案:(提示如下错误原因为未安装ninja或未成功安装)

1.ERROR: Could not detect Ninja v1.8.2 or newer

如果发行系统安装的ninja小于 1.8.2,可以使用下面方法安装
2.

wget https://github.com/ninja-build/ninja/releases/download/v1.8.2/ninja-linux.zip
sudo unzip ninja-linux.zip -d /usr/local/bin/

(执行该步骤如提示没有unzip命令,请安装)

sudo update-alternatives --install /usr/bin/ninja ninja /usr/local/bin/ninja 1 --force
/usr/bin/ninja --version

显示版本ninja-1.8.2
编译dpdk成功编译:

DPDK 20.11.0
  User defined options
    examples: vdpa
Found ninja-1.8.2 at /usr/local/bin/ninja

3、安装中存在内存不足问题,需要修改大叶内存

vi /etc/default/grub

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=1
GRUB_SAVEDEFAULT=true
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=256M rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet intel_iommu=on iommu=pt default_hugepagesz=1G hugepagesz=1G hugepages=4"
GRUB_DISABLE_RECOVERY="true"

   default_hugepagesz=1G hugepagesz=1G hugepages=4
   grub2-mkconfig -o /boot/grub2/grub.cfg

五、启动igb_uio

1、虚拟机加载驱动
modprobe virtio_pci
modprobe virtio_net
modprobe uio
2、查找igb_uio.ko
cd dpdk-stable-19.11.10/

[root@master dpdk-stable-19.11.10]# find / -name igb_uio.ko
cd /root/dpdk-stable-19.11.10/build/kernel/linux/igb_uio/
insmod igb_uio.ko
3、安装igb_uio.ko文件
#insmod igb_uio.ko
[root@master igb_uio]#
4、安装成功后绑定igb
cd dpdk-stable-19.11.10
./usertools/dpdk-devbind.py -b igb_uio 00:04.0
./usertools/dpdk-devbind.py -b igb_uio 00:05.0

六、启动dpdk-l2fwd

1、查找dpdk-l2fwd
/opt/dpdk-vdpa/build/examples/dpdk-l2fwd
cd /opt/dpdk-vdpa/build/examples/
2、./dpdk-l2fwd -c f -n 4 – -q 4 -p 0x3

在这里插入图片描述

注意⚠️如果没有dpdk-l2fwd,需要安装

拷贝dpdk文件,编译

meson build-vdpa -Dexamples=l2fwd

启动dpdk-l2fwd存在so.20.0

遇到问题:
1、
执行ninja,显示错误如下:

build.ninja 5681: COMMAND = make -C /lib/modules/4.19.90-2112.8.0.0131.oe1.x86_64/build 改成 build.ninja 5681: COMMAND = make -C /lib/modules/4.19.90/build
find / -name build.ninja
grep -nR "make -C"

vim build.ninja
:5688行进行修改
2、

librte_bus_pci.so.2: cannot open shared object file: No such file or directory 

错误原因: 系统不知道 librte_bus_pci.so.2 放在哪个路径下面,我们用find找到librte_bus_pci.so.2的路径:

cd / 
find -name librte_bus_pci.so.2 
./home/xwc/dpdk-19.02/build-l2fwd/drivers/librte_bus_pci.so.2 
./usr/local/lib64/dpdk/pmds-19.02/librte_bus_pci.so.2 
./usr/local/lib64/librte_bus_pci.so.2 

然后在 /etc/ld.so.conf 文件中添加 /usr/local/lib64/ 然后运行 /sbin/ldconfig -v 更新配置即可。

七、更新python3.7

如果python3 --version没有版本 就直接先安装默认版本 yum install python3

python3 --version
yum install python3-pip
wget https://www.python.org/ftp/python/3.7.7/Python-3.7.7.tgz
1、解压
tar -xvf Python-3.7.7.tgz
2、编译版本
cd Python-3.7.7
./configure --prefix=/usr/local/python3
If you want a release build with all stable optimizations active (PGO, etc),
please run ./configure --enable-optimizations
./configure --enable-optimizations
make&&make install

八、编译portfwd

meson portfwd -Dexamples=port_fwd
cd portfwd
ninja
ninja install

Ip netns命令 ip netns add pf0 ip netns add pf1

ip link set ens6 netns pf0 ip netns exec pf0 ifconfig ens6 192.168.2.1
ip netns exec pf0 ifconfig ens6 up

ip link set ens4 netns pf1 ip netns exec pf1 ifconfig ens4 192.168.2.2
ip netns exec pf1 ifconfig ens4 up

ip netns exec pf0 ping 192.168.2.2 -c 5

九、编译内核执行make menuconfig错误如下:

[root@localhost linux-5.11.16]# make menuconfig
*
* Unable to find the ncurses package.
* Install ncurses (ncurses-devel or libncurses-dev
* depending on your distribution).
*
* You may also need to install pkg-config to find the
* ncurses installed in a non-default location.
*
make[1]: *** [scripts/kconfig/Makefile:204:
scripts/kconfig/mconf-cfg] 错误 1
make: *** [Makefile:602:menuconfig] 错误 2
1、解决办法如下:
CentOS:
yum install -y ncurses-devel
Ubuntu:
sudo apt-get install ncurses-dev
2、错误如下:
[root@localhost linux-5.11.16]# make menuconfig
  LEX     scripts/kconfig/lexer.lex.c
/bin/sh: flex: 未找到命令
make[1]: *** [scripts/Makefile.host:9:scripts/kconfig/lexer.lex.c] 错误 127
make: *** [Makefile:602:menuconfig] 错误 2

执行yum install flex
在这里插入图片描述

yum install bison

执行make bzImage失败,需要更新软件

yum install elfutils-libelf-devel

没有lspci命令

yum whatprovides */lspci
yum install pciutils

安装ninja

yum install python3
yum install vim-filesystem -y
yum install -y epel-release
yum install python3-pip
pip3 install --upgrade pip
yum install emacs-filesystem -y
yum install vim-filesystem -y
yum install meson

十、安装docker

拷贝docker-compose文件到相关路径

/usr/local/bin/docker-compose

十一、安装编译vdpa

1、安装依赖库

安装meson
yum install meson 提示失败

[root@localhost dpdk-vdpa_v1.4]# yum install meson
上次元数据过期检查:0:14:34 前,执行于 2023年12月20日 星期三 11时49分04秒。
未找到匹配的参数: meson
错误:没有任何匹配: meson
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

重新下载即可

yum install meson

pip3 install build-essential
apt install python3.5 or later
apt install ninja 
apt install python3-pyelftools 
apt lignuma-dev

如果安装完之后,提示找不到工具,则创建软连接到 /usr/local 目录:
sudo ln -s /usr/local/lib/libpcap.so.1 /usr/lib/libpcap.so.1
创建软连接 /usr/local/lib/libpcap.so.1

2、编译
cd dpdk
meson build (或者执行meson build-vdpa -Dexamples=vdpa )
meson build (或者执行meson build-vdpa -Dexamples=l2fwd )

cd build
ninja  编译完成后在/examples下存在dpdk-vdpa*代表编译成功
sudo -s
ninja install
ldconfig
3、编译头文件 agile.h 及对应的源文件:
/root/dpdk-vdpa/drivers/vdpa/agile/base/agile.h

编译:

cd /root/dpdk-vdpa/build
ninja

编译完成后在/root/dpdk-vdpa/build/examples/ 中生成可执行程序:dpdk-vdpa

root@dayu:~/dpdk-vdpa/build/examples# ls
dpdk-vdpa dpdk-vdpa.p vdpa

详细步骤参考https://blog.csdn.net/weixin_40209911/article/details/121052489

安装tmux

sudo apt-get install -y tmux

1、遇见没有meson命令

pip3 install meson

十三、unbuntu升级内核版本

1、使用dpkg命令更新Ubuntu的Linux内核(手动方式)

首先通过 http://kernel.ubuntu.com/~kernel-ppa/mainline/
网站下载最新版本 然后通过命令升级,找到您的加购部分(为xxx构建)

dpkg --install *.deb
重新启动系统以使用新内核。
https://www.8a.hk/index.php/news/content/4341.html

  • 19
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值