1. 开篇:为什么你的树莓派CM4需要一份靠谱的系统安装指南?

如果你刚拿到那块小巧又强大的树莓派Compute Module 4(CM4),尤其是带eMMC存储和WiFi的版本,心里肯定既兴奋又有点没底。兴奋的是,它比树莓派4B更小巧,集成度更高,非常适合嵌入到各种项目里;没底的是,这玩意儿怎么装系统?跟普通的SD卡版本好像不太一样啊。我刚开始用CM4的时候,也是这么想的,结果踩了一路的坑,从镜像烧录失败到WiFi死活连不上,折腾了好几天。

所以,我决定把这一路的经验教训,包括那些官方文档里没细说、网上教程又语焉不详的“坑点”,都整理出来。这篇文章的目的很简单:让你一次成功,把系统稳稳当当地装进CM4的eMMC里,并且让WiFi正常跑起来。无论你是想安装官方的Raspberry Pi OS,还是更青睐Ubuntu MATE这样的桌面系统,甚至是自己备份迁移旧系统,这里都有详细的步骤和避坑指南。咱们不搞那些虚头巴脑的理论,直接上手操作,用最“小白”能懂的话,把事儿说清楚。

2. 动手前的准备:硬件、软件与心态

在开始“烧录”这个大工程之前,把准备工作做足,能省去后面至少80%的麻烦。这部分咱们分硬件、软件和思想准备三块来说。

2.1 硬件清单:缺一不可

首先,你得确认自己手里的CM4模块型号。带eMMC的CM4是必须的,因为我们的系统就是要直接写进它内置的存储里,而不是外置的SD卡。通常,板子上会明确写着“eMMC”字样和容量(比如8GB、16GB、32GB)。其次,你需要一块CM4的IO底板(Carrier Board)。CM4模块本身只是个核心板,没有直接的USB、HDMI接口,必须通过底板来扩展。市面上有树莓派官方的底板,也有很多第三方设计的,功能大同小异,选择你手头有的或者项目需要的就行。

一个极其关键的硬件细节:底板上通常会有一个BOOT模式选择开关或跳线。这个开关决定了CM4是从eMMC启动,还是从外部USB设备(用于烧录)启动。在烧录系统时,我们需要将它拨到“ON”或者“ENABLE”的位置(具体看底板说明),让电脑能通过USB识别到eMMC。烧录完成后,再拨回“OFF”或“DISABLE”,才能从eMMC正常启动系统。我见过不止一个朋友因为忘了切换这个开关,对着“无法识别设备”的电脑屏幕发呆半天。

供电方面,请务必使用树莓派官方推荐的5V/3A电源适配器,或者品质有保证的同等规格电源。CM4的功耗不低,尤其是带WiFi的版本,供电不足会导致各种玄学问题:比如烧录过程中断、系统无法启动、频繁重启,甚至WiFi模块工作不稳定。我试过用电脑的USB口或者手机充电器供电,十次里有八次会出幺蛾子,所以强烈建议一步到位,别在电源上省钱。

2.2 软件工具:根据你的主力操作系统选择

你的主力电脑是Windows、macOS还是Linux?工具链略有不同。

  • Windows用户:你需要两个工具。一是 rpiboot工具,它的作用是把CM4的eMMC模拟成一个U盘,让Windows能识别。你可以直接从树莓派基金会官网下载Windows安装版,安装后运行rpiboot.exe即可。二是镜像烧录工具,最经典的就是 Win32 Disk Imager。它负责把下载好的.img系统镜像文件写入被识别出来的“U盘”(即eMMC)。
  • Linux/macOS用户:同样需要rpiboot工具,但通常需要通过源码编译。操作也不复杂,在终端里几条命令就能搞定。烧录工具则更强大,直接使用系统自带的dd命令,或者图形化工具如balenaEtcher。

无论用什么系统,一个共同的准备工作是:获取系统镜像。你可以从树莓派官网下载最新的Raspberry Pi OS,或者从Ubuntu官网下载为树莓派优化的Ubuntu MATE、Ubuntu Server镜像。确定好你要安装的系统版本,并下载对应的.img.xz或.img.gz压缩包,解压后得到最终的.img文件。

