网上一句话说树莓派买回来都是吃灰的,这句话真没错,刚买回来的时候新鲜感还是挺强的,下镜像、安系统,做完这些之后就搁置了。
最近忽然又来了兴趣,之前装系统和简单配置都忘了,现在再玩一遍,来记录一下。
工具:DiskGenius
参考文章:树莓派SD卡格式化
操作步骤:
参考:树莓派各类操作系统大全,ubuntu 20.04、ubuntu-mate 20.04、raspbian三个系统对于树莓派4的不同
很多介绍各系统差异的文章,这里就不细说了,Ubuntu MATE 和 Ubuntu 标准版略有差别;
我选择 Ubuntu 标准版适用 Raspberry Pi 服务器版本
工具:Win32 Disk Imager
参考:树莓派安装各种Ubuntu版本及系统推荐
操作步骤:
问题记录
写入镜像后,提示要可移动磁盘要格式化
在写入镜像之后,进入 Windows 文件资源管理器看到 system-boot 分区和可移动磁盘分区,并提示可移动磁盘分区要格式化之后才能使用,查了一下,可能分区没有弄好,使用 DiskGenius 先删除SD卡中的所有分区,新建分区并格式化,然后再烧录镜像就没有问题了
想在第一次开机就能 开启 ssh 功能,在 Windows 资源管理中打开 system-boot 分区,新建一个 ssh 的文件,来打开系统的 SSH 服务
参考: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”设置】,在打开的窗口中选择【更改适配器选项】,打开网络连接窗口;
打开命令行工具,输入指令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 连接 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
# 安装
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 远程桌面访问树莓派
参考:树莓派ubuntu20.04链接wifi
更多nmcli
命令请参考:NetworkManager (简体中文)
安装network-manager
,然后通过命令行界面(nmcli)管理网络
# 安装
sudo apt install network-manager
# 查看网络连接
nmcli
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
参考:Ubuntu20.04使用nmcli配置网络连接
nmcli -p device
# 查看连接状态
nmcli connection
# 或
ifconfig -a
sudo vim /etc/netplan/50-cloud-init.yaml
将 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]
配置多网卡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