树莓派折腾记(一)-- 安装系统(Ubuntu Server 20.04.1)

We can’t change the past. But we can make the future.——《都市侠盗》

不念过往,未来可期。

前言

  最近刚整个了个树莓派4B 8GB版本,详细配置如下:


  准备给它装上 Ubuntu Server 20.04 当服务器来用。关于什么是树莓派这里不做过多赘述,有兴趣的话可以浏览下面几篇文章:树莓派 (微型电脑)_百度百科树莓派电脑_百度百科能用树莓派干些什么有趣的事情?

镜像准备

  既然要安装ubuntu server,那肯定要去ubuntu官网了!

  ubuntu 有可供树莓派安装使用的基于arm64架构的系统。我的是树莓派4B,就按照下图所示进行下载。

  如果你的浏览器转了好大会圈圈还不下载,就点击下图中的的红框,立即下载。推荐使用迅雷下载,不然你可能要等到花都谢了!!!

  下载完成之后它是一个以xz结尾的压缩文件,有600M+大小,我们需要将它解压,解压后的文件后缀为img,有3G+大小,也就是我们所需要的镜像。如下图所示:

烧录系统

  树莓派安装系统与我们平常用的台式机笔记本安装系统的方式不太一样。树莓派需要进行烧录安装系统,然后我们就需要用到一个专业软件了 balenaEtcher 这是github地址: https://github.com/balena-io/etcher/releases

  安装好balenaEtcher之后,按照下图所示操作即可

  稍等片刻,出现如下图所示,系统就烧录进TF卡中了。关闭balenaEtcher即可

  此时,第一个坑点来了。烧录完之后,你的电脑可能找不到TF了,这时你可以重新插拔一下TF卡,如果还是不显示你就重启一下电脑。
  随之而来的是第二个坑,从windows自带的磁盘工具查看到还有很大一部分空间未分配,你的可用空间(主分区)大概只有2G左右的样子。

  这时就需要另一个工具了 DiskGenius 一个强大的磁盘管理工具,官网地址:https://www.diskgenius.cn/ 。打开DiskGenius,找到你的TF卡,不出意外你的TF下有两个分区

  选中主分区(Ext4分区),然后右键扩容分区

  点击开始,会有一个警告弹窗,点击确定,稍等片刻即可扩容完毕

  如下图,这是扩容之后的样子,所有的空闲空间已经扩容到了主分区(Ext4分区)了

  使用 WIN + E 打开文件管理,不出意外在你的设备和驱动器下有一个 system-boot 盘符,打开这个盘符,找到 network-config 这个文件(wifi网络配置文件)

  打开network-config,发现内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
version: 2
ethernets:
eth0:
dhcp4: true
optional: true
#wifis:
# wlan0:
# dhcp4: true
# optional: true
# access-points:
# myhomewifi:
# password: "S3kr1t"
# myworkwifi:
# password: "correct battery horse staple"
# workssid:
# auth:
# key-management: eap
# method: peap
# identity: "me@example.com"
# password: "passw0rd"
# ca-certificate: /etc/my_ca.pem

  修改为如下内容,你可以添加多个wifi配置,如下内容中TP-LINK_1以及TP-LINK_2都是wifi名称,不需要引号引起来,除非wifi名称中含有空格,密码填入对应wifi名称下password后的引号中即可。此外缩进一定要使用空格。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
version: 2
ethernets:
eth0:
dhcp4: true
optional: true
wifis:
wlan0:
dhcp4: true
optional: true
access-points:
TP-LINK_1:
password: "TP-LINK_1的密码"
TP-LINK_2:
password: "TP-LINK_2的密码"
# myhomewifi:
# password: "S3kr1t"
# myworkwifi:
# password: "correct battery horse staple"
# workssid:
# auth:
# key-management: eap
# method: peap
# identity: "me@example.com"
# password: "passw0rd"
# ca-certificate: /etc/my_ca.pem

启动系统

  首先说明:默认用户名,密码都是ubuntu。首次登录后会让你再输一遍密码也就是ubuntu,然后创建一个复杂密码、 确认密码。如下图所示:如果你是使用ssh工具登录,验证新密码后会退出,你只需使用你刚设置的新密码重新登录即可

