科研记录2.1 移植CSI TOOl

目的:为了在较新版本(Ubuntu 18.04)的Ubuntu系统下进行CSI实验

环境要求:Ubuntu 18.04+内核版本4.15

双系统安装:
https://www.cnblogs.com/masbay/p/11627727.html
辅助参考:https://blog.csdn.net/weixin_44623637/article/details/106723462;

安装结束后内核版本是:
zhutao1@zhutao1-B360M-POWER:~$ uname -r
5.4.0-58-generic

以下为正文内容:

一、降低版本到4.15:

~# uname -a
5.4.0-58-generic #64~18.04.1-Ubuntu SMP Wed Dec 9 17:11:11 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
搜索目前存在的内核版本。使用命令:

apt-cache  search linux|grep linux-image

# sudo apt-get install linux-image-4.15.0-20-generic linux-headers-4.15.0-20-generic //还要安装一个headers文件

wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.15/linux-headers-4.15.0-041500_4.15.0-041500.201802011154_all.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.15/linux-headers-4.15.0-041500-generic_4.15.0-041500.201802011154_amd64.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.15/linux-image-4.15.0-041500-generic_4.15.0-041500.201802011154_amd64.deb

下载完成后使用如下命令安装 Linux Kernel 4.15:

sudo dpkg -i *.deb  

使用如下命令更新 Grub 引导加载程序:

sudo update-grub  

使用命令:reboot
补充:选择ubuntu高级选项(第二行),选择版本进入。选择后面没有带括号的版本进入就行。
del连按进入bios;

sudo gedit /etc/default/grub;

注释:GRUB_HIDDEN_TIMEOUT=0

sudo update-grub

重新更新grub配置。重启。

查看已经安装的内核:

sudo dpkg --get-selections |grep linux

卸载掉最新下载的或者不需要的内核版,系统则会回到剩下的内核版本,卸载命令:

sudo apt purge 内核名 内核名

二、安装CSI TOOL

CSI tool安装参考:
https://blog.csdn.net/u014645508/article/details/81359409;
https://www.codenong.com/cs105268110/
为了在较新版本的Ubuntu系统下进行CSI实验,经过网上寻找,找到CSI TOOL版本的改进版本,也是一个GitHub项目,具体网址如下:
https://github.com/spanev/linux-80211n-csitool;

1、准备

安装所需的包:

$ sudo apt install build-essential linux-headers-$(uname -r) git-core

支持retpoline的编译器(Ubuntu 16.04),较新的内核需要具有retpoline支持的编译器。GCC和G ++ 7.3及更高版本支持该功能。以下示例显示了如何安装GCC / G ++版本8:

$ sudo add-apt-repository ppa:ubuntu-toolchain-r/test
$ sudo apt update
$ sudo apt install gcc-8 g++-8

为了确保该make命令使用正确版本的编译器。您可以使用以下方法:
将系统范围的链接重定向到编译器可执行文件检查当前链接指向的位置。命令:

$ ls -l /usr/bin/gcc /usr/bin/g++

应该产生类似的输出:
lrwxrwxrwx 1 root 5 Mar 27 2018 /usr/bin/g++ -> g+±7
lrwxrwxrwx 1 root 5 Mar 27 2018 /usr/bin/gcc -> gcc-7
当前链接指向版本5。因此,需要将它们重定向到版本8。为此,请删除当前路径:

$ sudo rm /usr/bin/gcc
$ sudo rm /usr/bin/g++

并创建新的:

$ sudo ln -s /usr/bin/gcc-8 /usr/bin/gcc
$ sudo ln -s /usr/bin/g++-8 /usr/bin/g++

2、生成并安装修改后的无线驱动程序
克隆修改后的Linux内核代码

$ git clone https://github.com/spanev/linux-80211n-csitool.git
$ cd linux-80211n-csitool

检出正确的发行版本

