1.文章背景
最近养龙虾实在是太火了,有去年春节期间的Deepseek的感觉,突然就爆了。我在观望差不多一个月后,回学校的时候也打算自己在树莓派上部署一个;虽然没有这么多钱能接高性能模型的API,但是自己上手部署一下也能让自己对它的内容和架构有一定的了解。
由于之前的树莓派是用来打比赛的,一直装的是树莓派官方的操作系统。过年前学了一下ROS2,对Ubuntu比较感兴趣,于是就打算再给树莓派安装一个Ubuntu系统,然后在Ubuntu系统的基础上进行龙虾的部署。
在我安装系统的整个过程中,遇到了各种各样我之前安装官方系统从来没有遇到过的问题,包括烧录系统后我的电脑识别不了SD卡也打不开SD卡以及系统的镜像文件下载错误等等问题,于是就有了这篇博客,用来记录一下我遇到的坑并介绍该如何解决它们。
2.常见的文件操作系统
在介绍树莓派系统烧录之前,先总结一下常见的文件操作系统都有什么。
2.1 什么是文件操作系统
文件操作系统就是对文件进行管理的一个系统。文件主要存在硬盘中,那就会涉及到硬盘的管理方式,而完成这个管理的就是所谓的文件操作系统,它涉及地址的寻址、数据的存储方式、可存储的单个最大文件大小等等协议。在Linux中,我们都说所有文件都是挂载在一个根节点下的;而对于Windows而言,文件系统是分盘符进行管理的等等,这些就是所谓的文件操作系统,它决定了我们如何存储文件、如何查看文件以及如何操作文件等。
2.2 常见的文件操作系统
不同的操作系统支持不同的文件操作系统,一些操作系统不支持的文件操作系统就可能无法在系统中正确的打开硬盘或是文件,下面以常见的四大系统为分类介绍常见的文件操作系统。
2.2.1 Windows常见的文件操作系统
微软 Windows 操作系统家族主要使用的文件系统,特点是兼容性好,适合个人电脑和办公环境。
| 文件操作系统系列 | 分系列 | 特点和功能 |
| FAT,File AllocationTable | FAT12 | 最早的版本,用于软盘和早期的小容量存储。簇大小固定,管理能力弱,现在已很少见 |
| FAT16 | 支持最大 2GB 的分区,曾广泛用于 DOS 和 Windows 95。不支持长文件名(需通过扩展实现) | |
| FAT32 | 支持最大 2TB 的分区,是 U 盘和移动硬盘的通用格式。兼容性极佳,几乎所有设备都能识别,但不支持单个文件大于 4GB,支持跨平台 | |
| exFAT,Extended File Allocation Table | 微软专为闪存设备(如 U 盘、SD 卡)设计。解决了 FAT32 的 4GB 文件大小限制,支持超大文件和分区,且比 NTFS 对闪存更友好,支持跨平台 | |
| NTFS,New Technology File System | Windows NT 及之后系统的默认文件系统。支持文件权限、加密、压缩、日志功能(防止数据损坏),适合机械硬盘和固态硬盘。但在 macOS 或 Linux 上通常需要额外驱动才能写入 | |
2.2.2 Linux常见的文件操作系统
Linux 系统拥有丰富的文件系统选择,针对服务器、桌面和嵌入式环境有不同的优化。
| 文件操作系统系列 | 分系列 | 特点和功能 |
| ext系列,Extended File System | ext2 | 早期的 Linux 标准,无日志功能,简单稳定,适合 U 盘等易损设备。 |
| ext3 | 在 ext2 基础上增加了日志功能,提高了数据安全性,防止意外断电导致文件系统损坏。 | |
| ext4 | 目前 Linux 发行版的默认文件系统。支持更大的文件和分区,性能更好,具有延迟分配等高级特性。 | |
| XFS | 高性能的日志文件系统,特别擅长处理大文件和高并发 I/O,常用于服务器和高性能计算环境。 | |
| Btrfs,B-tree File System | 被称为“下一代 Linux 文件系统”。支持写时复制 (CoW)、快照、数据校验等高级功能,适合数据备份和存储池管理。 | |
| F2FS,Flash-Friendly File System | 三星开发,专为 NAND 闪存(如 eMMC、SD 卡、SSD)优化。在树莓派或安卓设备上使用能显著提升读写寿命和速度。 | |
2.2.3 macOS常见的文件操作系统
苹果公司为其硬件优化的文件系统,注重数据安全和性能。
| 文件操作系统系列 | 特点和功能 |
| HFS+,Hierarchical File System Plus | 旧版 macOS 的默认文件系统,支持日志功能。 |
| APFS,Apple File System | macOS High Sierra 及之后的默认文件系统。为 SSD 优化,支持加密、快照和空间共享,效率远高于 HFS+。 |
2.2.4 其他常见的文件操作系统
| 领域 | 文件操作系统 | 特点 |
| 网络与分布式文件系统 | NFS,Network File System | 允许网络上的计算机之间共享文件,常见于 Unix/Linux 环境。 |
| SMB/CIFS | 主要用于 Windows 网络共享,Linux 和 macOS 也可以通过 Samba 软件支持。 | |
| 光盘与只读文件系统 | ISO 9660 | 标准光盘文件系统。 |
| UDF,Universal Disk Format | 用于 DVD 和蓝光光盘,支持大文件和权限。 | |
| 虚拟与内存文件系统 | procfs/proc | Linux 内核用于暴露进程和系统信息的虚拟文件系统,不占用磁盘空间。 |
| tmpfs | 将文件存储在内存中,读写速度极快,但断电后数据丢失。 |
2.3 查看硬盘的文件操作系统
如果想要查看某个存储介质的文件操作系统是什么,可以直接在电脑中右键该盘,在弹窗中选择属性即可查看。除此之外,还可以借助DiskGenius工具,批量的查看,DiskGenius的中文官网为:DiksGenius中文官网。DiskGenius是绿色软件,无需安装即可运行。如下图所示,就是我的电脑中各个盘符的文件操作系统。其中FAT32是跨平台兼容性较好的文件操作系统,对于像SD卡或是U盘这类跨系统设备,我们常常选择其文件系统为FAT32.