配置网络

  对于我们安装的ubuntu server亲测有两种方法可以查看ip地址。

  方法①、网线 + 笔记本电脑共享网络 + 显示器(需miniHDMI转HDMI接头)+ 键盘 + 树莓派

  首先在笔记本电脑中依次打开 设置 --> 网络和Internet --> 更改适配器选项,如下图:

  进入到如下界面,可以看到我的笔记本使用的是WLAN连接到网络,网线插口未被使用

  我们选中WLAN,右键点击属性,进入到如下界面,然后点击共享

  按照下图所示,勾选允许其他网络用户通过此计算机的Internet连接来连接,家庭网络连接选择以太网,点击确定即可

  然后将烧录好的TF卡插入树莓派TF卡槽中,网线的一端插入笔记本网口,另一端插入树莓派网口,连接好显示器键盘,然后接通电源,稍等片刻便可进入系统。进入系统修改完密码,使用 ip addr 即可查看ip。

  方法②、网线 + 路由器 + 树莓派

  这种方法最为便捷,不需要显示器以及键盘等配件。将烧录好的TF卡插入树莓派TF卡槽中,网线的一端插入路由器网口,另一端插入树莓派网口,然后接通电源。

  当然,使用这种方式连接网络什么时候开机我们是无法直接看到的。需要我们登录路由器,(一般来说地址是192.168.0.1,当然有些品牌型号可能例外,具体请查找说明书)然后通过路由器的设备管理查看新增的设备的ip即可,不出意外的话,新增了一个名称为ubuntu的设备。(有的路由器的设备管理可以区分是否使用网线连接的,我的路由器是TP-LINK WDR5620)如下图:

  然后就可以使用ssh工具连接到树莓派了,修改初始密码重新连接即可。

  如果你不知道路由器的登录密码,也可以使用360流量防火墙下的防蹭网来检测设备,腾讯安全管家应该也有类似功能。

  到了这里,有的朋友可能要问了:那你之前配置的wifi有什么用?树莓派不是支持wifi吗?

  答:ubuntu server 20.04.x安装完之后,首次启动会初始化一次配置,之前配置的wifi会初始化写入到 /etc/netplan 目录下的yaml配置文件,之后再修改的话只能修改这个yaml配置文件了。而且树莓派安装最大的坑点来了–没有wlan0无线网卡,如下图:只有eth0有线网卡。

  这不是我们想要的,在某些情况下我们是需要无线网卡的。经过不断的测试终于解决了没有wlan0的问题。

  第一步,在首次开机前就配置好wifi,也就是上文中扩容TF卡之后的操作

  第二步,依次执行下面的命令更新软件(切记:不要更换软件源)

1
2
sudo apt update
sudo apt upgrade

  如果你在执行sudo apt upgrade时,出现了类似下图问题

  使用Ctrl + c 停止,然后执行 sudo reboot 重启树莓派。重新依次执行sudo apt update 和 sudo apt upgrade即可。这时,你使用 ip addr 命令发现还是没有wlan0网卡,不要慌不要急,我们执行一下 sudo reboot 重启树莓派。然后执行 ip addr 命令,发现wlan0出现了,如下图:

  上面的方法仅适用于ubuntu server 20.04.1版本,ubuntu server 20.04.2版本是行不通的。通过对比发现:ubuntu server 20.04.1版本在更新软件的时候更新了内核

  并且随着内核的更新安装了驱动,如下图(太多了,只截取了部分)。

  而ubuntu server 20.04.2版本因内核是最新的,没有更新内核,也就没有安装驱动,所以ubuntu server 20.04.2版本无论怎么更新都是找不到wlan0无线网卡的。这里也是最大的坑点(系统在第一次启动初始化时并没有安装驱动)。

  至于我为什么发现了这点,是因为写这篇文章我拖了好久,以至于ubuntu server 20.04.2都发布了。因为官网只提供最新版本的下载,所以在官网上是找不到ubuntu server 20.04.1版本的。但是我们可以在历史版本找,这是链接: http://old-releases.ubuntu.com/releases/20.04.1/ ,打开这个链接,滑到最后,选择 ubuntu-20.04.1-preinstalled-server-arm64+raspi.img.xz 进行下载即可。

