双系统安装Ubuntu16.04+uhd+gnuradio USRP B210环境配置

环境介绍

Name Version
Ubuntu 16.04.6LTS
uhd 3.15.0.0(UHD-3.15.LTS)
gnuradio 3.7.14.0

一、安装系统

引导盘使用rufus制作(官网官方教程),在阿里云镜像站 - Ubuntu下载所需的版本镜像,使用rufus将镜像烧录到U盘。

安装过程最好在断网环境下进行,安装好关闭自动更新后再连接网络。

在Windows中压缩卷分出120G空间,显示未分配就行,然后插入启动盘,重启进入bios,从U盘uefi引导启动,安装Ubuntu16.04,安装过程中分区如下:

/boot   逻辑分区    Ext4    1024MB     1GB
/       主分区      Ext4    40960MB    40GB
/home   逻辑分区    Ext4    40960MB    40GB
swap    交换空间            16384MB    16GB
/usr    逻辑分区    Ext4    剩余全部    28G左右

以上数值仅供参考,硬盘空间足够可以分配更多空间。
需要注意如果在安装过程中选择了中文,可能会导致ls命令文件名乱码,解决方法参考:解决ubuntu16.04中文乱码问题

二、关闭自动更新

由于我们安装的是旧版本,因此系统安装完成后,首先要做的是关闭系统自动更新。

  1. 在右上角System Settings->Software&Updates->Updates选项卡里,取消所有的√,自动检查更新、提醒我Ubuntu新版本都改为Never。

  2. 打开终端输入以下命令:

systemctl stop apt-daily.service
systemctl stop apt-daily.timer
systemctl stop apt-daily-upgrade.service
systemctl stop apt-daily-upgrade.timer
systemctl disable apt-daily.service
systemctl disable apt-daily.timer
systemctl disable apt-daily-upgrade.service
systemctl disable apt-daily-upgrade.timer
  1. 修改自动更新程序的配置文件,更改以下两个文件
sudo gedit /etc/apt/apt.conf.d/10periodic
sudo gedit /etc/apt/apt.conf.d/20auto-upgrades

/etc/apt/apt.conf.d/10periodic 和 /etc/apt/apt.conf.d/20auto-upgrades,将文件中所有参数’1’改为’0’。

三、安装显卡驱动

参考:Linux安装NVIDIA显卡驱动的正确姿势

  1. 查看当前电脑的显卡型号,下载对应的驱动
lshw -numeric -C display

RTX系列显卡可能显示UNCLAIMED,自己知道型号就好,到NVIDIA的官方驱动网站下载对应显卡的驱动程序,下载后的文件格式为.run。

  1. 删除原有的NVIDIA驱动程序

如果你没有安装过,或者已经卸载,可以忽略,有安装过使用以下命令卸载:

sudo apt-get remove –purge nvidia*
  1. bios禁用secure boot,也就是设置为disable

如果没有禁用secure boot,会导致NVIDIA驱动安装失败,或者不正常。

  1. 禁用nouveau

打开编辑配置文件:

sudo gedit /etc/modprobe.d/blacklist.conf

在最后一行添加:

blacklist nouveau

这一条的含义是禁用noueau第三方驱动,之后也不需要改回来。
由于nouveau是构建在内核中的,所以要执行下面命令生效:

sudo update-initramfs -u

执行完需要重启,重启后查看nouveau是否禁用成功

lsmod | grep nouveau  # 没输出代表禁用生效
  1. 停止可视化桌面

为了安装新的Nvidia驱动程序,我们需要停止当前的显示服务器。最简单的方法是使用telinit命令更改为运行级别3。执行以下linux命令后,显示服务器将停止,因此请确保在继续之前保存所有当前工作(如果有):

sudo telinit 3

进入到无法输入的界面的话按Alt+F1,然后输入用户名和密码登录即可继续以下步骤

  1. 安装驱动

进入.run文件所在目录

cd ~/Downloads	#此处根据自己的目录修改

给驱动文件增加可执行权限:

sudo chmod a+x NVIDIA-Linux-x86_64-390.48.run

然后执行安装:

sudo sh ./NVIDIA-Linux-x86_64-390.48.run --no-opengl-files

安装完成后重启即可。–no-opengl-files 参数必须加否则会循环登录,也就是loop login。

四、换国内源

  1. sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak备份原来的sources.list文件

  2. sudo gedit /etc/apt/sources.list 修改sources.list文件

  3. 添加阿里或中科大镜像源

    需要注意的是,网上的源地址带bionic的是18.04版本的源,xenial才是16.04版本的,把bionic全部改为xenial即可,这里弄错可能会导致某些包安装出错以及upgrade的时候系统升级。参考:Ubuntu - List of Release

    中科大镜像源:

    deb https://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
    deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
    deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
    deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
    deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
    deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
    deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
    deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
    deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
    deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
    

    阿里镜像源:

    deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
    

    选择其中一个就行,将上面的镜像源复制并覆盖sources.list里的所有文本,然后保存退出,使用sudo apt-get update更新。

    另一种在图形界面更换软件源的方法:Ubuntu 更换软件源