2.4 为设备刷写文件操作系统
有时候会遇到电脑无法打开设备的文件操作系统,这时候需要把设备格式化成支持的文件操作系统。刷写文件操作系统可以借助工具刷写,而且工具巨多,这里主要介绍两个工具:
2.4.1 Rufus刷写
Rufus的官网如下:Rufus官网。它是一个系统烧写工具,也可以用于为树莓派烧录系统;除此之外,它还可以刷写设备。如下图所示,选择设备,然后再选择具体的文件系统即可。

2.4.2 Raspberry Pi Imager刷写
Raspberry Pi Imager也可以进行设备的格式化,但是需要更新到新版本,旧版本是没有格式化功能的。

3.系统镜像文件选择
烧录系统就像我们平时给单片机烧录程序一样,只是系统的文件大小远比单片机的烧录程序要大。对于烧录的系统文件,我们一般称之为镜像文件。这是因为系统文件就是把一整个光盘、硬盘、系统盘,完完整整“复印/拍照”成一个文件,包括了文件、目录、引导、分区表等所有内容,它就像是镜子一样把所有东西都复制成一个文件,所以叫image镜像。
就像我们平时写的文档一样,可以有word格式、PDF格式和markdown格式等等,镜像文件也会有不同的格式,不同格式的镜像文件内部可能在文件的目录、分区等部分有所不同,常见的镜像文件格式有:
| 文件格式 | 说明 | |
| .iso,光盘格式 | 它的标准是ISO 9600文件系统,它的用途主要是在PC机或是虚拟机中安装系统,它有引导和文件系统,可以解压,可以刻录光盘; | |
| .img,磁盘镜像 | 它是整块磁盘/分区的1:1二进制镜像;它不是文件系统,是磁盘的裸数据;不能直接解压,而是要用工具烧录到SD/U盘种;一般用于刷开发盘和做启动盘; | |
| .raw | 即为原始磁盘镜像,和.img基本通用,常用于Linux云服务器镜像、虚拟机磁盘等; | |
| .xz/.gz/.bz2,压缩包 | 它们是压缩格式,里面包含了.img,它们需要先解压才能得到真正镜像,其特点是小且下载速度快; | |
| .vmdk/.vdi/.vhd/.qcow2,虚拟机专用镜像 | vmdk:VMware | 这些是已经装好系统的虚拟硬盘,不用安装,直接开机就能用; |
| vdi:VirtualBox | ||
| vhd/vhdx:Hyper-V | ||
| qcow2:KVM/QEMU,Linux 服务器虚拟化 | ||
除了文件格式的不同之外,同一个系统在不同的硬件设备上也会有不同,可根据这些命名要素确定自己设备的操作系统:
| 命名要素 | 对应设备 |
| x86 | 32 位(老电脑,基本不用) |
| x64 / amd64 | 64 位 PC(Intel/AMD 都用这个) |
| arm64 / aarch64 | ARM 64 位(树莓派、手机、ARM 服务器) |
| riscv64 | RISC-V 开发板 |
系统镜像文件的选择也极其重要,如果选择不正确极其可能导致烧录失败。比如我一开始用的是Ubuntu的.iso的镜像文件烧录的,最后就导致了我烧录完后根本打不开SD卡,就是因为分区表和文件系统的不同导致的。
4.树莓派系统烧录的本质逻辑
4.1 分区表
前面介绍到,镜像文件会包括分区表等内容,那分区表是什么呢?我们都知道树莓派系统都是基于Linux的,在实际的系统烧录过程中,本质是把一个文件烧录进SD卡,然后整张SD卡就会被分为两个盘符。一个就是启动区,一般叫boot分区,文件系统是FAT32;另外一个就是系统区,一般叫rootfs分区,文件系统是ext4;这就是分区表的作用了。
分区表主要有两种:
| 分区表 | 说明 |
| MBR,旧标准 | 主要支持 FAT16/32、NTFS。单个分区不能超过2TB; |
| GPT,新标准 | 支持所有现代文件系统(NTFS、ext4、APFS等),且支持超大容量硬盘; |
在我们前面介绍的Rufus软件格式化SD卡时,就有分区表(分区类型)的选项。由上表可知,不同的分区表是支持不同的文件操作系统的,就决定了我们最后刷写系统时能否在电脑上打开SD卡。
4.2 镜像文件类型和文件系统导致的烧写失败
前面介绍了镜像文件类型,可以知道的是,如果我们要给树莓派烧写系统,我们应该选择的是.img或是.xz/.gz/.bz2压缩包的格式,当然压缩包需要先解压然后烧录里面的.img格式。
我一开始烧写的是.iso格式的镜像文件,就导致了烧写失败。失败的主要表现就是我的Windows电脑无法识别SD卡而且一直提示我SD卡没有可识别的文件系统,要求我格式化,且在“此电脑”种,分看到两个盘符,两个盘符什么内容都看不到。

