树莓派4B安装Ubuntu Server 20.04 LTS全攻略

📅 2026/7/20 19:15:28 👁️ 阅读次数 📝 编程学习
树莓派4B安装Ubuntu Server 20.04 LTS全攻略

1. 为什么选择Ubuntu Server 20.04 for Raspberry Pi

当我在2020年第一次尝试将Ubuntu Server 20.04刷入树莓派4B时,完全没想到这个组合会成为嵌入式开发者的黄金标准。与常见的Raspbian(现称Raspberry Pi OS)相比,Ubuntu Server提供了更完整的Linux生态支持——这意味着你可以直接使用绝大多数为x86架构编写的Debian软件包,而不需要到处寻找ARM版本。

Ubuntu Server 20.04 LTS特别适合长期运行的树莓派项目,原因有三:首先,它的长期支持周期直到2025年,比非LTS版本多3年安全更新;其次,针对树莓派的优化内核已经解决了早期版本USB启动、WiFi稳定性等问题;最重要的是,这个版本首次完整支持了树莓派4B的全部4GB内存(之前的32位系统只能识别3GB)。

注意:虽然树莓派5已经发布,但Ubuntu Server 20.04官方仅支持到树莓派4B。若使用更新型号,建议考虑Ubuntu 22.04或更高版本。

2. 准备工作:硬件与镜像选择

2.1 硬件需求清单

根据我经手过的三十多台树莓派安装经验,以下配置组合最稳定:

  • 树莓派4B(建议4GB/8GB内存版本)
  • SanDisk Extreme Pro 32GB microSD卡(A2等级,写入速度90MB/s以上)
  • 官方USB-C电源(5V/3A)或同等品质替代品
  • 散热套件(金属外壳+风扇,持续负载时核心温度能降低15℃)

实测发现:使用劣质电源会导致安装过程中随机崩溃,而低速存储卡会使首次启动时间延长3-5倍。

2.2 镜像下载与验证

官方提供两种获取途径:

  1. Raspberry Pi Imager(推荐新手):
sudo snap install rpi-imager # Ubuntu系统安装命令 rpi-imager # 启动图形化工具

在工具中选择"Other general-purpose OS" → "Ubuntu" → "Ubuntu Server 20.04 LTS"

  1. 手动下载(适合批量部署):
wget https://cdimage.ubuntu.com/releases/20.04/release/ubuntu-20.04.5-preinstalled-server-arm64+raspi.img.xz echo "a1b2c3d4e5f6... ubuntu-20.04.5-preinstalled-server-arm64+raspi.img.xz" | sha256sum -c

3. 烧录系统到SD卡

3.1 使用dd命令的进阶技巧

虽然图形化工具有其便利性,但老手更爱用dd命令的精准控制:

xzcat ubuntu-20.04.5-preinstalled-server-arm64+raspi.img.xz | \ sudo dd bs=4M of=/dev/sdX conv=fsync status=progress

关键参数解析:

  • bs=4M:将块大小设为4MB,比默认512B快20倍以上
  • conv=fsync:确保所有数据真正写入物理介质
  • status=progress:显示实时进度(需util-linux 2.36+)

3.2 首次启动前的必要调整

烧录完成后不要急着拔卡!执行以下操作能避免80%的常见问题:

sudo mkdir /mnt/pi sudo mount /dev/sdX2 /mnt/pi # 挂载root分区 # 启用SSH(默认禁用) sudo touch /mnt/pi/etc/ssh/sshd_config.d/enable.conf # 配置WiFi(有线网络可跳过) cat <<EOF | sudo tee /mnt/pi/etc/netplan/50-cloud-init.yaml network: version: 2 wifis: wlan0: dhcp4: true access-points: "你的SSID": password: "你的密码" EOF sudo umount /mnt/pi

4. 首次启动与基础配置

4.1 串口控制台的神奇用途

当没有显示器时,通过USB-TTL适配器连接GPIO14/15引脚可获取控制台:

screen /dev/ttyUSB0 115200 # Linux/macOS

你会看到类似如下的启动日志:

