树莓派安装 ubuntu server 20.4.2

详细介绍如何在树莓派 3b+ 上安装 ubuntu server 20.4.2。


开始

1: 下载Ubuntu Server for Raspberry Pi镜像.

2: 用读卡器将MicroSD卡连接电脑,再用Etcher或者Win32Disk刻录镜像(MicroSD卡需先格式化,格式可为FAT32)

3: 覆盖"system-boot"下的network-config以及user-data文件内容。

network-config文件内容:

# This file contains a netplan-compatible configuration which cloud-init
# will apply on first-boot. Please refer to the cloud-init documentation and
# the netplan reference for full details:
#
# https://cloudinit.readthedocs.io/
# https://netplan.io/reference
#

#Replace the entire user-data on the imaged SD Card with this file.
version: 2
renderer: networkd
ethernets:
  etho:
    dhcp4: true
    dhcp6: true
    optional: true
wifis:
  wlan0:
    dhcp4: true
    dhcp6: true
    optional: true
    access-points:
      "wifi名称":
         password: "wifi密码"
      #"wifi名称1":
         #password: "wifi密码1"
      #"wifi名称2":
         #password: "wifi密码2"

在user-data文件末尾添加:

##  Reboot after cloud-init completes because otherwise wlan0 will not come up...
##  despite cloud-init having applied settings from network-config
power_state:
  mode: reboot

wifi设置

在windows上使用notepad等编辑文件时不要使用TAB制表符,一律使用2个空格替代TAB制表符,一定要注意缩进。 尽量添加多个wifi信息,如果只填了一个wifi树莓派有可能扫描不到某些wifi。

4: 取出SD卡并插在树莓派上,插上电源启动树莓派。

5: 等待3-5分钟,然后用 ARP 命令根据树莓派的网络适配器供应商的申请的 MAC 地址区间 (MAC 地址以 "b8:27:eb" 或 "dc:a6:32" 开头) 来识别哪个 IP 地址是树莓派:

  • Windows 运行 arp -a | findstr b8-27-eb 或 arp -a | findstr dc-a6-32

  • MacOS, Linux 运行 arp -na | grep -i "b8:27:eb" 或 arp -na | grep -i "dc:a6:32"

得到的输出应该是这样的:

PS D:\work_Files> arp -a | findstr b8-27-eb
  192.168.1.16          b8-27-eb-d9-0e-83     ??
PS D:\work_Files>

注意: 树莓派4b的mac地址区间为 "dc-a6-32",其它的需使用 "b8-27-eb" 作为mac区间号.

mac区间号查询地址

6: 获取树莓派ip后可使用ssh登录了,ssh ubuntu@192.168.1.16 密码是ubuntu

安装文档及常见问题

时间设置

date -R    # 查看时间

sudo tzselect  选择时区为Asia---China---Beijing Time

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

更改apt源为国内源

先备份原文件: sudo cp /etc/apt/sources.list /etc/apt/sources.list.back

使用 HTTPS 可以有效避免国内运营商的缓存劫持,但需要事先安装 sudo apt-get install apt-transport-https

用vim编辑sources.list

先按下:再输入%s/http:\/\/ports.ubuntu.com/https:\/\/mirrors.aliyun.com/g

最后更新apt缓存: sudo apt-get update && sudo apt-get upgrade

设置hostname

sudo hostnamectl set-hostname pi-server

sudo vim /etc/hosts

添加

127.0.0.1 pi-server

通过hostnamectl查看是否更改生效

以下可不操作:

sudo vim /etc/cloud/cloud.cfg

添加:

# Set preserve_hostname to true for persistance after reboot
preserve_hostname: true

将终端设置成中文

sudo dpkg-reconfigure --force locales

选择最后的zh_CN.UTF-8zh_CN.GBK

将选择停留在zh_CN.UTF-8上并确认

注销并重新登录后即可发现终端语言已经调整为中文

新增用户并删除ubuntu账号

sudo useradd  -G admin,sudo -s /bin/bash -m iecho    # 新增用户iecho并添加到sudo   

sudo passwd iecho   # 设置密码

sudo userdel -r ubuntu   # 删除ubuntu账号

有关账号的操作

加入admin组和sudo组都可让普通账号拥有sudo权限,如果已经创建了账号但想使用sudo,可使用命令`sudo usermod -aG sudo 账号名

开机不能连接wifi

当树莓派开机后不能连接wifi时,你可选择:

1: 使用网线连接树莓派和路由器,再连接显示器、键盘、鼠标等设备并用命令: ip a 查看有没有网络连接信息。

2:使用命令: sudo networkctl 或者ls /sys/class/net/ 或者sudo lshw 查看网卡名称.有线网卡一般叫 "etho", 无线网卡都叫 "wlan0"

3: 当连接网线后可先使用sudo apt-get update更新系统,再安装如下软件:

sudo apt install wireless-toolssudo apt install -y wpasupplicant

4: 使用sudo iwlist wlan0 scan | grep SSID 扫描到你需要连接的wifi并记录wifi名称。

5: 开启wpa_supplicant:

sudo systemctl enable wpa_supplicant

sudo systemctl start wpa_supplicant

6: 编辑: sudo vim /etc/netplan/50-cloud-init.yaml,覆盖内容:

# This file is generated from information provided by the datasource.  Changes
# to it will not persist across an instance reboot.  To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}

network:
    ethernets:
        etho:
            dhcp4: true
            dhcp6: true
            optional: true
    renderer: networkd
    version: 2
    wifis:
        wlan0:
            access-points:
                "wifi名称":
                    password: "wifi密码"
            dhcp4: true
            dhcp6: true
            optional: true

注意: 一定要注意缩进,wifi名称和密码都要使用引号括起来

7: 生成配置并加入wifi

sudo netplan --debug try

sudo netplan --debug generate

sudo systemctl daemon-reload 或者 sudo systemctl restart netplan-wpa-wlan0.service

sudo netplan --debug apply

8: 可通过ip a查看wlan0中是否有ip等信息,如果没有可sudo reboot重启尝试。

查看网络连接状态命令:

sudo systemctl status systemd-networkd

sudo systemctl status netplan-wpa-wlan0.service

FAQ

  • 设置树莓派 ip
    • 用显示器连接树莓派,但是始终不能出现登录提示,无法登录
    • 网络换了,ip 地址改变,无法使用原来的 ip 来通过 ssh 登录
    • 解决办法:
      • 用 linux 挂载树莓派的 SD 卡中的 rootfs 分区,然后复制一份 /etc/dhcpcd.conf 文件到本机
      • 修改复制后的 /etc/dhcpcd.conf 里的 ip 地址
      • static ip_address=192.168.5.20/24
      • static routers=192.168.5.1
      • static domain_name_servers=223.5.5.5
      • 保存后再用 sudo cp dhcpcd.conf /run/media/echoxu/rootfs/etc/
      • 重启树莓派

参考链接

RPi 4 running Ubuntu Server 20.04: can't connect to WiFi

Ubuntu Network Configuration

netplan配置参考

上次更新:
贡献者: iEchoxu