2.3 心态准备:耐心与细心

给嵌入式设备装系统,尤其是第一次,难免会遇到点小波折。可能是驱动没装好,可能是开关忘了拨,也可能是镜像文件下载不完整。我的经验是,按照步骤一步步来,每完成一步都确认一下结果。比如,运行rpiboot后,去“我的电脑”或“磁盘工具”里看看是不是多了一个可移动磁盘;烧录完成后,检查一下磁盘容量是否变化。保持耐心,细心观察终端或软件给出的每一条提示信息,它们往往是解决问题的关键线索。

3. 核心实战:三步搞定eMMC系统烧录

准备工作就绪,现在进入最核心的烧录环节。整个过程可以概括为三个步骤:让电脑识别eMMC、格式化、写入镜像。我会以Windows环境为主进行详解,并补充Linux下的关键命令。

3.1 第一步:使用rpiboot连接CM4

首先,确保CM4已通过底板连接到电脑的USB口(通常是底板上标有“USB”或“BOOT”的接口),并且底板上的BOOT开关已拨到“ON”位置。然后,在Windows上运行你安装好的rpiboot.exe程序。

如果一切正常,程序窗口会显示一些检测信息,然后你会在Windows的“此电脑”里,发现多出来一个可移动磁盘,它的名字可能很奇怪,容量也显示为CM4 eMMC的实际大小(如32GB)。这就成功了!rpiboot工具就像一座桥,把CM4内部的eMMC存储“映射”成了电脑上的一个普通U盘。

如果没出现这个磁盘怎么办? 别慌,按顺序排查:1. 检查USB线是否完好,换一个口试试;2. 确认BOOT开关是否在正确位置;3. 以管理员身份运行rpiboot.exe;4. 查看设备管理器里有没有未知设备,尝试手动安装驱动(通常rpiboot会自带)。在Linux下,你需要先安装libusb开发库,然后克隆usbboot仓库编译运行。运行sudo ./rpiboot后,使用lsblk命令查看是否出现了新的设备节点(如/dev/sdb)。

3.2 第二步:格式化eMMC存储(关键步骤)

很多新手会忽略这一步,直接开始烧录,导致后续失败。在写入新镜像前,强烈建议先格式化eMMC。这是因为之前的残留数据或分区表可能会干扰新系统的写入。

在Windows上,你可以直接右键点击这个新出现的可移动磁盘,选择“格式化”。文件系统选择FAT32(默认),快速格式化即可。也可以使用更专业的工具如SD Card Formatter。在Linux下,你可以使用sudo mkfs.vfat /dev/sdX命令(请将sdX替换为你的实际设备名,如sdb)来格式化。

注意:格式化会清空eMMC上所有数据,请确保没有重要文件。另外,一定要选对盘符!误格式化了电脑硬盘可就悲剧了。

3.3 第三步:使用烧录工具写入系统镜像

现在,打开你的烧录工具。在Windows上,启动Win32 Disk Imager。在“Image File”一栏,点击文件夹图标,选择你之前下载并解压好的.img系统镜像文件。在“Device”一栏,务必选择刚才识别出来的那个可移动磁盘(即CM4的eMMC),再次核对盘符和容量,千万别选错。

确认无误后,点击“Write”按钮。软件会弹出警告,提示目标设备将被覆盖,点击“Yes”继续。接下来就是等待,写入速度取决于你的USB接口速度和镜像文件大小。一个完整的桌面系统镜像(如Ubuntu MATE)大概需要5-15分钟。

写入完成后,会弹窗提示“Write Successful”。此时,在文件资源管理器里,你可能会看到这个磁盘变成了两个分区:一个很小的boot分区(FAT32格式,Windows可读),里面有一些配置文件;另一个大的分区可能无法识别(那是Linux的根文件系统)。这是正常现象。

