树莓派是我们在做一些小项目的时候常会用到的,因为教程丰富同时社区也比较完善,对初学者比较友好,不过在用树莓派来做项目之前,往往还需要一些准备工作,比如系统的烧录,ssh功能的设置等等,本篇博客就对这个需要的流程进行总结
参考资料:
树莓派实验室
设置树莓派wifi的几种方式
树莓派设置静态IP地址
树莓派学习笔记——更换国内源
修改树莓派用户密码
Windows下用串行连接控制树莓派
Raspberry Pi zero_串口登录
树莓派入门操作及VNC显示 cannot currently show the desktop 解决方法
树莓派安装Ubuntu系统的参考资料:
树莓派安装Ubuntu系统
超详细树莓派4B安装Ubuntu Server无屏幕
树莓派系统安装(ubuntu版本)无需屏幕
关于树莓派
对于初学者,我们烧录到树莓派的是树莓派官方的操作系统:Raspberry Pi OS(Raspbian),继承自Debian操作系统,主要分为以下三种:
- Raspberry Pi OS with desktop and recommended software:桌面版(含常用软件)
- Raspberry Pi OS with desktop:桌面版
- Raspberry Pi OS Lite:Lite版(无桌面)
同时操作系统的默认账号和密码是:
- pi
- raspberry
Shell
Shell是运行在终端中的文本互动程序(sudo提供以系统管理员的身份来执行后面的命令)
Shell命令的种类(可以通过type命令了解命令的类型,一个命令是可执行文件,将打印出文件的路径):
- Shell内建函数:保存在Shell内部的脚本
- 可执行文件:保存在Shell之外的脚本
- 别名:alias xx="命令"
Shell是文本解释器程序的统称,树莓派中安装了sh和bash两个Shell解释器
- echo $SHELL:查看当前shell类型
命令的文档信息:
- whatis:用很简短的一句话来介绍命令
- man:返回命令的帮助手册
- info:返回更详细的帮助信息
Shell使用技巧:
- 命令补齐(只有一种可能,Tab键会把命令补齐;不止一种,第一次按Tab键没有反应,第二次按Tab键后输出提示)
- 历史命令:向上箭头/history命令
- 中止与暂停命令:ctrl+c中途停止,ctrl+z暂停
常用命令
Linux通用查询命令:
- lscpu:查询CPU信息
- free:查询内存使用状况
- fdisk:查询SD卡的存储情况
- lsusb:找到所有的USB外设
- uname:打印操作系统的信息(uname -a打印全部信息)
- ifconfig:查看网络接口
- pwd:显示工作目录
树莓派专用查询命令:
vcgencmd:用于与树莓派硬件直接互动
- vcgencmd measure_temp:返回CPU的温度
- vcgencmd measure_volts core:返回核心电压
- raspi-config:配置树莓派命令
文件操作
- ls:显示Shell当前目录下的文件
- cp:复制文件
- rm:删除文件
- mv:移动文件(重命名)
软件的升级与安装:
- sudo apt-get update:获得最新的软件列表
- sudo apt-get upgrade:升级已安装的软件
- sudo apt-get install xxx:安装软件
- sudo apt-get remove/purge(彻底删除,删除配置文件) xxx:删除软件
修改软件源:/etc/apt/sources.list
操作系统和SD卡的烧录
首先需要准备一张SD卡,如果是之前用过的则要对其进行格式化,格式化可以使用软件SDFormatter:
接着我们需要将树莓派使用的操作系统烧录到SD卡中,一般而言我们用的是树莓派官方提供的操作系统Raspbian,可在树莓派官网下载:
树莓派官网
下载完后获得了.img文件,需要烧录到SD卡中,需要用到软件win32diskimager:
不过树莓派官方还给我们提供了一个镜像烧录工具Raspberry Pi Imager,这个工具集成了常用的操作系统以及烧录到SD卡的功能,因此可以直接使用这个软件:
其中可以选择要烧录的操作系统和存储设备
功能的基础配置
在烧录操作系统后,我们就要通过操作系统控制树莓派,因此我们还需要配置网络以及ssh:
ssh是专为远程登录会话和其他网络服务提供安全性的协议,我们用ssh来远程使用树莓派的命令行,通过同一个局域网内的另一台机器即可实现控制树莓派,而2016年以后的Raspbian默认关闭ssh服务,因此需要手动开启
- 在SD卡的根目录创建一个没有任何扩展名的ssh文件即可,在树莓派开机时会自动查找这个ssh文件,找到了就会开启ssh,树莓派以后的每次启动都会自动ssh,无需重复上述操作
- 在SD卡的根目录创建一个没有任何扩展名的ssh文件即可,在树莓派开机时会自动查找这个ssh文件,找到了就会开启ssh,树莓派以后的每次启动都会自动ssh,无需重复上述操作
上面说过ssh需要同一局域网的机器,因此我们还要设置WIFI的无线连接,然后将我们使用的机器也连接到同时WIFI上(树莓派3代和4代可以使用以太网,不过我现在手上只有树莓派zero,等后面有了再更新)
- 在SD卡根目录新建一个名为wpa_supplicant.conf的文件
在文件中写入如下内容:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="WiFi的SSID" psk="WiFi密码" }
- 在SD卡根目录新建一个名为wpa_supplicant.conf的文件
接下来将SD卡插入树莓派的卡槽中上电即可
在使用ssh进行远程登陆之前,我们需要获取树莓派的IP地址,我的手机可以直接看到连接到热点的IP地址:
如果手机上看不到,可以用Advanced IP Scanner找一下:
获取到了IP地址后就可以进行远程登陆了,最常用的软件是putty:
在putty中输入刚刚获取的IP地址:
在登陆时需要输入用户名和密码,树莓派操作系统的默认用户名是pi,默认密码是raspberry,输入后就成功登陆,接下来就可以根据自己的需求做一些开发的工作:
在2023.10.13的一些修改
需要注意的是,在2023.10.23,我按照这篇文章提供的方法重新安装了一下树莓派的官方操作系统,发现树莓派无法连接到WIFI,我查阅了一些
树莓派raspberry pi 4 SSH默认密码无法登录解决办法
一些其他的配置和工具
设置静态IP地址
命令行操作如下:
- sudo nano /etc/dhcpcd.conf
在/etc/dhcpcd.conf文件底部添加如下代码:
interface wlan0 #网卡名 inform 192.168.2.218/24 #树莓派IP static routers=192.168.2.1 #路由器IP static domain_name_servers=192.168.2.1 #DNS,这里也是路由器IP
- sudo reboot重启系统
更改树莓派的密码
命令行操作如下:
- sudo passwd pi #修改 pi 密码
- sudo passwd root #设置 root 密码
树莓派换源
命令行操作如下:
- sudo nano /etc/apt/sources.list
- sudo nano /etc/apt/sources.list.d/raspi.list
- sudo apt-get update进行同步更新
- sudo apt-get upgrade更新升级软件包
串口
如果没有键盘鼠标显示器,又没有网卡(比如树莓派zero),可以通过串口来连接控制树莓派,需要一个usb转ttl模块,同时还需要根据引脚图找到哪一个是串口:
首先要使用sudo raspi-config来使能串口登陆:
然后将usb转ttl模块连接到树莓派上,在此电脑->右键属性->设备管理器中查看COM口,再用putty选择serial,波特率选择115200即可登陆:
下方有一个Saved Sessions可以起一个自己名字保存配置,下次就可以直接登陆
另外,在使用串口登陆时,如果是先插上了ttl模块再给树莓派上电的话,就可以看到树莓派上电输出的信息,然后登陆的界面也和使用ssh登陆没有什么区别;但是如果是先给树莓派上电,然后才插上ttl模块的话,就可能什么都看不到,这时候输入pi(即要登陆的用户名)然后回车即可,而且串口不用重新登陆,退出了再进可以直接输入命令
MobaXterm
MobaXterm软件也可以用于远程控制树莓派,而且可以通过软件直接查看树莓派内部的文件,可以在官网下载,直接选择Free版本的Portable edition即可
MobaXterm下载
下载的压缩包打开后就直接打开了MobaXterm软件,无需安装
选择Session:
选择ssh:
输入IP地址以及用户名和密码即可
这个软件最大的好处就是可以直接查看或操作文件(当然有些需要权限),而缺点就是有时很卡,可以作为putty的替代品使用
VNC Viewer
VNC也可以用于远程操作,而且他可以显示图形界面,因此如果没有屏幕又对命令行不是很熟的话,可以用VNC试试看
首先要开启树莓派的VNC:
- 首先输入sudo raspi-config
- 在Interface Options中开启VNC
然后在VNC Viewer这个软件上面输入树莓派的IP地址:
输入用户名和密码即可
查看树莓派的硬件版本号
- 新版本的Raspbian系统添加了pinout命令,可以查看树莓派的很多信息
- 读取cpuinfo文件:cat /proc/cpuinfo
树莓派安装Ubuntu系统
上面的内容都是在树莓派官方的操作系统下完成的,其实树莓派也可以安装其他的操作系统,比如Ubuntu,在这一部分就记录一下如何在树莓派上安装Ubuntu系统
我使用的树莓派是zero 2w,如下图所示:
Ubuntu操作系统的镜像文件可以由Raspberry Pi Imager软件直接烧录到SD卡上,如下面这篇文章中所讲:
保姆级教程:树莓派4B 安装Ubuntu 22.04 Server操作系统
也可以在Ubuntu官网中获取,在这里我就采用在Ubuntu官网中下载的方法来为树莓派安装镜像,Ubuntu官网中对应树莓派的镜像如下:
Install Ubuntu on a Raspberry Pi
首先需要对这里的不同操作系统类型进行理解(在这里我直接复制了官网对这三种类型的描述,我觉得像这种有英文全文的最好还是直接看英文,比翻译成中文更好理解些):
- Ubuntu Desktop:The full Ubuntu Desktop image contains everything you need to turn a Raspberry Pi into your main PC, from surfing the web and writing documents to developing software. Because of its size, it only works on the Raspberry Pi 4 models with 2GB of RAM or more.
- Ubuntu Server:The Ubuntu Server image is much smaller than the Desktop version, although you can install flavours of the Ubuntu Desktop on top of it. It gives you access to the Ubuntu CLI and by extension, all of the latest open source. Ubuntu Server works on the Raspberry Pi 2, 3 and 4.
- Ubuntu Core:Ubuntu Core is a leaner, containerised operating system built on snaps, our universal packaging format. It supports Secure Boot and Full Disk Encryption for added security as well as OTA updates. Develop your IoT software on your Ubuntu Desktop and deploy it to an Ubuntu Core device with ease, even at scale.
我这里使用的是Ubuntu Server 22.04.3 LTS,首先在官网中下载32-bit版本,可以看到可以采用树莓派zero 2w:
下载的文件是.xz文件,需要先进行解压获得.img文件,然后使用win32diskimager软件把镜像烧录到sd卡上:
烧录完成后,由于这里没有为树莓派提供屏幕或以太网连接,因此需要通过ssh来连接树莓派,在使用ssh之前需要进行一些配置,首先在烧录好的sd卡中找到network-config文件:
其中需要找到如下的内容,删掉#号,并将自己的热点的名称和密码填上:
# wifis:
# wlan0:
# dhcp4: true
# optional: true
# access-points:
# myhomewifi:
# password: "S3kr1t"
以下是改好后的文件,其中"nihao"是我的手机热点名称,"12345678"是我的手机热点密码:
值得注意的是,在Ubuntu的官网有关ssh的内容中,可以发现在Ubuntu系统中默认安装了OpenSSH client(对于SSH服务器和客户端,可以这样理解它们的关系:如果A机器想被B机器远程控制,那么,A机器需要安装SSH服务器,B机器需要安装SSH客户端),如下面的链接和图所示:
Ubuntu官网中的ssh说明
和之前树莓派官方的操作系统不同,Ubuntu的默认用户名为ubuntu,对应的默认密码为ubuntu,在第一次登陆后需要修改密码,我的第一次登陆后的界面如下:
上图中的最后一行就是终端的提示符,可以在后面输入命令:ubuntu@ubuntu:~$
其中@符号前面的ubuntu就是当前的用户名字,@符号后面ubuntu是机器的名字(即主机名),$符号代表当前的用户是普通用户(相应的,#符号表示root用户登录),~符号代表每个非root用户的自己的home目录(如果是root用户则~目录是/root/),即为/home/your_name/,在这个目录中可以为所欲为,但是出了这个目录就只有只读权限
根据上述的不同目录,可以引申出几个常用的cd(change directory)命令形式:
cd /:跳转到根目录
cd或cd ~:切换到用户主目录
cd -:切换到上次访问的目录
cd .:单纯表示当前目录,没有进行任何操作
cd ..:切换到上级目录(cd ../../可以切换到上上级目录)
比如在Ubuntu系统中,可以进入根目录,并使用pwd(print work directory)命令来查看当前的路径以及ls(list directory contents)命令来显示工作目录中的内容,如下图所示:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。