五、安装uhd

参考:Ubuntu 16.04 源码编译安装 uhd & gnuradio

1.cmake安装

手动安装高版本的CMake:

sudo apt-get install libssl-dev
cd ~/Downloads #随便哪个目录
git clone https://github.com/Kitware/CMake.git
cd CMake 
mkdir build && cd build
../bootstrap && make -j$(nproc --all)&& make test -j$(nproc --all)&& sudo make install

make -j$(nproc --all)后面参数的意思是使用所有线程进行编译,可以用nproc命令查看cpu的总线程数,使用所有线程进行make可能造成卡死,保险起见可以设置成最大值-1。知道了线程数可以将$(nproc --all)直接替换成数字,例如对于6核12线程的cpu,make -j$(nproc --all)等价于make -j12
如果不需要高版本的CMake,直接运行以下命令即可:

sudo apt-get install cmake

2.安装依赖

sudo apt-get install aptitude
sudo apt-get install libboost-all-dev libusb-1.0-0-dev build-essential doxygen python3-mako python3-docutils  python3-numpy python3-dev

3.编译

cd ~/Downloads
git clone https://github.com/EttusResearch/uhd.git
cd uhd
git branch -a # or `git tag -l`
# Example: For UHD-3.15.LTS
git checkout UHD-3.15.LTS
cd host && mkdir build
cd build
cmake ../
#确保你没有usrp设备连接在电脑上
make -j$(nproc --all)
make test -j$(nproc --all)
sudo make install
sudo ldconfig

添加动态链接库搜索路径, 在$HOME/.bashrc最后添加
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

4.测试安装结果

sudo uhd_find_devices
# 下载 UHD-FPGA Images
sudo uhd_images_downloader 

下载后的文件存在与目录/usr/local/share/uhd/images/中,其他电脑有需要可以将这个目录复制过去避免重复下载。

5.配置USB

这一步的目的是让普通用户可以获取usb设备,主要用于靠usb连接到主机的usrp设备,这些命令运行后没有输出

cd $HOME/Downloads/uhd/host/utils
sudo cp uhd-usrp.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo udevadm trigger

六、安装gnuradio

1.安装依赖项

#有些依赖上面uhd已经装过了
sudo apt-get install python-zmq
sudo apt-get install python3-setuptools
sudo apt-get install swig2.0 libfftw3-dev libcppunit-dev libgsl-dev alsa-base libasound2 libasound2-dev
#开启 gnuradio companion
sudo apt-get install python-numpy python-cheetah python-lxml python-gtk2
#开启 WX GUI
sudo apt-get install python-wxgtk3.0 python-numpy
#开启 QT GUI
sudo apt-get install python-qt4 python-qwt5-qt4 libqt4-opengl-dev libqwt5-qt4-dev libfontconfig1-dev libxrender-dev libxi-dev
#开启 video sdl
sudo apt-get install libsdl1.2-dev
#开启 Polyphase Filter Bank examples
sudo apt-get install python-scipy python-matplotlib python-tk

sudo apt-get install sdcc
sudo apt-get install guile-2.0-*
sudo apt-get install ccache
sudo apt-get install python-sip python-sip-dev
sudo apt-get install python-sphinx
sudo apt-get install libcomedi-dev libzmq-dev  ##18.04需要安装libzmq3-dev

2.编译

cd ~/Downloads
git clone https://github.com/gnuradio/gnuradio.git
cd gnuradio
git checkout maint-3.7
git submodule update --init --recursive
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ../
#运行报错:Python checking for mako >= 0.4.2 - not found,
#解决方法:`sudo apt-get install python-mako`

所有组件全部enable,遇到没有enable的检查依赖才可以进行下面的步骤

make -j$(nproc --all)
make test -j$(nproc --all)
sudo make install
sudo ldconfig

3.测试安装结果

gnuradio-config-info --version
gnuradio-config-info --prefix
gnuradio-config-info --enabled-components

4.运行gnuradio

gnuradio-companion

七、出错问题及解决方法汇总

  1. 编译CMake时报错:Could not find OpenSSL

    解决:安装依赖项sudo apt-get install libssl-dev

  2. CMake在make test时报错:RunCMake.CMake(failed)
    解决:忽略,直接执行下一步sudo make install,实际使用中暂时没有发现影响。

  3. 安装libboost-all-dev包时报错:libboost-all-dev包未满足依赖条件

    解决:安装依赖项sudo apt-get install aptitude

    参考:安装 libboost-all-dev 包报错未满足依赖关系

  4. import error:setuptools

    解决:安装依赖项sudo apt-get install python3-setuptools

  5. gnuradio在make test时报错:
    343 - qa_zeromq_pub (Failed)
    344 - qa_zeromq_pubsub (Failed)
    345 - qa_zeromq_pushpull (Failed)
    346 - qa_zeromq_reqrep (Failed)
    347 - qa_zeromq_sub (Failed)
    解决:安装依赖项sudo apt-get install python-zmq

猜你喜欢

转载自blog.csdn.net/L_786795853/article/details/107192916