最后,也是极其重要的一步:关闭rpiboot程序(如果它还在运行),然后将CM4底板上的BOOT开关拨回“OFF”位置。只有这样,CM4才会在下次上电时,从已经写好系统的eMMC内部启动,而不是继续等待USB连接。

4. 首次启动与WiFi驱动的“爱恨情仇”

烧录完成,拔掉USB线,给CM4接上显示器、键盘鼠标,并使用5V/3A电源适配器供电。激动人心的第一次启动来了!

4.1 系统初始化与常见启动问题

如果一切顺利,你会看到树莓派或Ubuntu的启动Logo,然后进入系统设置向导(对于有桌面的系统)或登录界面(对于服务器版)。按照提示完成语言、时区、用户密码等初始设置即可。

但现实往往没那么完美。如果你遇到黑屏、无法启动、或者启动到一半卡住,可以从以下几个方面排查:

  1. 供电不足:这是头号杀手。请立即换用标称5V/3A的电源。手机充电器、电脑USB口、劣质电源适配器都可能因为电压电流不稳导致启动失败。
  2. BOOT开关状态:再次确认开关在“OFF”位置。如果在“ON”,CM4会一直尝试从USB启动,而忽略eMMC。
  3. 镜像文件问题:可能是下载的镜像文件不完整或损坏。可以重新下载一次,并核对文件的SHA256校验码。
  4. HDMI线或显示器:尝试更换HDMI线或显示器接口。有些显示器可能需要特定的分辨率才能显示。

4.2 WiFi无法连接?大概率是驱动缺失

当你成功进入系统,特别是安装的Ubuntu 20.04 MATE这类系统后,下一个经典坑位就来了:WiFi图标不显示,或者能看到网络但无法连接。我当初就在这里卡了很久,一度怀疑自己买到了坏的WiFi模块。

别担心,这几乎肯定不是硬件问题。树莓派CM4自带的无线网卡型号是Intel AX200,这是一款支持WiFi 6的网卡。而一些较早发布的系统镜像(如2021年左右的Ubuntu 20.04),其内核自带的固件(firmware)版本可能比较旧,不包含AX200所需的驱动文件,导致系统根本无法识别这块网卡。

解决办法就是手动安装AX200的驱动固件。操作起来并不难,只需要几条命令。你需要让CM4先通过有线网络连接到互联网(这是前提),然后在终端中执行以下操作:

# 1. 创建一个临时工作目录并进入
mkdir ~/wifi6-ax200
cd ~/wifi6-ax200

# 2. 从英特尔开源驱动站下载AX200的固件包(版本可能会有更新,但此版本广泛适用)
wget https://wireless.wiki.kernel.org/_media/en/users/drivers/iwlwifi/iwlwifi-cc-46.3cfab8da.0.tgz

# 3. 解压下载的压缩包
tar xzvf iwlwifi-cc-46.3cfab8da.0.tgz

# 4. 进入解压后的目录,将固件文件复制到系统的固件目录
cd iwlwifi-cc-46.3cfab8da.0/
sudo cp *.ucode /lib/firmware

# 5. 重启系统
sudo reboot

重启之后,神奇的事情应该就发生了:桌面右上角出现了WiFi图标,点击就能搜索和连接无线网络了。这个问题的本质,就是系统缺少了几个关键的.ucode微码文件,复制过去就药到病除。如果你安装的是更新的系统镜像(如Ubuntu 22.04或更新的Raspberry Pi OS),内核已经集成了较新的驱动,可能就不会遇到这个问题。

5. 进阶技巧:系统备份、迁移与镜像压缩

对于开发者来说,在树莓派4B上配好了一整套开发环境,现在想无损迁移到CM4上,该怎么办?或者,你想给自己CM4里的系统做个备份,以防玩崩了。这就涉及到系统镜像的备份、压缩和还原。

5.1 从SD卡或旧CM4备份系统

假设你的旧系统在一张SD卡里。在Linux电脑上,插入这张SD卡,系统通常会将其识别为/dev/sdb这样的设备(具体用lsblk命令查看)。我们可以使用强大的dd命令来制作一个完整的磁盘镜像:

