《树莓派学习指南(基于Linux)》——1.4 将Raspbian烧录到SD卡

简介:

本节书摘来异步社区《树莓派学习指南(基于Linux)》一书中的第1章,第1.4节,作者:【英】Peter Membrey ,【澳】David Hows ,更多章节内容可以访问云栖社区“异步社区”公众号查看

1.4 将Raspbian烧录到SD卡

树莓派学习指南(基于Linux)
将Raspbian烧录到SD卡与简单的文件复制稍有不同。我们下载的镜像文件是一份完整的SD卡内容克隆。为了完成烧录的工作,我们需要使用前面提到的一些工具。

注意 你所下载的SD卡镜像文件被打包在一个zip压缩包里。在Windows 7下,双击即可以文件夹的形式打开zip压缩包。将SD卡镜像文件复制到自己的文件夹下以备使用。在Mac OS X下,双击zip压缩包后SD卡镜像文件将会自动被解压缩到“下载”(Downloads)目录中。

使用Image Writer进行烧录(Windows)
在Windows下推荐使用Image Writer这一工具进行烧录,你可以在树莓派下载页上找到它的链接,我们需要的是如图1-7所示的zip压缩包。

ab312d7c221c7dc6fe156a27b4cd89ab0e144eeb

将zip压缩包解压到任意文件夹,双击其中的Win32DiskImager,你会看到如图1-8所示的警告信息。

1.单击Extract All(提取所有文件),在弹出的对话框中记得勾选“Show Extracted Files When Complete”(完成时显示提取的文件)。

2.单击Extract(提取),稍等片刻后你就会看到解压后的文件夹了。

3.双击Win32DiskImager程序,你会看到如图1-8所示的警告信息。

9c1dbfbe44f3e632cf286a36a4d51357c4dd8765

4.这是由于Image Writer需要申请一些系统权限来实现诸如磁盘擦写等操作,单击Yes(是)继续。

5.你有可能看到如图1-9所示的出错提示信息。别担心,在我们的测试中,这并不影响正常使用。单击OK继续。

6997d7fe5cdd8f4e44543b9fef4c3a505bf03daf

注意 Image Writer只会在程序启动时尝试检测SD卡,所以我们必须在启动程序前将SD连接到电脑上。否则,即便你再插入SD卡,程序也无法检测到它。

6.在Device(驱动器)下拉菜单中选择SD卡相应的盘符(比如G:)。如果下拉菜单是空的,可以尝试关闭Image Writer后再重新打开。在选择盘符时请尽量谨慎,万一错选成了相机的SD卡,你数年积累的照片可能会毁于一旦。

7.选择正确的驱动器(不确定的话,再打开“我的电脑”检查一次吧)和正确的磁盘镜像文件,单击Write(写入)按钮。烧录需要几分钟时间,喝杯咖啡休息一下吧。图1-10是运行中的Image Writer截图,可以看到写入的是写作本书时最新的Raspbian。

e6408fa344b1799edf255161e891a47694c94f58

8.烧录完成后,将SD卡安装到树莓派上。

万事俱备了,快翻到“首次启动”部分开始折腾吧!

注意 细看图1-10可以发现,我们烧录的镜像文件后缀为.img。很多初学者忘记将镜像(.img)文件从zip压缩包中解压出来再烧录。如果再启动树莓派时再次遭遇黑屏,不妨再检查一下是否烧录了正确的文件。

在Mac系统上使用dd命令
我们很想为Mac用户介绍一种简单的方法,把Raspbian镜像写入到SD卡上,但很可惜,实在没法做到像在Windows系统上使用Disk Imager那么简单。Mac系统上有Disk Utility工具,它很强大,却无法处理我们的Raspbian镜像文件。我们试图将镜像转换成.dmg文件1,但还是不起作用。我们也尝试在网络上寻找一些工具来解决这个问题,但是最终我们发现,没有工具能明显地让这件事变得简单。

我们还是不得不使用命令行来解决问题。不过我们不准备在本章详细地解释将要执行的命令,后面的章节还会有介绍,所以先依葫芦画瓢吧。

打开终端(Terminal)
接下来的每个步骤,我们都会一边介绍,一边操作,最后会有一个完整的步骤列表。整个过程还是比较简单的,步骤也不是很多。

第一步,我们在应用程序(Applications)的实用工具(Utilities)目录中打开终端(Terminal)。打开终端后,我们需要使用sudo命令取得root用户权限,相当于Windows系统的Administrator用户。

