树莓派3b安装Ubuntu Server 18.04 + UHD + GNU Radio

一、连接网络

由于学校实验室环境没有路由器,通过网线直连笔记本电脑(Win10)共享笔记本的网络,笔记本通过WiFi连接网络。

打开笔记本电脑上的网络和共享中心,点击连接的WLAN。

在WLAN状态页,点击属性,在WLAN属性页选择共享选项卡,在允许其他网络用户通过此计算机的Internet连接来连接前打勾,确定后,树莓派上测试一下ping baidu.com看树莓派能否上网。

然后打开树莓派的SSH连接:

sudo nano /etc/ssh/sshd_config

找到PermitRootLogin without-password 修改为PermitRootLogin yes,Ctrl+o保存,回车确认文件名,Ctrl+x退出。然后使用以下命令重启SSH服务:

service ssh restart

SSH重启后就可以通过Windows上的SSH工具远程连接树莓派了,这里我使用PuTTY(点此跳转百度云下载)。

打开PuTTY,输入树莓派的IP地址即可登录,树莓派的IP地址可以在树莓派上使用命令ifconfig查看。

二、换源

先备份原来的sources.list文件:

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

修改sources.list文件:

sudo nano /etc/apt/sources.list

添加清华源:

deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports bionic main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports bionic-updates main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports bionic universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports bionic-updates universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports bionic multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports bionic-updates multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports bionic-backports main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports bionic-security main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports bionic-security universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports bionic-security multiverse

需要注意的是,该源地址与桌面版的Ubuntu使用的源地址有所区别,不能直接照搬桌面版的源地址。以及bionic为Ubuntu18.04的Codename,如果是其他的版本需要修改所有源地址中的Codename。

查看Codename的方法:

1.lsb_release -a

2.Ubuntu 各版本代号简介

三、设置时区

sudo cp /etc/localtime /etc/localtime.bak
sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

使用date命令查看当前时间,经不严谨观察,这个上海时间落后标准的北京时间33秒左右。

四、安装桌面

sudo apt-get update
sudo apt install ubuntu-gnome-desktop
#sudo apt install ubuntu-gnome-desktop  #mate桌面

启动gnome桌面并添加开机自启动:

sudo systemctl start gdm
sudo systemctl enable gdm

五、远程连接树莓派

远程连接的方法主要有SSH、VNC、Xrdp,以上方法都需要两台设备处于局域网中,即可以相互ping通各自的IP地址。

1.SSH

树莓派打开SSH的方法参见步骤1,桌面端Windows直接下载SSH工具(例如:PuTTY、FinahShell)即可,下面介绍桌面端Ubuntu打开SSH的方法:

sudo apt-get install ssh
sudo apt install openssh-server
sudo apt install sshguard

检查PC端和树莓派Ubuntu Mate上SSH是否启用:

ps -e | grep ssh

进程ssh-agent是客户端,sshd为服务器端,如果结果中有sshd的进程说明openssh-server已经启动,如果没有则需运行命令启动。再用以下命令查看sshd是否正常运行,没有error说明运行正常:

systemctl status ssh

连接树莓派,其中ubuntu为连接目标的用户名,@后面为IP地址:

ssh [email protected]

中途需要确认对方的密钥信息,然后输入对方的密码,出现Welcome to XXXX 表明连接成功,连接成功后当前终端的用户名会变更成连接目标的用户名。

设置ssh为系统服务:

sudo systemctl enable ssh
sudo systemctl start ssh

在SSH已连接的情况下,可以使用scp(secure copy)命令远程拷贝文件。

从本地复制到远程:

scp local_file remote_username@remote_ip:remote_folder  #传输文件
scp -r local_folder remote_username@remote_ip:remote_folder  #传输文件夹需要添加参数-r

从远程复制到本地只需调换后两个参数的顺序即可。更多可选参数及详细介绍可参考:Linux scp命令

举例:将本地(用户名:maplesky)的/home/maplesky/Downloads/image文件夹(含123.txt)传输到远程的树莓派(用户名:ubuntu)的/home/Downloads下,

将远程的树莓派(用户名:ubuntu)的/home/Downloads/build文件夹(含456.txt)传输到本地(用户名:maplesky)的/home/maplesky/Downloads/下:

scp -r /home/maplesky/Downloads/image [email protected]:/home/Downloads
scp -r [email protected]:/home/Downloads/build /home/maplesky/Downloads/