sudo dd if=/dev/sdb of=./my_old_system.img bs=8M status=progress

这条命令的意思是:从输入文件(if)即SD卡设备/dev/sdb,读取数据,写入到输出文件(of)即当前目录下的my_old_system.img文件中。bs=8M设置每次读写的数据块大小,可以提高速度。status=progress会在过程中显示进度,让你知道还在运行。

但这样做的镜像有一个大问题:它和原SD卡一样大。如果你的SD卡是64GB,哪怕只用了5GB,生成的.img文件也是64GB。这显然无法烧录到容量更小的32GB eMMC上。

5.2 使用PiShrink智能压缩镜像

为了解决镜像过大的问题,我们需要一个工具来“瘦身”镜像。PiShrink是一个专门为树莓派镜像设计的bash脚本,它能自动调整镜像中第二个分区(根文件系统)的大小,并截断镜像文件,只保留实际使用的部分。

首先获取PiShrink脚本:

wget https://raw.githubusercontent.com/Drewsif/PiShrink/master/pishrink.sh
chmod +x pishrink.sh
sudo mv pishrink.sh /usr/local/bin

然后,对刚才备份的大镜像进行压缩:

sudo pishrink.sh -s my_old_system.img my_cm4_backup.img

-s参数表示在压缩前先尝试扩展文件系统以填充所有可用空间(对于某些备份方式有益)。执行后,my_cm4_backup.img文件的大小会缩减到接近SD卡实际使用量的大小,通常能减少很多。

现在,这个压缩后的.img文件,就可以用前面第三节介绍的方法,通过Win32 Disk Imager或dd命令,烧录到你的CM4 eMMC中了。这样,你就实现了系统的完整迁移,所有配置和环境都得以保留。

6. 不同系统镜像的选择与体验

CM4支持多种系统,选择哪个取决于你的需求。这里我分享一下我折腾过几个主要系统的体验,供你参考。

Raspberry Pi OS (原 Raspbian):这是树莓派的“亲儿子”系统,兼容性最好,对硬件支持最完善。如果你追求稳定,或者项目需要用到树莓派独有的软件库(如某些摄像头库、GPIO控制库),选它准没错。桌面版使用起来非常流畅,软件中心也能满足大部分需求。烧录官方镜像几乎不会遇到驱动问题,WiFi开箱即用。

Ubuntu MATE 20.04/22.04:这是我个人比较喜欢的桌面环境。它更接近传统Linux桌面的操作习惯,对于从Ubuntu桌面版迁移过来的用户非常友好。软件生态丰富,通过apt可以安装海量软件。但正如前面提到的,20.04版本需要手动安装AX200 WiFi驱动,这是一个必经的步骤。而22.04版本则基本解决了这个问题,新内核自带驱动,WiFi通常可以直接使用。不过,在软件生态上有一点需要注意:Ubuntu 22.04默认主要支持ROS 2(机器人操作系统),如果你想安装ROS 1 Noetic,可能会比在20.04上麻烦一些,需要处理一些依赖和源的问题。

Ubuntu Server:如果你不需要图形界面,只想把CM4当作一个服务器、软路由、或者跑docker容器,那么Ubuntu Server是最轻量、最高效的选择。它去除了所有桌面组件,资源占用极低,稳定性更高。安装和驱动问题与桌面版类似。

选择建议:新手或求稳,选Raspberry Pi OS;喜欢Ubuntu生态和桌面,能接受一点驱动折腾,选Ubuntu MATE 20.04(记得装驱动)或22.04;纯服务器用途,选Ubuntu Server。

烧录这些系统镜像的步骤是完全通用的,都是通过第三节的rpiboot+烧录工具流程。区别只在于你下载的.img文件不同。每次尝试新系统前,养成好习惯:备份重要数据,准备好一个已知可用的电源,并且保持耐心。玩转CM4的乐趣,正是在于一次次尝试和解决问题的过程中。希望这份超详细的指南,能成为你探索之路上的得力帮手。

更多推荐