更换软件源

  官方的软件源还是太慢了,为了以后更新或安装软件时更加的快捷,推荐更换国内的软件源。

1
2
3
4
5
6
# 将官方源做一下备份
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 将ubuntu的镜像站点替换为阿里云的镜像站点
sudo sed -i 's/http:\/\/.*.ubuntu.com/https:\/\/mirrors.aliyun.com/g' /etc/apt/sources.list
sudo apt update
sudo apt upgrade

修改时区

  ubuntu server 安装完后,默认时区并不是Asia/Shanghai,也就是说对于我们来说时间是不准确的,所以我们需要修改下时区。我们可以使用 date -R 命令查看当前时区, 发现为 +0000。

  修改时区可以使用 sudo tzselect 命令。例如我要修改为北京时间,可以在输入 sudo tzselect 命令后依次输入 4 --> 9 --> 1 --> 1 ,如下图:

  我们还需执行下面的命令让其生效

1
sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

  这时使用 date -R 命令查看当前时区,就会发现时区变成了 +0800 ,此刻的时间对于我们来说也就是正确的时间了。

配置静态IP

  之前我们在系统第一次启动前就配置了wifi,但是DHCP是开启的,也就是ip可能会因为我们重启机器而改变,所以我们需要将IP固定下来,毕竟不能每次使用ssh工具连接的时候都找一次ip吧。

  在上文中也提到过,首次启动会初始化一次配置,之前配置的wifi会初始化写入到 /etc/netplan 目录下的yaml配置文件。我们要想配置静态IP也是在这个yaml文件中。我们可以使用下面的命令查看配置文件全名。

1
ll /etc/netplan/ 

  不出意外的话你的配置文件全名应该也是50-cloud-init.yaml

1
2
3
4
5
6
# 进入配置目录
cd /etc/netplan/
# 先做一下备份
sudo cp 50-cloud-init.yaml 50-cloud-init.yaml.back
# 打开配置文件
sudo vim 50-cloud-init.yaml

  你会发现这不就是之前配置的wifi吗?只不过缩进由2个空格变成了4个空格,密码没有被双引号包裹而已。

  配置静态ip,我们需要将DHCP关闭,指定静态ip地址/子网掩码,指定网关地址,指定DNS地址。具体如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
network:
ethernets:
eth0: # 有线网卡
addresses:
- 192.168.0.109/24 # ip地址/子网掩码
gateway4: 192.168.0.1 # 网关地址
nameservers:
addresses: # DNS地址,多个的话按照下面添加即可
- 114.114.114.114
- 8.8.8.8
dhcp4: no # DHCP
optional: no
version: 2
wifis:
wlan0: # 无线网卡
addresses:
- 192.168.0.110/24 # ip地址/子网掩码
gateway4: 192.168.0.1 # 网关地址
nameservers:
addresses: # DNS地址,多个的话按照下面添加即可
- 114.114.114.114
- 8.8.8.8
access-points:
TP-LINK_1: # wifi名称
password: TP-LINK_1的密码 # wifi密码
TP-LINK_2: # wifi名称
password: TP-LINK_2的密码 # wifi密码
dhcp4: no # DHCP
optional: no

  然后使用下面的命令让配置生效,当然你也可以重启树莓派。

1
sudo netplan --debug apply

  如果你当前连接树莓派的ip地址与你在配置文件中指定的地址不一样,ssh工具会断开与树莓派的连接。当然这也说明你的配置大概率是成功了的,然后你就可以使用你刚刚在配置文件中指定的ip地址连接到树莓派了。

  使用 ip addr 命令查看效果。如下图:可以看到有限网卡 eth0 静态ip为 192.168.0.109 ,无线网卡 wlan0 静态ip为 192.168.0.110, , 和我们配置的一样,说明配置生效了。

写在最后

  至此,ubuntu server 20.04的安装以及配置就完毕了。整个安装过程可以说是一波三折,小问题不断。因为树莓派的受众很小,再加上很少有人使用树莓派当做服务器,所以很多问题网上没有同类型的只能自己摸索,如果你还遇到了其他问题,欢迎在下方留言。

参考:
Ubuntu Server 20.04换用阿里源 - mrfangd
linux修改系统时间和linux查看时区、修改时区的方法 - jiu__