背景
网上一句话说树莓派买回来都是吃灰的,这句话真没错,刚买回来的时候新鲜感还是挺强的,下镜像、安系统,做完这些之后就搁置了。
最近忽然又来了兴趣,之前装系统和简单配置都忘了,现在再玩一遍,来记录一下。
准备工作
格式化SD卡
工具:DiskGenius
参考文章:树莓派SD卡格式化
操作步骤:
- 下载好解压,进入软件目录,DiskGenius.exe 双击打开
- 找到SD 对应磁盘,如果已有分区,先删除所有分区,然后点击【保存更改】
- 选中磁盘,点击【新建分区】,打开新建分区弹窗,选择 FAT32,点确定
- 点击【保存更改】,保存更改完之后会提示是否立即格式化新建分区
选择系统
参考:树莓派各类操作系统大全,ubuntu 20.04、ubuntu-mate 20.04、raspbian三个系统对于树莓派4的不同
很多介绍各系统差异的文章,这里就不细说了,Ubuntu MATE 和 Ubuntu 标准版略有差别;
我选择 Ubuntu 标准版适用 Raspberry Pi 服务器版本
镜像写入工具
工具:Win32 Disk Imager
参考:树莓派安装各种Ubuntu版本及系统推荐
操作步骤:
-
安装Win32 Disk Imager
-
解压 Ubuntu 系统,得到 img 文件
-
打开Win32DiskImager,选择下载的 img 文件,选择内存卡磁盘,点【写入】,等待写入成功
问题记录
写入镜像后,提示要可移动磁盘要格式化
在写入镜像之后,进入 Windows 文件资源管理器看到 system-boot 分区和可移动磁盘分区,并提示可移动磁盘分区要格式化之后才能使用,查了一下,可能分区没有弄好,使用 DiskGenius 先删除SD卡中的所有分区,新建分区并格式化,然后再烧录镜像就没有问题了
配置
SSH
想在第一次开机就能 开启 ssh 功能,在 Windows 资源管理中打开 system-boot 分区,新建一个 ssh 的文件,来打开系统的 SSH 服务
增加 WIFI 配置
参考:Linux之wpa_supplicant.conf文件详解
新建 wpa_supplicant.conf 文件
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
ap_scan=1
fast_reauth=1
country=CN
network={
ssid="WIFI名称"
psk="WIFI密码"
}
不过这个好像不适用安装 Ubuntu 系统,配置后没效果
一根网线连接树莓派
参考:一根网线直连树莓派
由于没有外设,也不能进路由器查看IP,可以用网线连接树莓派和电脑,这样就能查看树莓派对应的 IP 了,然后可以通过 SSH 连接到树莓派,上面参考文档写的很详细了,这里还是记录一下具体操作吧。
-
在电脑右下角 WIFI 图标位置右击,选择【打开“网络和Internel”设置】,在打开的窗口中选择【更改适配器选项】,打开网络连接窗口;
-
可以看到以太网连接,这个就是连接的树莓派,在【WLAN】上右击,选属性,打开【属性】弹窗;
-
选择【共享】,勾选两个复选框允许,选择共享以太网,然后关闭打开的窗口;
-
打开命令行工具,输入指令
arp -a
,找到 IP 为 192.168.137.1,下面第一个 IP 一般就是树莓派的IP,如果看不到,把树莓派重启下试试
-
通过 SSH 服务连接树莓派,我电脑装了 Git,Git Bash Here 有 SSH 功能,图个方便在 Windos 资源管理器中右击打开 Git Bash Here;
语法:ssh 用户名@服务器地址
ssh [email protected]
6. 我安装的是 Ubuntu server 镜像,首次进入 Ubuntu 的初始用户名/密码为:ubuntu/ubuntu,密码输入完之后会提示设置新密码
问题记录
SSH 连接不上树莓派
经过反复测试,打开网络连接窗口,将以太网,先禁用,再启用可解决,一次不行再试一次,在终端输入指令arp -a
,看到 192.168.137.1,下面第一个 IP 发生改变应该就可以了
优化树莓派系统
查看系统版本
# 系统版本
cat /etc/issue
# 内核版本
uname -a
更新源
- 备份原始源文件
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
- 编辑软件源文件
sudo vim /etc/apt/sources.list
- 添加镜像源
- 更新
sudo apt-get update
sudo apt-get upgrade
参考:Ubuntu20.04更换软件源
国内软件源:
清华大学开源软件镜像站
阿里镜像站
ubuntu查看ip地址
参考:ubuntu 连接 WIFI
查询过后知道 18.04 之后 ubuntu 更换了网络管理工具,以前用ifconfig
命令,现在要用ip
命令
ip a
# 或
ip addr
用ifconfig
查看 IP 地址方法,在终端中输入,但是报错,提示没有安装 net-tools 工具
ubuntu@ubuntu:~$ ifconfig
Command 'ifconfig' not found, but can be installed with:
sudo apt install net-tools
根据提示,安装 net-tools,再查看就可以了
sudo apt install net-tools
安装 nginx
# 安装
sudo apt-get install nginx
# 启动
sudo /etc/init.d/nginx start
# 重启
sudo /etc/init.d/nginx restart
# 停止
sudo /etc/init.d/nginx stop
在浏览器中输入树莓派的 IP 地址,能看到 nginx 页面表示安装成功。
内网穿透
参考:树莓派内网穿透方法大全
简单来说就是将内网(本地)的 web 应用通过 nat 穿透到公网上,这样就能在公网访问内网中的数据;内网穿透主要有 ngrok 和 frp 两种。
其他配置
如果安装的是桌面版系统,可通过指令sudo apt-get install xrdp
来安装 xrdp 服务,实现 Windows 远程桌面访问树莓派
配置WIFI连接
安装 NetworkManager 网络管理
更多nmcli
命令请参考:NetworkManager (简体中文)
安装network-manager
,然后通过命令行界面(nmcli)管理网络
# 安装
sudo apt install network-manager
# 查看网络连接
nmcli
编辑 NetworkManager.conf 文件
sudo vim /etc/NetworkManager/NetworkManager.conf
将managed=false
修改为managed=true
重启 NetworkManager 服务
# 启动服务
# ubuntu 22.04
sudo systemctl restart NetworkManager
# ubuntu 18.04
sudo systemctl restart network-manager
# 查看状态(ubuntu 22.04)
systemctl status NetworkManager
查看要配置的网卡
ls /sys/class/net
# 打印网口名
# eth0 lo wlan0
# wifi 网卡为 wlan0
# 或使用 ip addr 查看网卡
编辑配置文件
netplan 为默认的网络管理器。
进入/etc/netplan/
目录会有*.yaml
的配置文件,我的是 Servers 版本,里面有一个50-cloud-init.yaml
文件
sudo vim /etc/netplan/50-cloud-init.yaml
默认配置
# 50-cloud-init.yaml
network:
ethernets:
eth0:
dhcp4: true
optional: true
version: 2
增加wifis
网口配置
network:
ethernets:
eth0:
dhcp4: true
optional: true
wifis:
wlo1: # 网口,是动态的,可能不是 wlo1,通过`ls /sys/class/net`查看
dhcp4: true
access-points:
"WIFI名称":
password: "WiFi密码"
renderer: NetworkManager
version: 2
应用配置
sudo netplan apply
此时已经可以通过nmcli管理网络了
或使用命令连接WiFi
参考:ubuntu命令连接wifi
ubuntu 查看网卡状态命令_Ubuntu 16.04通过命令行连接Wi-Fi
查看设备状态
nmcli -p device
# 查看连接状态
nmcli connection
# 或
ifconfig -a
设置静态IP
sudo vim /etc/netplan/50-cloud-init.yaml
设置网线连接的网口为静态 IP
将 dhcp 关闭,增加 ip、网关、DNS地址
network:
ethernets:
eth0:
dhcp4: false
addresses: [192.168.137.182/24]
optional: true
routes:
to: default
via: 192.168.137.1
nameservers:
addresses: [192.168.137.1,8.8.8.8]
Ubuntu 22.04 多网卡IP配置
配置多网卡IP的时候,需要注意一下默认网关只能设置一个,将内网 routes 注释掉,只保留一个 default
出现这个报错,就是配置了多个 default:
** (generate:13113): WARNING **: 08:53:25.086: Problem encountered while validating default route consistency.Please set up multiple routing tables and userouting-policy
instead.
Error: Conflicting default route declarations for IPv4 (table: main, metric: default), first declared in wlan0 but also in eth0
network:
ethernets:
eth0:
dhcp4: false
addresses: [192.168.137.182/24]
optional: true
# routes:
# - to: default
# via: 192.168.137.1
nameservers:
addresses: [192.168.137.1,8.8.8.8]
wifis:
wlan0:
dhcp4: false
addresses: [172.18.75.7/24]
optional: true
routes:
- to: default
via: 172.18.75.1
nameservers:
addresses: [114.114.114.114,8.8.8.8]
access-points:
"WIFI名称":
password: "WiFi密码"
renderer: NetworkManager
version: 2
运行命令应用新配置,立即生效
sudo netplan apply