用树莓派4b构建深度学习应用(二)软件篇

    科技2023-12-22  93

    前言

    上回把硬件都准备好了,这篇我们来搭建一下树莓派的系统,并安装一些必要的工具软件。

    文章目录

    前言树莓派镜像烧录开启ssh 和 配置Wifi1. 开启ssh2. 配置Wifi 配置树莓派1. 查询树莓派 IP 地址2. ssh 登录3. 配置树莓派 远程连接树莓派1. 使用 VNC 远程桌面2. 修改树莓派为固定 IP 地址3. 使用 PuTTY 访问树莓派4. 使用 pscp 传输文件5. 使用 PSFTP 传输文件6. 使用 WinSCP 传输文件 更新树莓派系统1. 换镜像源2. 更换 pip 源3. 用 VPN 连接官方源4. 更新系统5. 安装中文字库和中文输入法 工具软件1. Linux_Reader2. Teamviewer3. Win32DiskImager 系统备份1. 查看设备名2. dd 命令备份SD卡3. 备份镜像压缩4. SD 卡克隆备份 软件下载下一篇预告

    树莓派镜像烧录

    树莓派上的操作系统选择很多,我们这里以主电脑为Win10系统,官方最新的2020.8.20的版本为例。

    先在官网下载烧录软件 Raspberry Pi Imager,然后下载系统的镜像文件带推荐的软件。

    https://www.raspberrypi.org/downloads/

    安装 Raspberry Pi Imager后,插入MircoSD,在 Operating System --> Use custom 选择刚才下载好的镜像文件,然后在 CHOOSE SD CARD 中选择对应的 SD 卡,最后点击 WRITE 进行烧录。

    开启ssh 和 配置Wifi

    如果没有配置键盘和屏幕,那第一次启动OS前需要先新建两个文件来配置wifi连接和开启ssh。

    1. 开启ssh

    在刚才烧录完成的 MircoSD 中 boot 分区的根目录下,新建一个空白文件,并重命名为ssh,全部小写且无扩展名。

    2. 配置Wifi

    同样在根目录下,新建 wpa_supplicant.conf 文件,内容如下:

    country=CN ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="SSID" psk="PASSWORD" key_mgmt=WPA-PSK priority=1 }

    其中,

    ssid 为 Wifi网络的ssid;

    psk 为连接密码;

    key_mgmt为加密方式:

    WPA-PSK = WPA 预共享密匙 (这需要‘psk’字段) WPA-EAP = WPA 使用 EAP 认证 EEE8021X =IEEE 802.1X 使用EAP 认证并动态生成密匙 NONE = 没有使用 WPA ;可以使用明码密匙或者静态WEP WPA-PSK-SHA256 = 类似 WPA-PSK 但是使用增强型的SHA256-based加密算法 WPA-EAP-SHA256 = 类似 WPA-EAP 但是使用增强型的SHA256-based加密算法 如果没有设置,将会模式设置为 WPA-PSK WPA-EAP

    priority 为优先级,数字越大代表优先级越高;

    根据自己路由配置的情况,修改对应的 ssid , psk 和 key_mgmt 值。

    以上两个文件,开机后 wpa_supplicant.conf 文件会自动转移到 /etc/wpa_supplicant 目录下,ssh文件会转化为开启ssh服务的指令后被删除。所以如果要更改配置,下一次要重新添加这个文件。

    配置树莓派

    现在可以拔出MircoSD卡,插入树莓派,然后正常上电开机了。

    Tip:

    注意观察树莓派上的两个指示灯,红色代表电源,绿色一般代表SD读写。正常情况下,红灯常亮,绿色每隔几秒闪一次,表示网络连接成功;而绿灯有规律的闪烁,表示SD没有插好或者是无效的SD卡。

    1. 查询树莓派 IP 地址

    有显示器的话,可以直接用 ifconfig 来获取 IP 地址;

    若没有显示器的话,那可以用局域网扫描工具 Advanced IP Scanner 来获取对应的信息:

    2. ssh 登录

    有了 IP 地址,那就可以用ssh登录了。输入命令

    ssh pi@192.168.1.62

    然后输入默认密码 raspberry,就能正常登录了。

    3. 配置树莓派

    在登录的ssh连接中,输入命令

    sudo raspi-config

    选择 1 Change User Password,修改当前用户密码;

    选择 5 Interfacing Options --> P1 Camera 启用摄像头;

    选择 5 Interfacing Options --> P2 SSH 启用SSH(已经开启);

    选择 5 Interfacing Options --> P3 VNC 启用VNC;

    选择 7 Advanced Option --> A1 Expand Filesystem 扩展可用空间;

    选择 7 Advanced Option --> A5 Resolution 修改屏幕分辨率。

    远程连接树莓派

    1. 使用 VNC 远程桌面

    安装 VNC-Viewer-6.20.113-Windows,新建连接,填入树莓派的IP地址,输入用户名 pi,密码 raspberry登录。

    Tip:

    VNC 连接后显示 “Cannot currently show the desktop” 的话,重新修改一个屏幕分辨率后重启就行。

    2. 修改树莓派为固定 IP 地址

    每次树莓派上电后,由路由器 DHCP 分配的 IP 地址有时候会变化,这里我们设置固定地址,方便下次连接。

    用 VNC 连接后,就能看见树莓派的桌面了,在屏幕右上角 Wifi 图标上右键,选择 Wireless & Wired Network Settings。

    Configure 项选择 SSID,仅绑定指定的 Wifi 连接,填入对应的网段:

    IPv4 地址:192.168.1.101

    Router:192.168.1.1

    DNS Servers: 192.168.1.1

    3. 使用 PuTTY 访问树莓派

    修改树莓派的 IP 地址后,重启树莓派,就可以用PuTTY 通过 192.168.1.101 来连接了。

    PuTTY 不光有ssh,还自带了 pscp 和 psftp 方便在主电脑和树莓派之间传输文件。

    4. 使用 pscp 传输文件

    把windows系统的文件/文件夹上传到树莓派 # 复制整个目录 pscp -r d:\raspi pi@192.168.1.101:/home/pi # 复制单个文件 pscp d:\raspi\test.txt pi@192.168.1.101:/home/pi 从树莓派上下载文件/文件夹到windows系统 # 复制整个目录 pscp -r pi@192.168.1.101:/home/pi d:\raspi # 复制单个文件 pscp pi@192.168.1.101:/home/pi/test.txt d:\raspi

    详细参数:

    用法: pscp [选项] [用户名@]主机:源 目标 pscp [选项] 源 [其他源...] [用户名@]主机:目标 pscp [选项] -ls [用户名@]主机:指定文件 选项: -V 显示版本信息后退出 -pgpfp 显示 PGP 密钥指纹后退出 -p 保留文件属性 -q 安静模式,不显示状态信息 -r 递归拷贝目录 -v 显示详细信息 -load 会话名 载入保存的会话信息 -P 端口 连接指定的端口 -l 用户名 使用指定的用户名连接 -pw 密码 使用指定的密码登录 -1 -2 强制使用 SSH 协议版本 -4 -6 强制使用 IPv4 或 IPv6 版本 -C 允许压缩 -i 密钥 认证使用的密钥文件 -noagent 禁用 Pageant 认证代理 -agent 启用 Pageant 认证代理 -hostkey aa:bb:cc:... 手动指定主机密钥(可能重复) -batch 禁止所有交互提示 -proxycmd 命令 使用 '命令' 作为本地代理 -unsafe 允许服务端通配符(危险操作) -sftp 强制使用 SFTP 协议 -scp 强制使用 SCP 协议 -sshlog 文件 -sshrawlog 文件 记录协议详细日志到指定文件

    5. 使用 PSFTP 传输文件

    psftp与pscp类似,速度更快些,但没有进度条显示。

    psftp 192.168.1.101 # 输入 pi 和 raspberry # 上传文件 put d:\raspi\test.txt # 下载文件 get /home/pi/test.txt

    常用命令: cd 切换目录。 ls 查看目录文件。 get [fileName]下载文件到当前本地目录 。 get -r [dir] 递归下载远程某个目录下的所有文件到当前本地目录即下载文件夹。 put [fileName] 长传文件到远程当前目录。 put -r [dir] 递归上传本地某个文件夹的所有文件到远程目标目录即上传文件夹。 delete [fileName/dir] 删除某个文件或者文件夹

    6. 使用 WinSCP 传输文件

    上面两种都是命令行方式的,也可以安装一个WinSCP,建立连接以后,用类似文件管理器的方式,更方便的进行文件传输。

    更新树莓派系统

    1. 换镜像源

    由于众所周知的原因,国内无法访问树莓派的更新服务器,所以可以换国内的镜像站作为更新点。

    sudo nano /etc/apt/sources.list

    注释第一行,然后 添加清华源,文件内容如下:

    #deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi # Uncomment line below then 'apt-get update' to enable 'apt-get source' #deb-src http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi

    按 ctrl + o 写入,再按 ctrl + x 退出。

    2. 更换 pip 源

    同样给 pip 更换阿里源和豆瓣源。

    sudo mkdir ~/.pip ls .pip sudo nano pip.conf

    将以下内容写入配置文件:

    [global] timeout = 10 index-url = http://mirrors.aliyun.com/pypi/simple/ extra-index-url= http://pypi.douban.com/simple/ [install] trusted-host= mirrors.aliyun.com pypi.douban.com

    3. 用 VPN 连接官方源

    国内镜像采用异步更新的方式更新,有时候某些第三方库文件还是不能访问,特别是 github 上的 raw 资源,用 VPN 的话会更方便些。这里以我用的expressVPN为例,其他的 VPN 也雷同。

    用WinSCP把安装包上传到树莓派的 Download 目录中;

    进入目录后,安装vpn客户端;

    cd Downloads/ sudo dpkg -i expressVPN_xv_2.6.3.3-1_armhf.deb 激活软件 expressvpn activate 连接 VPN expressvpn connect # 连接VPN expressvpn list # 查看服务器可用列表 expressvpn status # 查看连接状态 expressvpn disconnect # 断开链接

    4. 更新系统

    解决连接问题后,就可以进行系统更新了。

    sudo apt-get update sudo apt-get upgrade pip3 install -U pip

    5. 安装中文字库和中文输入法

    # 安装中文字库 sudo apt-get install fonts-wqy-zenhei # 安装中文输入法fcitx及Google拼音输入法 sudo apt-get install fcitx fcitx-googlepinyin fcitx-module-cloudpinyin fcitx-sunpinyin

    工具软件

    1. Linux_Reader

    在 Windows 下可以直接读取树莓派MircoSD里的文件。

    2. Teamviewer

    VNC需要在同一个局域网中才能远程连接,安装 Teamviewer 可以在任何地方通过 Internet 来访问到树莓派。特别在AIoT的应用中,通过4G网络来访问设备。

    Windows下安装 TeamViewer_Setup.exe 客户端即可;

    树莓派上将安装包 teamviewer-host_15.9.4_armhf.deb 上传到 Downloads 目录下。

    cd Downloads/ sudo dpkg -i teamviewer-host_15.9.4_armhf.deb

    有出错缺失 teamviewer-host 的依赖,修复一下

    sudo apt-get -f install sudo apt-get install gdebi sudo gdebi teamviewer-host_armhf.deb

    接受协议,在桌面的右上角就能看见 teamviewer 的图标了。点击轻松访问,然后登陆账号后,就能远程连接了。

    3. Win32DiskImager

    除了树莓派官网的烧录工具外,也可以使用 Win32DiskImager 来进行镜像写入,小巧方便绿色,无需安装。

    这个软件不光可以进行写入,还能进行镜像导出,这样就便于我们保存多个开发环境,特别在之后配置 OpenCV 和 PyTorch 的过程很繁琐,可以避免每次都重做这些系统和配置。

    系统备份

    Win32DiskImager 备份出的文件大小取决于MircoSD的大小,所以推荐在 Linux系统下用 dd 命令进行备份后,再对镜像进行压缩。

    1. 查看设备名

    用 lsblk 查看MircoSD的盘符,一般为 sdb。

    lsblk

    2. dd 命令备份SD卡

    用 dd 命令复制 SD 卡的数据保存为 img 镜像文件。

    sudo dd if=/dev/sdb of=./rpi_backup.img bs=8M

    3. 备份镜像压缩

    使用 PiShrink 缩小镜像尺寸

    git clone https://github.com/Drewsif/PiShrink.git cd PiShrink chmod +x pishrink.sh sudo mv pishrink.sh /usr/local/bin sudo pishrink.sh -s rpi_backup.img new_rpi_backup.img

    更多参数如下:

    Usage: $0 [-adhrspvzZ] imagefile.img [newimagefile.img] -s Don't expand filesystem when image is booted the first time -v Be verbose -r Use advanced filesystem repair option if the normal one fails -z Compress image after shrinking with gzip -Z Compress image after shrinking with xz -a Compress image in parallel using multiple cores -p Remove logs, apt archives, dhcp leases and ssh hostkeys -d Write debug messages in a debug log file

    Tip:

    若遇到以下错误: pishrink.sh: ERROR occured in line 275: resize2fs failed mount: /tmp/tmp.Sj9Z4EXlzV: wrong fs type, bad option, bad superblock on /dev/loop0, missing codepage or helper program, or other error. mv: 无法获取’/tmp/tmp.Sj9Z4EXlzV/etc/rc.local.bak’ 的文件状态(stat): 没有那个文件或目录 umount: /tmp/tmp.Sj9Z4EXlzV: 未挂载. losetup: /dev/loop0:断开失败: 没有那个设备或地址

    设置环境变量,可修复bug: set var LANG=en_US.UTF-8 could fix it.

    4. SD 卡克隆备份

    用 Win32DiskImager(备份文件大速度快),还是 dd 命令后压缩(时间长文件小),还有一种方式就是直接在树莓派里做 SD 卡克隆。还记得硬件篇里推荐多买几张 MircoSD 卡吧,这里就有用了。

    # 查看磁盘空间和 SD卡挂载信息 df -h

    空白卡以 usb 读卡器方式插入树莓派,然后在主菜单里 --> 附件 --> SD Card Copier,源选择 /dev/mmcblk0,目标盘选择 /dev/sda,点击 Start 开始复制。

    插入另一个树莓派直接可用,插 2 个 usb 读卡器可以相互还原镜像。

    软件下载

    本期相关文件资料,可在公众号后台回复:“rpi02”,获取下载链接。


    下一篇预告

    我们将开始编译OpenCV,PyTorch 安装 Tensorflow 等开发环境, 敬请期待…


    Processed: 0.012, SQL: 8