常见错误:

1.类似scp: /home/Downloads/build: not a regular file的错误

一般在传输文件夹的时候出现,原因是没有添加参数-r

2.类似scp: /home/Downloads/image: Permission denied的错误

请检查本地文件夹和目标文件夹两者是否都具有写入权限,没有的话使用以下命令获取对应文件夹的777权限:

sudo chmod 777 /home/Downloads/image

2.VNC

sudo apt-get install vnc4server  #安装vnc
vncserver :1  #开启vnc1
#vncserver -kill :1  #关闭vnc1

连接的时候需要连接的地址为ip:1,例如192.168.2.102:1

修改~/.vnc/xstartup文件:

...
x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#x-window-manager &

mate-session &

3.Xrdp

Xrdp是Windows自带的远程桌面,在Win 10上不用安装即可使用,在Ubuntu上使用以下命令安装:

sudo apt-get install xrdp

六、固定IP

如果没有固定IP每次树莓派重启后自动分配的IP都会不同,每次都需要查看IP再更改SSH连接的IP。

首先使用ifconfig查看树莓派的IP、子网掩码等信息:

su    #获取root权限
nano /etc/network/interface    #修改文件

添加以下内容:

auto eth0
iface eth0 inet static
address 192.168.0.241
netmask 255.255.255.0
gateway 192.168.0.1

Ctrl+O保存,回车确认文件名,Ctrl+X退出。

配置完成后需要重启相应网卡,使用ifdown eth0关闭网卡,使用ifup eth0启动网卡,完成网卡重启,通过ifconfig 命令查看IP地址,此时发现IP地址已经是设定的IP地址。

七、分配交换空间

交换空间即虚拟内存,可以将物理内存中暂时不用的部分放到虚拟内存提高运行程序的效率或者在物理内存不够用时把硬盘的部分空间作为内存使用。由于硬盘的读写速度远低于内存,因此虽然物理内存没用完时虚拟内存可以提升运行效率,但是物理内存用完后在虚拟内存上运行的程序会很慢。

物理内存≤2GB时,建议分配2倍的交换空间;

物理内存在2GB~8GB直接时,建议分配与物理内存等大的交换空间;

物理内存在8GB以上时,至少分配4GB交换空间。

以上建议是在未开启休眠功能情况下的建议值,开启休眠功能需要在上面的基础上增加与物理内存等大的交换空间。

#count的大小就是增加的swap空间的大小,64M是块大小,所以空间大小是bs*count=2048MB
sudo dd if=/dev/zero of=/swapfile bs=64M count=32
#把刚才空间格式化成swap格式
sudo mkswap /swapfile
#使用刚才创建的swap空间
sudo swapon /swapfile

不需要或者需要更大的交换空间时,使用以下命令关闭并删除:

sudo swapoff /swapfile
sudo rm /swapfile

第一次分配了1GB交换空间,make进行到51%的时候还是报内存不足,就分配了2GB,后面没有再出同样的错误。

以上方法设置的交换空间重启后就会没有,想要长期使用需要运行以下命令:

sudo cp /etc/fstab /etc/fstab.bak   #备份
sudo nano /etc/fstab    #打开fstab文件

在最后添加以下内容:

/swapfile  none  swap  defaults  0  0

重启后使用free -g查看是否成功。

这里推荐一个SSH工具:FinalShell,可以在连接的同时监控目标的CPU、内存使用率等信息。

八、安装UHD

1.安装依赖项

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 python3-setuptools

2.编译

cd /home
mkdir Downloads && 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 -j3
make test -j3    #需要100% tests passed才可以
sudo make install
sudo ldconfig

3.测试安装结果

sudo uhd_find_devices
# 下载 UHD-FPGA Images
sudo uhd_images_downloader 

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

4.配置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

九、安装GNU Radio

1.安装依赖项

#有些依赖上面uhd已经装过了
sudo apt-get install python-zmq
sudo apt-get install swig3.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 guile-2.0-* ccache python-sip python-sip-dev python-sphinx libcomedi-dev libzmq3-dev

2.编译

cd /home/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 -j3
make test -j3
sudo make install
sudo ldconfig

3.测试安装结果

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

4.运行gnuradio

gnuradio-companion

十、出错及解决方法汇总

在安装uhd时,cmake时没问题:

make时报错:

使用FinalShell监控树莓派编译过程,发现是内存不足,分配交换空间来解决,参考上面步骤六。

猜你喜欢

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