$ CSITOOL_KERNEL_TAG=csitool-$(uname -r | cut -d . -f 1-2)
$ git checkout ${CSITOOL_KERNEL_TAG}

将修改的网卡驱动在现在的内核中进行构建

$ make -j `nproc` -C /lib/modules/$(uname -r)/build M=$(pwd)/drivers/net/wireless/intel/iwlwifi modules
$ sudo make -C /lib/modules/$(uname -r)/build M=$(pwd)/drivers/net/wireless/intel/iwlwifi \
> INSTALL_MOD_DIR=updates modules_install

备注:如果在执行上述命令期间您收到类似于以下内容的错误消息

  • SSL error:02001002:system library:fopen:No such file or directory: bss_file.c:175
  • SSL error:2006D080:BIO routines:BIO_new_file:no such file: bss_file.c:178
    sign-file: certs/signing_key.pem: No such file or directory
    别担心。操作系统抱怨,因为驱动程序没有SSL签名。这不会干扰驱动程序的安装。因此,只需忽略消息并继续安装过程即可。
$ sudo depmod	//可检测模块的相依性,供modprobe在安装模块时使用。
$ cd ..	//返回上一层目录

3、安装修改后的固件
获取CSI工具补充材料:

$ git clone https://github.com/dhalperi/linux-80211n-csitool-supplementary.git

重新放置英特尔Wi-Fi Link 5000系列适配器的所有现有固件:

$ for file in /lib/firmware/iwlwifi-5000-*.ucode; do sudo mv $file $file.orig; done

安装修改后的固件:

$ sudo cp linux-80211n-csitool-supplementary/firmware/iwlwifi-5000-2.ucode.sigcomm2010 /lib/firmware/
$ sudo ln -s iwlwifi-5000-2.ucode.sigcomm2010 /lib/firmware/iwlwifi-5000-2.ucode	//这几步没有命令行反应,只是在文件夹操作

使用工具的方法参考之前文章:
1、编译收数文件
切换至netlink目录,准备编译

cd ~/linux-80211n-csitool-supplementary/netlink

执行

make  

这一步是编译生成log_to_file等文件。log_to_file可以实现收数功能。

接下来这步我是不改驱动参数成功的
2、改驱动参数:

sudo gedit /home/zhutao1/linux-80211n-csitool/drivers/net/wireless/intel/iwlwifi/dvm/main.c

使用搜索功能搜索connector_log,将该句右侧置为1,即
priv->connector_log=1;
保存。
修改之后还需要重新install修改过的内核驱动,那么我们执行

cd linux-80211n-csitool
CSITOOL_KERNEL_TAG=csitool-$(uname -r | cut -d . -f 1-2)
git checkout ${CSITOOL_KERNEL_TAG}
make -C /lib/modules/$(uname -r)/build M=$(pwd)/drivers/net/wireless/intel/iwlwifi modules       //uname -r表示输出内核发行号
sudo make -C /lib/modules/$(uname -r)/build M=$(pwd)/drivers/net/wireless/intel/iwlwifi INSTALL_MOD_DIR=updates \modules_install
sudo depmod
cd ..
sudo update-grub

2、不改驱动:

sudo modprobe -r iwlwifi mac80211	//卸载

这一步如果报错 …is in use by … ,说明想要卸载的模块在被其他模块使用。例如
cfg80211 is in use by ath9k 那我们需要使用sudo rmmod 命令先卸载 ath9k。
eg. sudo rmmod iwlwifi

sudo modprobe iwlwifi connector_log=0x1

使用ctrl+alt+T新建另一个终端,并执行指令
ping 192.168.1.1 -i 0.5(0.5为发包间隔,使用sudo权限可以获取更短的发包间隔)
我们的电脑会不停地ping AP,这时就可以测CSI了。
在原终端打开log_to_file收数:

cd /home/zhutao/linux-80211n-csitool-supplementary/netlink
sudo ./log_to_file test.dat
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值