然后可以到DiskGenius软件中,看一下两个盘符的文件系统都是什么。可以看到,一个是ISO9660,一个是FAT12;不过按道理来说,FAT12在Windows的电脑上,应该是可以打开的,但不知道为什么无法打开。

上面是用Raspberry Pi Imager烧写时出现的情况;但是我们如果用Rufus烧录的话,却不会出现这样的问题。如下图所示即为用Rufus烧录的选项设置,我们可以指定烧录后的文件系统是什么,这样烧录进去之后是完全可以正常的打开SD卡的。当然,这里我一开始是选错了版本的,我选择了amd64,这个是给AMD的CPU或是Intel的CPU用的,树莓派是ARM架构,不适用。

我们可以用DiskGenius来验证烧写进去之后的文件系统是什么。如下图所示,可见,烧写进去之后就是FAT32的操作系统,而且“此电脑”中也可以正确的打开SD卡。

4.3 树莓派中Ubuntu的正确烧写步骤
前面介绍了我之前踩过的坑,所以我们现在可以知道:
要在树莓派中烧写Ubuntu,需要选择.img的镜像文件;这个镜像文件可以在Ubuntu的官方上下载,记得要下载专属于树莓派的版本,其网站如下:树莓派Ubuntu版本官网。下载了这个镜像文件后,按理说我们可以用任何系统烧录软件将其烧写进SD卡中。

除了上面的手动下载.img镜像文件然后用系统烧录软件进行烧写外,我们也可以直接在Raspberry Pi Imager软件中选择对应的Ubuntu版本进行下载安装,按下图所示直接进行安装即可。
这两种方式下载后的Ubuntu的SD卡都是可以正常打开的,然后我们在启动区中添加相关的配置文件就可以用电脑连接树莓派了。

5.总结
对整篇博客总结下来,要在树莓派中烧录非官方系统可以采用如下方法:
方法1:手动下载.img镜像文件,然后用Rufus或是Raspberry Pi Imager烧写软件烧录;
方法2:如果Rasberry Pi Imager软件支持对应的系统,尽量在软件中直接烧写;
在系统镜像文件的格式正确的前提下,用Rufus和Raspberry Pi Imager都是能够正常打卡SD卡的;如果是不正确的格式,用Rufus可指定烧写的文件操作系统,而Raspberry Pi Imager可能由于内部原因往往会出问题。总结下来就是:选择正确的镜像文件类型并尽量直接在Raspberry Pi Imager中烧写支持的系统。
除此之外,我们还介绍了文件操作系统,并讲解 了如何利用Rufus和Raspberry Pi Imager来格式化SD卡以及用DiskGenius查看设备的文件操作类型。


445

被折叠的 条评论
为什么被折叠?