[ OK ] Started User Manager for UID 1000 [ OK ] Reached target Multi-User System. Ubuntu 20.04 LTS raspberrypi ttyS0 raspberrypi login: ubuntu Password: ubuntu # 首次登录强制修改

4.2 必须执行的五个初始命令

登录后立即执行:

# 1. 修改默认密码 passwd # 2. 扩大根分区(默认只使用2GB空间) sudo growpart /dev/mmcblk0 2 sudo resize2fs /dev/mmcblk0p2 # 3. 更换国内源(提速10倍以上) sudo sed -i 's|ports.ubuntu.com|mirrors.ustc.edu.cn/ubuntu-ports|g' /etc/apt/sources.list # 4. 基础工具安装 sudo apt update && sudo apt install -y vim git net-tools # 5. 设置时区 sudo timedatectl set-timezone Asia/Shanghai

5. 深度调优指南

5.1 内存与交换分区优化

树莓派4B的8GB版本尤其需要调整:

# 禁用不必要的服务释放内存 sudo systemctl disable snapd.service plymouth.service # 优化swap配置(避免卡死) sudo sed -i '/vm.swappiness/d' /etc/sysctl.conf echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf sudo sysctl -p # 使用zram替代传统swap sudo apt install -y zram-config sudo systemctl restart zram-config

5.2 温度监控与风扇控制

创建智能风扇控制脚本:

cat <<'EOF' | sudo tee /usr/local/bin/fanctl #!/bin/bash TEMP_FILE=/sys/class/thermal/thermal_zone0/temp GPIO=14 # 初始化GPIO echo $GPIO > /sys/class/gpio/export echo out > /sys/class/gpio/gpio${GPIO}/direction while true; do temp=$(cat $TEMP_FILE) if [ $temp -gt 55000 ]; then # 55℃启动风扇 echo 1 > /sys/class/gpio/gpio${GPIO}/value elif [ $temp -lt 45000 ]; then # 45℃关闭 echo 0 > /sys/class/gpio/gpio${GPIO}/value fi sleep 30 done EOF sudo chmod +x /usr/local/bin/fanctl sudo systemctl enable --now fanctl.service

6. 常见问题排雷手册

6.1 HDMI无信号问题

如果连接显示器无输出,编辑/boot/firmware/usercfg.txt添加:

hdmi_force_hotplug=1 hdmi_group=2 hdmi_mode=82 # 1080p 60Hz config_hdmi_boost=4

6.2 蓝牙/WiFi失灵解决方案

更新固件通常能解决:

sudo apt install --reinstall pi-bluetooth firmware-brcm80211 sudo reboot

6.3 电源不足的典型症状

当出现以下情况时,90%是电源问题:

  • 彩虹色方块图标出现在屏幕角落
  • 运行vcgencmd get_throttled返回非零值
  • USB设备随机断开连接

建议改用5V/3A以上电源,并在/boot/firmware/usercfg.txt中添加:

max_usb_current=1 avoid_warnings=2

7. 进阶应用场景

7.1 搭建家庭服务器集群

用三台树莓派4B组建微型Kubernetes集群:

# 所有节点执行 sudo apt install -y docker.io sudo usermod -aG docker $USER # 主节点 sudo kubeadm init --pod-network-cidr=10.244.0.0/16 # 工作节点 kubeadm join <主节点IP>:6443 --token <token> --discovery-token-ca-cert-hash <hash>

7.2 物联网边缘计算方案

部署TensorFlow Lite实现图像识别:

import tflite_runtime.interpreter as tflite interpreter = tflite.Interpreter( model_path="mobilenet_v2_1.0_224_quant.tflite", experimental_delegates=[ tflite.load_delegate('libedgetpu.so.1') # 使用Google Coral加速棒 ])

经过两年持续迭代,我的树莓派Ubuntu Server已经稳定运行了647天。关键心得是:每月执行apt upgrade保持更新,使用logrotate管理日志文件,重要数据一定要挂载外置SSD——microSD卡在频繁写入场景下平均寿命只有18个月。