由于直接操作底层设备是不安全的(比如,不能让病毒直接把数据写入硬盘),所以普通用户无法执行相关的命令。而我们需要将Raspbian镜像直接写入SD卡,必须能够直接操作硬件。root用户对系统拥有完全的操作权限,所以我们可以使用root用户将系统镜像写入SD卡。通过下面的命令来提升为root用户。

c6ae5502bd31115d2e86b0e505bd2cb0e7e5de95

这个命令让我们可以在终端中得到root用户权限的交互环境。你也可以通过sudo(不带-i参数)直接以root用户身份执行单条命令,但是这里我们需要执行多条,所以这样做会方便一些。按下回车键后,sudo会询问密码(就是你登录时的账户密码),输入正确后,你就得到了root用户权限。

注意 得到root用户权限后,我们可以在系统上执行任意操作。但是请记住,这时除了可以将树莓派的系统镜像写入SD卡以外,我们也有可能会弄坏Mac系统。在Unix系统2中使用root用户时,你需要清楚自己在做什么,因为此时系统几乎没有任何保护。执行命令时请一定小心,仔细检查,确认没有错误再按回车键。而且在执行完命令后,请立即退出终端,以防万一。

使用终端写入镜像

OK,下面做什么?首先,我们遇到的第一个问题是确定SD卡对应的系统设备名称。为了避免一不小心抹掉主硬盘上的数据,我们需要先确定一下主硬盘的设备名称,防止误操作。

请在你的Mac上拔出SD卡,运行以下mount命令。

37f9a780c62db64f04f580b9dfb919fbfb5f50e1

你应该能看到类似上面的输出,也有可能会有所不同。我们可以忽略devfs和map这几行,因为这些挂载项是操作系统的一部分。我们需要记住的是第一行,可以看到/dev/disk0s2的挂载路径是/。这是系统盘,也就是主硬盘,一定注意不能随便写入这个设备。也许,你还会看到其他一些条目,那可能是因为你还挂载了网络驱动器或者移动硬盘。那你也应该把这些设备名称都记录下来,现在的挂载状态就是系统的基本状态,我们会和挂载了SD卡之后做对比。

接下来,在Mac上插入SD卡。你应该会在Finder边栏的设备(DEVICES)下看到刚刚插入的SD卡,如图1-11所示。

a949538b54f853d3b5264ccf6b58a56ea54e8f85

因为Mac会自动挂载插入的SD卡,所以我们可以直接回到终端再次执行mount命令,观察一下发生了什么变化。

c1eb9520e3148e0b4aacb3617be652564022d549

我们发现多了一个挂载的设备,在上面的例子中显示的是disk2s2,还能看到该设备的挂载路径是/Volumes/UNTITLED,这个设备正是接下来写入系统镜像的位置。

注意 BSD系统将磁盘划分为多个分区(slice),这个例子里挂载的文件系统位于disk2s2,也就是说文件系统位于第二个磁盘(disk2)的第二个分区(s2)。通过这个路径,可以让用户直接访问指定的分区。不过我们需要的是将数据直接写入设备,也就是磁盘,所以我们接下来将会对/dev/disk2进行操作。

在进行下面的操作之前,我们要先解决一个小问题。由于SD卡的文件系统被自动挂载了,我们无法直接向设备写入数据,而如果我们在Finder中卸载文件系统,SD卡对应的设备也会被Mac系统推出,这样的话我们还是无法直接操作设备。所以我们需要通过Mac系统的diskutil命令手工卸载文件系统,并在设备中保留SD卡。Mac系统也有UNIX标准的umount命令(这个命令在后面的章节会有详细解释),但是如果你想通过umount卸载SD卡,结果就是卸载失败并提示设备正忙。diskutil可以避免这些问题,并成功地完成任务,所以我们通过执行下面的命令来卸载SD卡的文件系统。

至此,我们在超级用户下得到了SD卡对应的设备名称,并从系统上卸载了SD卡的文件系统,这样我们就准备好向SD卡直接写入数据了。

我们将会使用一个古老的命令dd,该命令用于从一个设备读入数据,并写入另一个指定的设备。该命令不会处理文件系统,也不会关心使用的设备是硬盘还是SD卡,而是直接在两个设备上读写二进制数据。我们会在最后一章详细介绍dd命令,这里我们只说明如何将系统镜像写入SD卡。

