树莓派折腾指南
1.树莓派简介
树莓派(raspberryPi),最早是由英国慈善基金会开发用于学习计算机编程教育而设计的,基于arm架构,系统为linux,外观小却五脏俱全各类接口丰富
- 树莓派官网 www.raspberrypi.org
可以干什么
- 作为低功耗Linux服务器搭建各种服务(只有5w功率)
- 刷入游戏机系统,变为复古游戏盒子(lakka等系统)
- 搭建gitea私服
- 搭建OMV家庭nas系统(需要4b或400树莓派,有千兆网口和usb3.0接口)
- 搭建HA开源智能家居管理系统(可以整合第三方智能家居统一管理)
- 学习树莓派GPIO进行硬件开发
- 刷入openWrt做软路由
- 刷入影音系统做电视机顶盒
- 使用树莓派进行各种嵌入式开发,学习opencv,diy机器人等等等等
距今为止产品线已经非常丰富
- 用于计算的cm模块系列 (相当于砍掉了所有接口,做成类似内存条的样子方便集成开发)
- 用于单片机的pico
- 更小尺寸的zero系列
- 键盘外观的树莓派400
- 树莓派B型(A型为B型的廉价版,阉割了部分接口)
2.树莓派基础使用
2.1 第一次上手&开机
首先,肯定是要有一块树莓派的,树莓派近两年由于疫情导致产量下降,国内价格疯涨.在没有明确学习目标的情况下还是先不要购买,如果想学习的话,也是建议去某鱼淘一块二手,这样性价比最高,至于二手如何测试我后面会讲到
2.1.1 需要准备的物品
- 树莓派B型任意型号 (A是B的廉价版,同型号B型接口更为丰富)
- tf卡 读卡器 电源线
- 显示器&hdmi数据线 可选(无网络有屏幕情况)
- 有wifi环境或网线直连 可选(有网络无屏幕情况)
2.1.2 烧录具体步骤
烧录SD卡:
- 先下载镜像烧录软件 win版本 ,macOS版本
- 下载对应镜像 镜像下载地址 ,推荐下载种子然后用迅雷下载,这样速度比较快.版本分了debian11和10,64位32位 有桌面版,无桌面版,刚上手看着眼花缭乱,这里推荐第一次使用直接下载 debain11 32位桌面版和带推荐软件的镜像以便于学习使用
使用烧录器进行烧录
- 电脑插上读卡器,打开烧录软件,选择我们需要写入的操作系统
- 滑到最下面选择使用自定义镜像,然后选择我们刚刚下载好的镜像即可
- 存储卡选择插入的tf卡,一定要看清楚再选,血的教训
- 点开齿轮图标设置wifi配置,设备名称,普通用户,ssh权限等
- 点击烧录,输入电脑用户密码等待烧录完成,至此烧录就完成了,tf卡插入树莓派,然后接通电源
2.1.3 有屏幕连接
树莓派准备好后,直接接入显示器和外设就可以正常使用了
2.1.4 无屏幕连接
- 查看路由器管理页面新接入设备的ip地址,通过SSH进行远程连接,win系统下载xshell,苹果端可以用termius,这里使用termius演示
- 选择页面服务器,然后点击新增服务器,输入刚刚查看的ip地址和自己设置的用户名密码保存连接即可
- 通过SSH打开vnc远程桌面
输入 sudo raspi-config
进入设置,选择Interfacing Options VNC YES 即可
- 用VNC viewer连接,新建连接再输入ip连接,然后输入用户名密码即可成功登陆桌面
2.2基础设置
通过前面的步骤我们已经可以成功的进入的系统桌面了,但是还需要一些设置才更好的使用,接下来的操作都将在ssh的中进行,也就是桌面版的终端里设置
2.2.1修改本地化语言
用桌面版肯定中文比英文更加直观,所以这里先修改系统语言,(早期的树莓派系统中甚至没有内置中文字体,需要先自己安装一个开源的中文字体后再设置,不然调中文全是框框)
打开树莓派系统配置工具
sudo raspi-config
- 选择本地化设置(Localisation Options)
- 选择区域设置(Locale)
取消en_GB UTF-8,选择zh_CN UTF-8 (空格选择或取消 回车确认)
设置完后重启生效
sudo reboot
2.2.2 修改软件源
因为树莓派是国外开发的,所以默认的软件源也是国外地址,在国内下载起来非常缓慢,因此我们要换成对应的国内镜像网址,这里以清华源举例,其他镜像网址可自行搜索(软件源就是让树莓派选择从哪下载更新软件的地址)
32位debian11源 (前面烧录的镜像选择这个)
- 编辑 sources.list 文件 (nano是linux的一个文本编辑器 crtl+o保存 回车确认写入 ctrl+x退出)
sudo nano /etc/apt/sources.list
- 删除源文件所有内容,用以下内容取代
deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ bullseye main non-free contrib rpi # deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ bullseye main non-free contrib rpi #默认注释了源码以加快下载速度 # armv7l 用户如果需要开启 multi-arch 使用 arm64 软件源,可以去加上下面的地址 deb [arch=arm64] http://mirrors.tuna.tsinghua.edu.cn/raspbian/multiarch/ bullseye main
- 编辑 raspi.list 文件
sudo nano /etc/apt/sources.list.d/raspi.list
- 删除源文件所有内容,用以下内容取代
deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ bullseye main
64位debian11源
- 编辑 sources.list 文件
sudo nano /etc/apt/sources.list
- 删除源文件所有内容,用以下内容取代
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free # deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free # deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free # deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free # deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free
- 编辑 raspi.list 文件
sudo nano /etc/apt/sources.list.d/raspi.list
- 删除源文件所有内容,用以下内容取代
deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ bullseye main
32位debian10源
- 编辑 sources.list 文件
sudo nano /etc/apt/sources.list
- 删除源文件所有内容,用以下内容取代
deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib rpi # deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib rpi # armv7l 用户如果需要开启 multi-arch 使用 arm64 软件源,可以去加上下面的地址 deb [arch=arm64] http://mirrors.tuna.tsinghua.edu.cn/raspbian/multiarch/ buster main
- 编辑 raspi.list 文件
sudo nano /etc/apt/sources.list.d/raspi.list
- 删除源文件所有内容,用以下内容取代
deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main
64位debian10源
- 编辑 sources.list 文件
sudo nano /etc/apt/sources.list
- 删除源文件所有内容,用以下内容取代
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free # deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main contrib non-free # deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main contrib non-free deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free # deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free deb https://mirrors.tuna.tsinghua.edu.cn/debian-security buster/updates main contrib non-free # deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security buster/updates main contrib non-free
- 编辑 raspi.list 文件
sudo nano /etc/apt/sources.list.d/raspi.list
- 删除源文件所有内容,用以下内容取代
deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main
2.2.3更新软件
默认root用户是没有密码的,如果你不想每次指令都要输入sudo,可以直接切换为root用户进行操作
sudo su
上一步已经换好源了,接下来我们更新系统
apt-get update apt-get upgrade -y reboot
2.2.4设置静态IP
如果你使用显示器进行学习树莓派可以不用设置静态IP,但如果是通过ssh或者VNC进行连接树莓派使用,是需要设置静态IP的,不然下次重启以后ip地址就可能变为其他的,原IP就再也连接不上了,需要重新查看设备IP,并修改
修改配置文件
sudo nano /etc/dhcpcd.conf
输入以下内容
interface wlan0 #如果是宽带设置eth0 static ip_address=192.168.31.248/24 #修改成自己需要的IP static routers=192.168.31.1 #网关地址 static domain_name_servers=114.114.114.114 8.8.8.8 #dns
- sudo reboot 重启后生效
2.2.5 自定义快捷指令
每个登陆用户都有一份指令配置文件,这里我们用普通用户来示范,修改自定义指令可以让操作更佳快捷
修改bashrc文件
nano ~/.bashrc
alias ll='ls -l' alias la='ls -A' alias lla='ls -la' alias l='ls -CF' #alias 简写指令 ="全指令内容"
2.2.6 设置root用户密码
默认root无密码,可以设置root账户密码以增加安全性
sudo su
sudo passwd root //输入两遍密码即可
2.2.7 修改设备名称
修改 sudo nano /etc/hosts
和 sudo nano /etc/hostname
中的设备名称重启即可生效
2.2.8 修改wifi配置
使用显示器的情况下直接在桌面切换wifi即可,无桌面环境需要通过命令行才能修改,注意不能在使用静态IP的情况下修改wifi,要先删除静态IP的相关配置,否则wifi不在同一网段会造成无法联网
ssh操作
- 搜索wifi
iwlist scan
- 修改wifi配置
nano /etc/wpa_supplicant/wpa_supplicant.conf
- 改为需要的wifi名和密码,保存文件后几秒钟应该就会自动连接到该wifi
network={ ssid="wifi名称" psk="wifi密码" }
- 查看是否连接成功
ifconfig wlan0
- 搜索wifi
tf卡重置wifi
取消tf卡插入电脑 新建wpa_supplicant.conf文件编辑保存以下内容,并放入根目录
country=CN ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="wifi名" psk="密码" key_mgmt=WPA-PSK priority=1 }
2.3 树莓派(debian Linux)常用指令
2.3.1 系统操作类
sudo
管理员权限su 用户
切换到指定用户halt
关机reboot
重启shutdown
-r 关机重启 -h 关机不重启 -now立刻关机free -m
查看内存df -h
查看硬盘容量lsblk
列出硬盘ifconfig
查看网络clear
清屏uname -a
查看内核信息getconf LONG_BIT
查看操作系统位数cat /etc/os-release
查看系统版本lscpu
显示cpu架构信息pinout
查看树莓派参数,老版本镜像没有这个指令dmesg
查看所有硬件详细信息lsb_release -a
查看linux系统top
查看进程信息lsof -i:端口号
查看端口占用ps -ef|grep 关键字
查询进程ping 地址
测试网络连接vcgencmd measure_temp
查看树莓派cpu温度mkdir
新建文件夹chmod 777
授予最高权限sudo systemctl
start 软件名
启动stop 软件名
关闭status 软件名
查看状态enable 软件名
设置软件开机启动list-unit-files
查看开机启动项
service --status-all || grep running
查看正在运行的服务apt-get
可以直接简写 aptupdate
获取更新列表upgrade -y
更新并确认install 软件名
安装软件remove 软件名
卸载软件但不删除配置purge 软件名
卸载软件并且删除相关配置
startx
进入图形界面 ctrl+alt+f1 进入命令行tail -f
看持续输出的日志less
看日志不会宕机ln -s
软连接指定可执行命令.注意使用绝对路径
例如有一个脚本a.sh 他的绝对路径执行方式为 /A/a.sh,但是不想这样执行 想用/B/b.sh 方式执行,可以执行 ln -s /A/a.sh /B/b.sh,ll /B/b.sh命令时会显示出软连接的状态带 → 标识 左侧为软连接名称 右侧为实际执行脚本,删除软连接 rm 软连接 注意他是个软连接后面不要加/
2.3.2 解压缩操作
压缩
打包压缩tar -cvf etc.tar /app/etc #打包 tar -zcvf pack.tar.gz pack/ #打包压缩为一个.gz格式的压缩包 tar -jcvf pack.tar.bz2 pack/ #打包压缩为一个.bz2格式的压缩包 tar -Jcvf pack.tar.xz pack/ #打包压缩为一个.xz格式的压缩包
解压
tar -zxvf pack.tar.gz /pack #解包解压.gz格式的压缩包到pack文件夹 tar -jxvf pack.tar.bz2 /pack #解包解压.bz2格式的压缩包到pack文件夹 tar -Jxvf pack.tar.xz /pack #解包解压.xz格式的压缩包到pack文件夹 unzip #解压zip
2.3.3 接口请求类指令
get请求
- 使用curl命令:
curl “http://www.baidu.com” 如果这里的URL指向的是一个文件或者一幅图都可以直接下载到本地
curl -i “http://www.baidu.com” 显示全部信息
curl -l “http://www.baidu.com” 只显示头部信息
curl -v “http://www.baidu.com” 显示get请求全过程解析
- 使用wget命令:
wget “http://www.baidu.com”也可以
post请求
- 使用curl命令(通过-d参数,把访问参数放在里面):
curl -d “param1=value1¶m2=value2” “http://www.baidu.com”
- 使用wget命令:(--post-data参数来实现)
wget --post-data ‘user=foo&password=bar’ http://www.baidu.com
2.3.4 jar包运行指令
- java -jar xxx.jar 最常用的启动jar包命令,特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出
- java -jar xxx.jar & &代表在后台运行 ,
ctrl+c
后程序也会继续运行 - nohup java -jar xxx.jar & nohup 即 no hang up 不挂断 ,关闭SSH客户端连接,程序不会中止运行
缺省情况下该作业的所有输出被重定向到nohup.out的文件中
- nohup java -jar xxx.jar >aaa.log & 将commandd 输出重定向到out.flie文件,即输出内容不打印到屏幕上,而是输出到out.file文件中
nohup java -jar xxx.jar >> xxx.log 2>&1 &
nohup java -jar /home/java_jar/PhotoBed-0.0.1-SNAPSHOT.jar >> /home/logs/photo_bed.log 2>&1 &
- nohup java -jar spring-boot-demo.jar > /dev/null 2>&1 & 不输出日志
2.4 常用软件安装
2.4.1 安装JDK
jdk为java的开发运行环境,装了jdk便可以运行各种jar包
- 确保是最新系统,如果不是最好先更新一遍系统
sudo apt install default-jdk -y
默认版本为JDK11- 安装完后
java -version
检查版本信息 安装jdk8版本 (这里使用南天大佬博客上的压缩包)
sudo su #切换到root用户 #根据自己系统选择arm32或者arm64 #arm32 wget https://linuxer.top/usr/uploads/2020/07/jdk-8u261-linux-arm32-vfp-hflt.tar.gz tar -zxvf jdk-8u261-linux-arm32-vfp-hflt.tar.gz -C /usr/local/ #arm64 wget https://linuxer.top/usr/uploads/2020/07/jdk-8u261-linux-arm64-vfp-hflt.tar.gz tar -zxvf jdk-8u261-linux-arm64-vfp-hflt.tar.gz -C /usr/local/ #创建软连接,方便升级 ln -sf /usr/local/jdk1.8.0_261/ /usr/local/jdk1.8
增加环境变量,编辑文件nano /etc/profile
,在最后增加以下内容并保存:
export JAVA_HOME=/usr/local/jdk1.8
export PATH=$JAVA_HOME/bin:$PATH
使环境变量生效:
source /etc/profile
安装完后 java -version
检查版本信息
2.4.2 安装VIM
vim是vi的升级版,是linux上效率非常高的文本编辑软件,精简版系统默认只装了vi没有vim
sudo apt-get remove vim-commo //卸载预装的vi
sudo apt-get install vim //安装vim
2.4.3 安装nginx
nginx为俄罗斯战斗民族程序员开发,是一个高性能web服务器和反向代理服务器,具体的使用会单独发一篇文章介绍
- 下载软件
sudo apt-get install nginx
- 启动
sudo systemctl start nginx
- 查看状态
sudo systemctl status nginx
- 设置nginx开机启动:
sudo systemctl enable nginx
- 重新加载Nginx,使配置生效
sudo systemctl reload nginx
- nginx 默认80口 测试是否正常 输入ip地址访问,看到如下界面就证明启动成功了
- 默认的网站根目录:/var/www/html
- nginx配置文件目录:/etc/nginx/
- nginx主配置文件位置:/etc/nginx/nginx.conf
- 日志地址 vim /var/log/nginx/error.log
新增端口映射文件放/etc/nginx/conf.d 中
server { listen 81; #映射端口 server_name photo_bed.com; #服务名称 root /var/www/photo_bed.com; #资源路径 index index.html index.htm; #请求头 location / { try_files $uri $uri/ =404; #404页面 } }
2.4.4 安装Docker
docker是一种虚拟化容器技术,类似于虚拟机,但是传统虚拟机是利用机器硬件进行虚拟化,而docker是在软件层面进行虚拟化,这个后面也会详细单独讲一篇,这里只介绍安装以及换源
安装
sudo curl -sSL https://get.docker.com | sh #一键安装脚本 sudo curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun #国内镜像安装 docker run hello-world #测试是否安装成功
Docker换源
- 国内源地址
https://registry.docker-cn.com #Docker官方中国区 http://hub-mirror.c.163.com #网易 https://docker.mirrors.ustc.edu.cn #中国科技大学 https://y0qd3iq.mirror.aliyuncs.com #阿里云 (实测阿里云的最快)
- 新增配置文件
nano /etc/docker/daemon.json
{ "registry-mirrors": ["https://y0qd3iq.mirror.aliyuncs.com"] }
- 重启Docker服务
sudo service docker restart
- 然后通过以下命令查看配置是否生效
docker info|grep Mirrors -A 1
,
看到如下的输出:
Registry Mirrors: https://y0qd3iq.mirror.aliyuncs.com/
就表示镜像配置成功
欢迎大佬们指点