使用dd命令只需要知道两个参数,读取位置(if参数)和写入位置(of参数)。我们之前已经知道了写入位置是/dev/disk2,那么读取位置呢?如果你按照本章前面的步骤一步步做了,那么树莓派的系统镜像文件应该已经躺在下载(Downloads)文件夹中了,这就是我们的读取位置。首先,在终端中输入:

de4de8f752793853b8497ba9aaf4170539fb4b6e

之后在Finder中打开下载(Downloads)文件夹(或许你放在了其他文件夹中,请打开它),单击并拖动镜像文件到终端窗口。这样镜像文件的路径就会自动输入终端了,你应当会看到类似下面的显示。

ca2200b228cdc8dc322cd56209cd6f4f725d4989

这样我们就指定了读取位置,我们还需要为dd指定写入位置。在之前的操作中,我们已经得到了SD卡的设备名称:/dev/disk2。我们还要加上bs=512这个参数,让dd以较大的数据块写入SD卡(这样可以让写入过程快一些,否则可能需要等上4个小时)。最终整个命令是这样的:

80bb48c66e1305fd6fac8a573a0100d4964586e7

按回车键执行命令,dd需要一些时间来完成整个操作(可能还是需要1、2个小时)。由于系统镜像有2GB大,而SD卡的写入速度并不是很快,所以我们的MacBook Pro也花了接近2个小时才完成整个镜像的写入。你可以出去逛一圈,回来之后应该能看到dd完成了写入,终端回到了命令提示符状态。

在Mac上写入镜像确实比在Windows系统上麻烦许多,不过仔细观察一下这些命令,你会发现通过命令执行操作更简单,更准确,第3章我们还会详细介绍命令行的其他优点。

我们将前面所有的操作步骤整理了一下。如果对于之前的介绍还有什么问题,或者你还有什么不太明白的,可以参考下面的内容。

c4552843641a8486b7259218861b26733476b3a6

到这里,我们准备好了SD卡,让我们来准备启动树莓派吧。

相关文章
|
1月前
|
监控 网络协议 Java
Linux 网络编程从入门到进阶 学习指南
在上一篇文章中,我们探讨了 Linux 系统编程的诸多基础构件,包括文件操作、进程管理和线程同步等,接下来,我们将视野扩展到网络世界。在这个新篇章里,我们要让应用跳出单机限制,学会在网络上跨机器交流信息。
Linux 网络编程从入门到进阶 学习指南
|
3月前
|
存储 安全 Linux
linux系统中u-boot命令的EMMC和SD卡操作命令分析
linux系统中u-boot命令的EMMC和SD卡操作命令分析
106 1
|
9月前
|
Linux C语言 Windows
荔枝派Zero(全志V3S)一键镜像烧录(windows和linux下)
搞到了一块荔枝派Zero,其CPU为全志V3S, ARM Cortex-A7, 最高1.2GHz,不得不说这小东西能达到这么高的主频真是让我大为震撼,废话不多说,先让其跑起来,证明板子是好的
420 0
|
1月前
|
存储 消息中间件 网络协议
Linux 系统编程从入门到进阶 学习指南
本文旨在为初学者提供一个清晰的 Linux 系统编程入门指南,带你步入 Linux 系统编程的世界,从基本概念到实用技能,一步步建立起您的知识体系。
Linux 系统编程从入门到进阶 学习指南
|
8月前
|
Linux
7.4.2 【Linux】特殊设备 loop 挂载 (镜像文件不烧录就挂载使用)
7.4.2 【Linux】特殊设备 loop 挂载 (镜像文件不烧录就挂载使用)
99 0
|
5月前
|
Linux Android开发 虚拟化
我花了半个月,整理出了这篇Linux内核开发学习指南(学习路线+知识点梳理)
我花了半个月,整理出了这篇Linux内核开发学习指南(学习路线+知识点梳理)
|
7月前
|
存储 Linux 内存技术
嵌入式Linux系列第16篇:使用SD卡
嵌入式Linux系列第16篇:使用SD卡
|
10月前
|
存储 Linux Android开发
【Linux系统开发】Study210利用SD运行流水灯程序
【Linux系统开发】Study210利用SD运行流水灯程序
79 0
|
Linux
Linux交叉编译——树莓派工具链安装
Linux交叉编译——树莓派工具链安装
293 0
|
Linux 程序员 开发者
树莓派4B安装docker-compose(64位Linux)
安装了64位Linux的树莓派4B,如何安装docker-compose,本文用实战完成了docker-compose的安装过程,并且将期间遇到的问题一一指出,避免您踩坑
567 0
树莓派4B安装docker-compose(64位Linux)