admin管理员组

文章数量:1566652

原文:Learn Raspberry Pi 2 with Linux and Windows 10

协议:CC BY-NC-SA 4.0

十二、安装 Windows 10!

等等什么?Windows 10?这不是 Linux 的书吗?嗯,是的,这本书的重点是坚定地学习使用 Raspberry Pi 的 Linux,但让许多人兴奋的一个整洁的功能是它新发现的运行 Windows 10 的能力。现在,如果你开始认为我们只是有点异端,那么不要担心,我们在这本书里只是触及了表面。事实上,我们将向您展示如何安装、启动并运行它,这就是基本内容。

那么,为什么我们要用这个来占用宝贵的空间呢?嗯,我们希望你了解树莓 Pi 的所有功能,即使你现在可能不想使用 Windows 10,谁知道微软将来会推出什么呢?简而言之,尽管我们热爱 Linux 和开源,但我们也很务实,这意味着使用我们所能使用的最好的工具。在这一章中,我们只是为你的工具箱提供了一个新的工具。

我以为 Windows 不能在 Pi 上运行?

对于那些读过第一版的人来说(顺便谢谢你!),你可能记得我们在介绍中花了相当多的时间解释,虽然 Raspberry Pi 是基于 ARM 的设备,但它实际上不能运行 Windows RT(微软基于 ARM 的 Windows 版本,常见于平板电脑等设备上)。不用说,如果你检查这个版本中的介绍,特定的方框已被取代!

现在,在您对在 Pi 上运行 Windows 感到兴奋之前,您需要知道的第一件事是,支持 Pi 的 Windows 版本不是您可能希望在 PC 上运行的版本(特别是如果您之前已经“升级”到 Windows 8)。相反,它是一个高度精简的 Windows 版本,只让你可以使用基本功能。你得到了一个强大的 API 来编写软件,但它实际上是为数据收集设备或远程传感器提供动力,而不是台式机。

好吧,所以缺乏一个完整的桌面环境有点令人失望。我不是一个 Windows 的大用户,甚至我也很失望我不能把我的 Pi 变成一个方便的远程桌面机器。然而,也有一些好消息 Windows 10 的物联网版本将完全免费下载并在 Pi 上使用!

Note

本章涵盖的所有这些东西都取自互联网,并且是基于被认为是当前最好的资源。很有可能,当你读到这些的时候,这个平台已经转移了,而这也不再那么相关了。

为什么包括它?嗯,这一转变(Pi 上的 Windows)值得一提,据我所知,微软自己的页面上列出的一些说明和要求实际上是不正确的。所以以此为指导,但是当你读到这里的时候,你可能会发现更新更准确的东西。

查看他们的主要网站,了解最新和最棒的:

https://dev.windows/en-us/iot

什么样的互联网?

物联网(简称 IoT)正在席卷全球,尤其是在最近一年左右。以前互联网上充满了数据。你可以毫无困难地搜索餐馆、收发信息、进行网上银行业务,但最终你只是在移动数据。肯定有用,但不是特别令人兴奋。

走进物联网。通过这种方式来看待互联网,它不再是简单的共享数据的机器,而是可以通过网络与控制器通信的传感器或设备等事物的集合。

例如,你可以给你的树莓派增加一个温度传感器,把它放在某个橱柜里,它会很高兴地坐在那里报告当前的温度。如果你想跟踪和控制温度,比如自己酿造啤酒,这可能会很有用。事实上,我实际上使用我为这本书的第一版买的 Pi 来控制使用固态继电器的建筑中的锅炉。

因此,当我们谈论物联网时,我们真正谈论的是让计算机与周围的世界互动。从感知(如温度、光线甚至辐射)到行动(开关锅炉或打开或关闭大门),这开启了一种全新的互联网使用方式。

物联网面临的一个挑战是,你需要一些东西来实际感知或做一些事情。你可以用一台大盒子的个人电脑,但那并不理想。它们消耗大量电力(尤其是如果你只是想读取温度传感器),需要冷却,通常有噪音,占用大量空间,并且在现代家庭中有些难看。此外,它们很重,真的不是那种你想放在树上或车库顶层的东西。

你需要的是小巧、便携、可靠的东西。理想情况下,你不希望有移动部件(所以没有风扇会在半夜死在你的身上,离你住的地方 50 英里),低功耗要求,并考虑到它可能在恶劣的环境中,你真的不想为它付出太多。如果这听起来像树莓 Pi,那么你不是唯一这样想的人——事实上,Pi 与如此广泛的传感器和设备接口的能力使其成为物联网开发的一个非常受欢迎的系统。你不仅可以访问所有这些设备,还可以使用完整的操作系统,这是像 Arduino 这样的东西无法提供给你的。

但是为什么是 Windows 呢?

就我个人而言,我不太可能使用 Windows,但那是因为我已经使用 Linux 将近 20 年了。我对 Linux 很满意,我喜欢它的工作方式。然而,我最好的朋友之一没有跟随我的领导,留在了 Windows。现在他是一个 Windows 专家,他不太可能想要使用 Linux,尤其是当开始使用一些新的东西时,人们热衷于使用他们熟悉的东西。

如果你不认为这是一个足够好的理由,也许是 Windows 的物联网版本提供了一个完整而全面的 API(。有人能接触到硬件吗?)并与微软的 Azure 云平台很好地集成在一起。这个平台的一个主要好处是一切都是现成的(或者至少在完整版本发布时是这样)。对于 Linux,你需要自己把这些碎片拼凑起来。现在这对你来说可能不是问题,但是让别人替你处理这些事情还是有好处的。

微软也在花大力气围绕物联网建立一个社区。尽管它仍处于技术预览阶段,但你已经可以在网上尝试一些项目了。我们不打算在这里讨论这些,但是如果仅仅是为了了解你的敌人(或者了解其他人是如何解决问题的),这是值得一试的。

入门指南

就像使用 Pi 本身一样,如果我们想让您的 Pi 在 Windows 中启动,我们需要做一些事情。下面是您将需要的东西的快速列表(改编自开发者网站):

  • 运行 Windows 8 的机器
  • 你的圆周率 2
  • 8GB 微型 SD 卡(至少 8GB)–10 级
  • HDMI 电缆
  • 以太网电缆

Windows 8

现在,如果你看看开发者的网站,它声称你需要在你的电脑上安装 Windows 10 才能使用这些工具。它还声称,你必须直接在硬件上运行,而不是在虚拟机上运行(即,你需要 Windows 作为你的主要操作系统——你不能使用 Virtualbox 或 VMWare)。

从我的测试来看,这似乎不是真的。事实上,这些工具在 VMWare 上的 Windows 8.1 下运行得很好,我在将闪存映像写入 SD 卡时没有遇到任何问题。因此,如果你也这样做,你可能会没事。微软可能会在未来做出一些需要 Windows 10 的改变,但 VMWare 至少在处理 SD 读卡器方面没有问题。

你的圆周率 2

好吧,这很重要。Windows 10 需要最新最大的 Pi。最初的 Pi(所有版本)simple 无法胜任这项任务,Windows 也无法运行。您至少需要 Pi 2,尽管可能会继续支持 Pi 的更高版本。微软似乎非常热衷于物联网,我预计他们将在未来很长一段时间内支持 Pi。

8GB SD 卡

你应该已经有了这个。当然,你可能对事物的设置方式很满意,并不热衷于仅仅为了给 Windows 一个旋转而破坏它。在那种情况下,你需要第二张卡。

微软的最低要求是需要 8GB,并且至少应该是 10 级。等级指的是卡的速度,但是现在等级 10 的卡更常见而不是例外。大多数相机需要高速卡,这样它们就可以快速安全地存储大图像,否则会让相机感觉很慢。因此,在你最喜欢的当地商店里找到一张 10 级卡片应该不会有任何困难。

Caution

当我第一次尝试测试时,我使用了一个显然不是 class 10 的 SD 卡。它能够写入图像,尽管它会引导 Pi,但它会以黑屏结束,并且永远不会继续。后来在网上搜索了一下,我发现这是 SD 卡速度慢的一个已知问题,这就是为什么需要 10 级的原因。所以,在你花几个小时试着调试它之前,不要让自己太沮丧,确保你的卡是 10 级的。

HDMI 电缆

关于这个没什么好说的。如果你已经阅读了这本书,那么你已经有了它,如果没有,那么你只需要用它来“看到”Windows 已经在 Pi 上启动了。Windows IoT 下载中包含一个工具,可以让您检测本地网络上的 Pi,因此如果您的电缆在其他地方很忙,您可以只使用以太网。

以太网电缆

类似于 HDMI 电缆,如果你真的不在乎看到网络上的 Pi,并且你真的只是好奇看看 Pi 是否真的可以启动 Windows,那么你可以使用这种电缆。如果你没有 HDMI 电缆,检测网络上的 Pi 将是确定它是否工作的唯一方法。

下载工具

出于他们自己最清楚的原因,微软已经将物联网下载作为 ISO 映像提供。这意味着它看起来和感觉上都像 CD 或 DVD,事实上,如果你愿意,你可以把它刻录成 DVD。然而,它只包含一个可执行文件,所以我不明白他们为什么要这么麻烦。在任何情况下,您都需要 ISO 映像和工具来访问它。在 Windows 8.1 上,(它在 Windows 7 和更低版本上不工作)Windows 将为您处理此事,并将 ISO 映像作为虚拟 DVD 打开-您不需要将其实际刻录到光盘上。

在撰写本文时,您可以从物联网开发中心下载图片,网址是:

http://go.microsoft/fwlink/?LinkId=616847

如果那个链接对你不起作用,在谷歌搜索“Windows 10 Raspberry Pi 2 下载”会为你找到链接。

安装物联网工具

一旦你下载了图像,你应该得到一个类似图 12-1 的文件。

图 12-1。

Windows can see it’s an ISO image

如果您看到这个图标,那么您知道 Windows 能够打开它。不过,你至少需要 Windows 8.1 才能让它工作。

当你双击这个图标时,Windows 会把这个映像作为一个虚拟设备挂载,并假装它是一个真正的 DVD。图像上只有一个文件,这是我们需要运行的文件。您应该会看到类似图 12-2 的内容:

图 12-2。

Opening the ISO image

实际上,我没有将 DVD 驱动器连接到这台机器上(无论如何,它都是一台虚拟机),所以您可以看到 Windows 正在幕后处理这个问题。让我们通过双击安装程序来安装工具。你应该得到如图 12-3 所示的安装程序:

图 12-3。

Installing the IoT tool set

和大多数 Windows 安装程序一样(尽管你是否应该这么做还有待商榷),你可以简单地通过点击下一步并同意一切来完成。转了一会儿之后,安装程序应该会告诉你所有的东西都已经安装好了,你可以退出了。现在一切都可以使用了。

盒子里有什么?

据我所知,你有三件感兴趣的事。首先是一个方便的工具写出固件图像到你的 SD 卡。第二个是你要实际编写的固件镜像,包含 Windows 10 的物联网版本。最后是一个非常小的工具,它可以检测网络上的物联网 Pi 并告诉您它的状态。

让我们带他们去兜一圈…

将固件写入 SD 卡

当您最初在 Pi 上安装 NOOBS 或 Raspbian 时,您已经在 Linux 下完成了这项工作。尽管那时你使用的是一套不同的(经过测试的)工具,并且可能是在 Linux 或 Mac 下完成的。固件映像似乎就是这样,一个我们写入 SD 卡的简单映像,但为了以防微软做一些特殊的事情,我们将使用他们的工具。

首先我们需要找到它。在我的机器上,它安装在以下位置:

c:\ Program Files(x86)\ Microsoft IoT

如果浏览到该目录,您应该会看到类似图 12-4 的内容。

图 12-4。

Finding the IoT tools

我们感兴趣的应用程序是“IoTCoreImageHelper ”,它实际上只是“Image Writer”的一个好听的名字。双击这个应用程序来启动它,你会得到一个界面简单干净的漂亮的小应用程序(图 12-5 ):

图 12-5。

Burning the image onto your SD card

正如你所看到的,我已经填写了基本信息,然后截图了。值得注意的是,最初,SD 卡没有出现,我开始怀疑微软网站是否真的需要一个真正的物理机器来写入 sd 卡。然而,事实证明,我只是忘记了插入 SD 读卡器(哎呀), VMWare 一检测到它,我就可以按下刷新按钮并立即看到卡。因此,一定要确保 Windows 可以看到该设备,并且它显示在“这台电脑”下(尽管对我来说,它将始终显示在“我的电脑”旁边)。我还必须重新插入 SD 卡,以便 Windows 能够看到它,尽管它已经正确地检测到了读卡器。为什么呢?谁知道呢,但有时候扭动电线确实能解决问题。

您需要做的最后一件事是选择您想要写入卡的闪存映像文件。这与 FFU 下的工具位于同一个文件夹中(图 12-6 ):

图 12-6。

The rather originally named flash file

c:\ Program Files(x86)\ Microsoft IoT \ FFU \ raspberrypi 2

一旦你选择了路径,你所要做的就是按下“闪光”按钮,它就会写到你的卡上。您将得到最后一个提示,提示您即将粉碎您的 SD 卡(见图 12-7 ):

图 12-7。

Are you sure you want to erase the card?

现在,根据您使用的 Windows 版本,您将收到一个警告,询问您是否可以“对这台计算机进行更改”。实际上,它不会改变机器,但是它需要提升权限才能直接写入设备(如果您想直接使用设备,Linux 也需要提升权限)。因此,如果您收到以下警告,只需说“是”并继续(图 12-8 ):

图 12-8。

You need to give the program a higher level of access so it can write directly to the SD Card

看起来这个闪亮的新工具实际上是一个旧的控制台(基于文本)应用程序的前端,因为当它编写时,你会在控制台屏幕上看到更新。虽然您可以自己手动运行这个命令,避免使用图形界面,但是您需要自己设计标志和选项。无论如何,当您看到弹出以下窗口时,不要感到惊讶或担心(图 12-9 ):

图 12-9。

Writing the image to the SD card

这可能需要相当长的时间来写入图像文件,尤其是如果你使用 USB 2。即使在使用 USB 3 时,仍然花了足足十分钟才成功写入此图像。如果它看起来很慢,不要担心,它最终会到达那里。

一旦完成,您现在就可以启动您的 Pi 了。

点燃码头

现在你已经在 SD 卡上安装了 Windows,是时候让它实际工作了。像 NOOBS 或拉斯边一样,这一点真的很简单——你所要做的就是插入 SD 卡并给 Pi 加电。这就是事情的全部。

打开电源后,您应该会看到一个黑屏,中间有以下标志,一切正常,一个小小的“请稍候”标志会出现在它的正下方(图 12-10 ):

图 12-10。

Windows boot logo

旋转一会儿后,屏幕会变黑一会儿。这是完全正常的,会持续几分钟。一旦它完成了它需要做的事情(像 Raspbian 一样,在第一次引导时会做一些初始设置,比如扩展分区大小),它将重新引导并启动默认的测试应用程序。

不过,在我们开始之前,您可能会遇到其他情况。当屏幕变黑时,它不是在几分钟后重启,而是保持黑色。现在还不清楚你要等多久,但我设法看完了整集《流言终结者》,私家侦探一声不吭。我决定我应该重启它,再试一次。这一次,它在一分钟左右后重新启动,但它没有加载默认应用程序,而是回到了相同的标志,在变黑和重新启动之前做了一点旋转。冲洗并重复。

正如我之前简单提到的,如果你不使用高速(特别是至少 10 级)SD 卡,这是一个已知的问题。我没有注意到我用的卡实际上不是 10 级的,因为我总是买 10 级的,所以我没有想到要检查一下。

所以,如果你的 Pi 陷入了重启的时间循环,或者它一直呆在黑暗中,那很可能是你的 SD 卡。当我把我的换成真正的 10 级时,第一次就成功了。套用流言终结者的话,我犯这些错误是为了让你们不用犯。

配置时间

现在假设你没有得到死亡的黑屏,你应该得到一个类似这样的屏幕(图 12-11 ):

图 12-11。

Windows getting things ready

考虑到在另一个 SD 卡上浪费的时间,你可以想象我看到这个屏幕有多开心。如果您也看到这种情况,那么您的 Pi 只需要几分钟就可以进行配置了。这是紧接着这个屏幕的屏幕(图 12-12 ):

图 12-12。

Welcome to Windows on Pi

这张截屏看起来有点难,但它主要是向您展示我浏览过的屏幕。在左边我们有一个语言列表,在右下角有一个“下一步”按钮。对我来说幸运的是,英语是我想要的,所以我所要做的就是点击下一个按钮。当然,如果你喜欢另一种语言,你可以在这里设置。

右上角是关于 Pi 的一些基本信息,比如它的名称、IP 地址和它运行的操作系统版本。一旦您按下“下一步”,您将进入显示您的 Pi 完全运行的最终屏幕(图 12-13 ):

图 12-13。

Fully booted Pi

为了节省空间,我从页面中间截取了一个片段。顶部的选项相当简单明了,所以我将把它们留给你去探索。这个页面提供的信息比配置页面多一点,但是我们在这个阶段并不感兴趣。事实上,唯一真正的区别是 Pi 的漂亮图片和连接设备的列表。

关于这个页面的一个有用的特性是,它为你提供了一个到微软“设备上的窗口”页面的链接,这将帮助你开始为你的 Pi 开发软件。在浏览的时候,我甚至看到了编写你自己的设备驱动的教程,所以每个人都可以在上面找到一些东西。无论如何,恭喜你——你是第一个在树莓派上运行 Windows 的人!我不得不承认第一次看到这个启动的时候非常酷,甚至我也很想看看微软会把这个平台带到哪里去!

检测网络上的 Pi。

在我们结束之前,让我们回到工具箱中的另一个工具“WindowsIoTCoreWatcher”。它实际上是一种通过网络检测圆周率的方法。如果你回到这个文件夹(查看本章的第一部分来提醒你它在哪里),你可以双击它的图标来启动它。

如果您的 Pi 运行良好,您应该会看到类似这样的内容(图 12-14 ):

图 12-14。

IoT Core Watcher lets you spy on your Pi

这就是我如何能够在所有黑屏和重启问题之后确定我的 Pi 是半存活的——它显示在这个列表中。当然,它不能告诉您太多,但至少让您知道 Pi 已经启动并运行,最重要的是它的 IP 地址是什么。一旦你开发了自己的应用程序并开始部署系统,能够快速找到你的 Pi(特别是找到合适的 Pi,因为你可能有很多 Pi)这个应用程序会变得非常方便。

接下来呢?

现在你已经安装了 Windows,你能用它做什么呢?好了,基本设置,老实说不是很多。然而,在主应用程序屏幕的左上角有一个“教程”标签。如果你点击它,你将能够找到一些你可以尝试开始的项目。这些是基于硬件的项目,如“Blinky”,涉及打开和关闭 LED。当然,还有更复杂的项目。

如前所述,您可以访问一个开发人员网站:

https://dev.windows/en-us/iot

这个网站包含了大量关于在 Windows 上构建设备的信息、教程和建议。由于这主要是一本关于 Linux 的书,所以我们不会在这方面做更多的详细说明,但是希望这能激起你对物联网的兴趣,也许只是为你的弓增加一根额外的弦。

摘要

这一章是在 Raspberry Pi 上为物联网设置 Windows 10 的快速演练。这个东西仍在预览中,所以事情可能会有变化,但基本内容可能会非常相似。

我们下载了包含工具集和固件的 ISO 映像,提取并安装该工具集,然后使用提供的工具将映像写入您的 SD 卡。

然后,我们启动 Pi,进行一些基本配置,并使用工具集中的 IoT watcher 应用程序来验证 Pi 已经启动并正在运行。我们通过在 Pi 上突出显示 Windows 的最佳访问网站来结束这一部分。

Pi 上的 Windows 仍然有点争议,但我认为它是将 Raspberry Pi 作为计算平台的一大进步。当然,它最初只是为了学习计算机如何工作,但它已经远远超出了这些最初的目标。它有强大的 Linux 支持,现在微软也加入了他们自己对该平台的支持。这对 Raspberry Pi、我们、用户和开发者来说都不会是坏事。

十三、TOR

在这本书的过程中,我们讨论了许多不同的方法,你可以用它们来解决日常生活中的问题。这些项目中的许多都是关于寻找在家里使用你的树莓 Pi 来解决小问题的方法。在这一章中,我们将讨论 Tor 软件的使用,它不仅可以在家里使用,还可以在外出时保护你的隐私。

出于保护你的隐私的目的,最好先了解一下 TOR 是什么以及它是如何工作的。TOR 是洋葱路由器的缩写,这是一款允许匿名互联网通信以保护您隐私的软件。现在,你们中的许多人会问“为什么我在家里需要这个”,事实是,在正常情况下,人们不应该在家里需要隐私保护。遗憾的是,在某些情况下,您可能希望确保匿名和隐私。最近有一些公开的案件,ISP 一直在使用间谍软件,并注入永久跟踪 cookies 到他们的客户的互联网流量。这样做是因为用户的浏览习惯可以卖给广告公司,广告公司可以利用这些数据来创建更有针对性的广告资料。

除了 ISP 对你的监控,TOR 软件的下一个主要用途是在旅行中。这正是树莓派因其尺寸、便携性和低功耗需求而大放异彩的地方。假设您正在旅行,需要连接到您的银行快速转账,以继续您在旅途中的享受生活。目前,你住在一个小旅馆里,旅馆里的任何成员都可以使用两台公共计算机。你可以想象,这些可能不是最好的电脑使用,因为你不知道什么病毒或其他恶意软件安装在这台电脑上。此外,您无法知道网络上还潜伏着什么其他东西来恶意获取您的银行信息。这就是 TOR 和您的 Raspberry Pi 的用武之地,您可以安静地连接您的 Pi 来代替 PC,使用它的 USB 来连接电源、显示器、以太网、鼠标和键盘来连接到您已知的安全环境。然后,您可以使用 TOR 系统(我们将在本章中介绍安装和配置)匿名安全地进行浏览。

如果酒店提供 WiFi 并有支持 HDMI 的电视,您可以使用无线适配器(就像我们在第九章 : WiPi 中提到的那种)和一个小型便携式鼠标和键盘将您的 Pi 连接到电视和更大的互联网。这样,您可以在舒适的酒店房间里浏览,同时仍然保持安全。

TOR 是什么

到目前为止,我可以想象你们都在说“哇。这个神奇的软件是什么,它是如何保护我的隐私的?”。洋葱路由器不仅仅是一个有趣的史莱克参考,它让人们深入了解软件是如何工作的(见图 13-1 和 13-2 )。

图 13-2。

How Tor Works, part 2

图 13-1。

How Tor Works, part 1

TOR 的工作原理是,在互联网上分布着许多专门的用户运行服务器(称为中继),你可以连接到这些服务器,还有一个目录服务器,它知道所有不同的中继服务器。您(最终用户)连接到目录服务器,下载所有中继的列表,并创建由许多不同中继组成的“虚拟电路”。

然后,该软件接受一个互联网请求,并对其进行多层加密(见这里的洋葱隐喻)!).然后,分层加密数据的大块(洋葱状)被发送到虚拟电路中的第一个继电器,第一个继电器移除顶层加密,向它展示电路中的第二个继电器。第一个继电器将现在稍微小一点的洋葱转发到第二个继电器,重复这个过程,直到它到达电路中的最后一个继电器。

然后,电路中的最后一个中继可以将原始的未加密互联网流量发送到最终目的地。然后,流量可以使用与之前相同的加密方法沿着相同的路径反向传输。由于每个节点只知道序列中的下一个节点,所以电路中的任何一个继电器都无法确定起点和终点在哪里。由于各个中继之间的所有通信都是加密的,因此通信内容不会被窃听。

正如你所看到的,洋葱式 TOR 系统提供了一个很好的解决方案来实现匿名和安全的互联网连接。然而,它确实有一个弱点;只有当在任何给定时间 TOR 网络上有大量用户时,TOR 才能提供足够的安全性。除非在给定时间有许多用户使用各种中继,否则理论上在端节点或目的地的某个人有可能辨别出原始用户。如果你回想一下前面 TOR 如何工作的例子,想象一下如果所有这些节点中只有一个用户。知道了谁在网络上,就很容易看到那个唯一的人在向哪里发送流量。值得庆幸的是,对于每一个使用 TOR 的人来说,在一天中的任何给定时间,都有大约 200 万人从世界各地直接连接到 TOR。

安装 TOR

和你想使用的任何软件一样,我们首先需要安装它。在安装任何新的软件包之前,我们应该将您的系统软件更新到最新版本,这样您就可以继续运行以下命令来更新您的系统。当然,如果您最近更新了,您可能不需要运行这些命令。请记住,如果您必须运行 rpi-update,您可能需要重新启动以下程序。

sudo apt-get update

sudo apt-get upgrade

sudo rpi-update

随着您的系统更新,我们可以期待得到 TOR 安装和工作。有很多方法可以安装 TOR 供您使用,最简单的方法(根据 TOR 项目网页)是安装 TOR 浏览器包。这个包附带安装的 TOR 应用程序和一个专门的浏览器,该浏览器被配置为与 TOR 应用程序一起工作。对我们来说不幸的是,这个包还不能和 Raspberry Pi 一起工作,所以我们必须采取一个稍微不同的方法。

首先,让我们安装核心 TOR 应用程序,它执行我们前面讨论的所有路由和中继发现。为此,请运行以下命令:

sudo apt-get install tor

Reading package lists... Done

Building dependency tree

Reading state information... Done

The following extra packages will be installed:

tor-geoipdb torsocks

Suggested packages:

mixmaster xul-ext-torbutton socat tor-arm polipo privoxy apparmor-utils

The following NEW packages will be installed:

tor tor-geoipdb torsocks

0 upgraded, 3 newly installed, 0 to remove and 4 not upgraded.

Need to get 2,589 kB of archives.

After this operation, 7,024 kB of additional disk space will be used.

Do you want to continue [Y/n]? y

一旦安装过程完成,TOR 应用程序将自动启动并运行。我们应该做的第一件事是检查进程是否正在运行,因此运行以下命令来列出所有正在运行的进程,并专门搜索 to 进程

ps –ef | grep /usr/bin/tor

您应该会在控制台中看到如下内容:

109      14591     1  1 22:01 ?        00:00:09 /usr/bin/tor ˗˗defaults-torrc /usr/share/tor/tor-service-defaults-torrc ˗˗hush

这表明 TOR 应用程序已经启动并正在运行。既然我们已经确认应用程序正在运行,我们应该去调查日志。您可以使用下面的命令打开日志(记住,按 q 退出 less 应用程序)

less /var/log/tor/log

当查看日志时,您会希望在文件的底部看到类似这样的内容。这些行表示 TOR 已经能够获得足够的目录信息来建立电路,它能够连接到 TOR 网络并成功地打开电路。这些是 TOR 应用程序需要执行的基本功能,并表明一切就绪,可以使用了。

Jul 08 22:02:10.000 [notice] We now have enough directory information to build circuits.

Jul 08 22:02:10.000 [notice] Bootstrapped 80%: Connecting to the Tor network.

Jul 08 22:02:10.000 [notice] Bootstrapped 90%: Establishing a Tor circuit.

Jul 08 22:02:12.000 [notice] Tor has successfully opened a circuit. Looks like client functionality is working.

Jul 08 22:02:12.000 [notice] Bootstrapped 100%: Done.

使用 TOR

所以,现在我们已经安装了 TOR,我们需要开始使用它。正如我们之前讨论的,我们无法使用预安装和配置的浏览器。因此,我们需要手动配置我们的浏览器来使用 TOR。我们将配置包含在名为 Epiphany 的 Raspberry Pi 中的默认浏览器,通过 TOR 项目建议的方法使用 TOR;将您的 Linux 系统设置为使用 TOR 作为透明代理。

因此,开始这个过程的第一步是稍微改变 TOR 应用程序的设置。我们想把 TOR 设置成一个“透明代理”,这基本上意味着一个通向更广阔的互联网的通道。我们还希望 TOR 能够进行 DNS 解析,这实际上意味着允许 TOR 解决如何访问 www。阿普瑞斯。com 。为此,我们将以下 4 行添加到/etc/tor/torrc

VirtualAddrNetworkIPv4 10.192.0.0/10

AutomapHostsOnResolve 1

TransPort 9040

DNSPort 53

完成这些更改后,我们需要使用以下命令重启 TOR 应用程序:

sudo /etc/init.d/tor restart

一旦 TOR 守护进程重新启动,最好返回并检查日志以确认一切正常。所以回过头来检查/var/log/tor/log,看看我们在本章的安装 tor 一节中寻找的关于成功引导的相同消息。下一步是设置系统 DNS 以使用 TOR 代理,但是在我们继续进行更改之前,我们需要备份当前设置——以备我们想要返回时使用。我们使用以下内容创建备份:

sudo cp /etc/resolv.conf /etc/resolv.conf.bkp

要返回,只需用原始文件替换 resolv 文件

sudo cp /etc/resolv.conf.bkp /etc/resolv.conf

现在备份已经完成,我们可以继续将名称服务器条目更改为 127.0.0.1,如下所示:

nameserver 127.0.0.1

这是计算中的一个特殊地址,称为回送地址,实际上是一个自引用。使用这个地址的结果是,当任何 DNS 解析被执行时,它将到达 TOR 并被路由出去。有了环回地址,我们需要设置一种方法,通过 TOR 路由所有出站网络连接。为此,我们将使用一个名为 iptables 的应用程序来设置一些本地防火墙规则,以便通过 TOR 路由数据。下面是 TOR 项目编写的一个小脚本,用于路由 TOR 上的所有输出连接。在开始之前,我们需要确保排除任何本地网络地址通过 TOR 路由。如果您通过 SSH 连接,这是非常必要的,因为您可能最终会通过 TOR 将所有打算发送到本地网络的数据发送出去——在那里它将无法工作。

这种变化只是暂时的,将在重新启动时消失。如果您想使这一更改永久生效,那么您需要编辑/etc/resolvconf.conf 并取消对 name_servers=127.0.0.1 这一行的注释。这将告诉您的系统在启动时从本地名称服务器读取。

要进行这一更改,我们只需在下面的脚本中向 _non_tor 变量添加额外的变量,以包含您的本地 IP 范围。下面的脚本包括 3 个最常见的 IP 范围。这些是匹配 192.168.0.X 192.168.1.X 和 10.0.0.X 的 IP。如果需要,您可以添加其他 IP。

#!/bin/sh

### set variables

#destinations you don’t want routed through Tor

_non_tor="192.168.1.0/24 192.168.0.0/24 10.0.0.0/24"

#the UID that Tor runs as (varies from system to system)

_tor_uid=id –u tor``

#Tor’s TransPort

_trans_port="9040"

### flush iptables

iptables -F

iptables -t nat -F

### set iptables *nat

iptables -t nat -A OUTPUT -m owner ˗˗uid-owner $_tor_uid -j RETURN

iptables -t nat -A OUTPUT -p udp ˗˗dport 53 -j REDIRECT ˗˗to-ports 53

#allow clearnet access for hosts in $_non_tor

for _clearnet in $_non_tor 127.0.0.0/9 127.128.0.0/10; do

iptables -t nat -A OUTPUT -d $_clearnet -j RETURN

done

#redirect all other output to Tor’s TransPort

iptables -t nat -A OUTPUT -p tcp ˗˗syn -j REDIRECT ˗˗to-ports $_trans_port

### set iptables *filter

iptables -A OUTPUT -m state ˗˗state ESTABLISHED,RELATED -j ACCEPT

#allow clearnet access for hosts in $_non_tor

for _clearnet in $_non_tor 127.0.0.0/8; do

iptables -A OUTPUT -d $_clearnet -j ACCEPT

done

#allow only Tor output

iptables -A OUTPUT -m owner ˗˗uid-owner $_tor_uid -j ACCEPT

iptables -A OUTPUT -j REJECT

一旦您确认所有需要排除的地址都在 _non_tor 变量中,我们就可以继续运行脚本来设置 tor。因此,继续将该脚本写到 tor.sh 文件中,然后用以下命令执行该脚本

sudo sh tor.sh

现在 TOR 已经设置好了,我们应该继续检查我们是否正确地使用了 TOR(图 13-3 )。TOR 项目再次伸出了援手,他们提供了一个很棒的网站,你可以访问这个网站来确认你是否正确地连接到了 TOR。因此,请将您的浏览器指向 https://check.torproject/的并确认您的输出与图 13-3 相匹配。

图 13-3。

TOR Browser Check

至此,您应该已经启动并运行了支持隐私的 TOR。恭喜你!

禁用 TOR

禁用 TOR 是一件非常简单的事情。您只需要重置 iptables 来删除我们在设置之前运行的所有脚本。为此,我们只需运行以下命令,该命令将刷新 iptables 中的所有内容:

sudo iptables -F

这将禁用所做的大部分更改,但仍会让 tor 守护进程在后台运行,并且还会保留名称服务器的更改。您应该运行下面的命令来停止 tor 守护进程。

sudo /etc/init.d/tor stop

您还需要通过恢复我们之前进行的备份来撤销对 resolv.conf 文件所做的更改。下面的命令实现了这一点:

sudo cp /etc/resolv.conf.bkp /etc/resolv.conf

错误和故障排除

在这个安装过程中,您可能会遇到一些问题。以下是您可能会遇到的一些常见问题以及解决方法。第一个问题可能是:

libkmod: ERROR ../libkmod/libkmod.c:554 kmod_search_moddep: could not open moddep file ’/lib/modules/3.18.7-v7+/modules.dep.bin’

这个问题与您的系统与 iptables 相比有点过时有关。这里的修复非常简单,您需要用下面的命令更新您的 Pi 的内部系统,然后重新启动:

rpi-update

您可能会遇到的另一个错误如下:

iptables v1.4.14: can’t initialize iptables table filter’: Table does not exist (do you need to insmod?)`

这是因为 iptables 命令无法与您的 Pi 的 Linux 内核正确交互。这里有两个解决方案,第一个是运行下面的命令来为 iptables 安装内核模块。

sudo modprobe ip_tables

sudo -i

echo ’ip_tables’ >> /etc/modules

在较新版本的 raspbian 下,这可能不起作用,因此您应该运行 raspberry pi 更新和升级命令:

sudo apt-get update

sudo apt-get upgrade

sudo rpi-update

摘要

在本章的学习过程中,您将了解什么是 TOR,以及在您可能不完全信任您通过其连接的设备的情况下,它是如何保护隐私的。您将学习如何设置 TOR,以及如何配置您的 raspberry Pi 来使用它。最后,您将学会如何从您的 Pi 中禁用 TOR 系统。有了这些技能和 Pi 的便携性,无论你在哪里,你都应该能够安全地浏览。

十四、手动操作——写入 SD 卡映像

在本书的第一章中,我们强调了为什么今天不再需要将操作映像直接写入 SD 卡,因为 NOOBS 会为您处理这些。事实上,NOOBS 让它变得如此简单,你可能会奇怪为什么我们仍然包括这些信息。

好吧,事实是,当 NOOBS 运作并做你想做的事情时,它一切都很好。具体来说,如果你是一个新用户,想安装 Raspbian 或轻松尝试不同的操作系统,那么 NOOBS 可以满足你。但是如果你想做其他事情,比如多次安装不同的操作系统,而不必重新下载镜像 10 次,或者你想把 Raspbian 放在 100 个 SD 卡上(谁知道呢,你可能会这么做),那么你自己直接写 SD 卡,完全绕过 NOOBS,这样会快得多,而且更具有讽刺意味。你可能还记得第一章中的内容,我们的私人侦探拒绝和 NOOBS 友好相处,并且在没有大量劝说的情况下不会上线——在这种情况下,手动下载图像可能是你最好的选择。

获取一些图像

首先,在我们将图像写入 SD 卡之前,我们需要获取图像。幸运的是,Pi 选择的最流行的操作系统(当然包括 Raspbian)在主下载页面上都有图片:

http://raspberrypi/downloads/

这是你之前下载 NOOBS 的同一个地方,你会在 NOOBS 提供的图片下面找到原始图片。在这个例子中,我们将再次覆盖 Raspbian,但是当然你可以使用图 A-1 中显示的页面上的任何选项来这样做。

图 A-1。

Plenty to choose from!

对于 Raspbian(上一张截图中没有显示)你可以选择直接下载或者通过 Bit Torrent 下载。Bit Torrent 是下载 Raspbian 的首选方式,因为它减轻了项目服务器和镜像的负载。然而,你需要一个 Bit Torrent 客户端,有些地方你可能不应该启动它(例如在工作中),有些连接由于 BitTorrent 的工作方式而表现很差(例如移动 3G)。同样,至少在香港,下载性能远不如本地镜像。如果可以的话,试着使用 Bit Torrent,否则,使用直接链接是完全可以接受的。

请记住,我们下载的图像是卡片上应该有的图像的直接表示。如果你只是将图像复制到卡片上,它仍然只是一张上面有 Raspbian 图像副本的卡片。我们需要做的是把图像直接写到卡片上,为此我们需要一些我们之前简单提到过的便利工具。

Note

您下载的图像文件是一个压缩的 ZIP 文件。在 Windows 8.1 上,双击该文件将打开一个压缩文件夹。您需要将图像文件本身复制到另一个位置,如“我的文档”或您的桌面。在 Mac 上,只需双击文件就可以提取图像并将其放入下载文件夹。

在 Windows 上使用图像编写器

推荐用于在 Windows 上编写图像的工具是一个名副其实的图像编写器。您可以在 Raspberry Pi 下载页面上找到该链接,或者访问该链接并选择“外部下载”,这将使其自动下载(参见图 A-2 ):

图 A-2。

Downloading Image Writer

https://launchpad/win32-image-writer

在撰写本文时,Image Writer 已知无法与 Windows 10 一起工作,尽管这可能在您阅读本文时得到解决。如果需要使用 Windows 10,也可以看看树莓 Pi 2 的 Windows IoT(物联网)版本。该工具包包含一个替代的图像写入工具,应该能够毫无困难地将这些图像写入 SD 卡,因为它来自微软,所以它应该可以在 Windows 10 上正常工作。

一旦你下载了 Image Writer,你会发现它是一个可以运行的可执行文件。以前它是以 zip 文件的形式提供的,需要先解压缩,但是看起来他们已经为你编写了一个很好的安装程序。所以首先要做的是——运行安装程序来安装 Image Writer。你首先会从 Windows 得到一个有用的警告(见图 A-3 )。

图 A-3。

The usual Windows warning

我们没有注意到安装和使用该软件的任何问题,但一如既往,请确保您在使用该工具安装未签名的第三方软件时感到舒适。

到目前为止一切顺利——我们已经准备好了成像工具。现在我们只需要提取图像文件。因为它是一个 zip 文件,只要双击它,你就会看到里面的图像文件。您可以看到压缩率(至少在我们看到的版本上)为 69%,这非常令人印象深刻。重要的是在写入之前提取这个文件,否则你将会在你的 SD 卡上简单地写出一个 zip 文件,这根本不能很好地工作。您可以按“提取”按钮,也可以将图像拖到桌面上。两种解决方案都一样有效。

好了,现在你只需要找到图像作者。最简单的方法是按下开始按钮,开始输入“win32DiskImager”,Windows 会自动为你完成(见图 A-4 )。

图 A-4。

Finding image writer in the start menu

一旦你让它运行起来,它将看起来像图 A-5 。

图 A-5。

Image Writer reader to go

在图 A-5 中可以看到,已经有相关的细节填写了。您可以看到图像的路径(实际上我已经将它提取到了桌面),并且可以看到它将被写入的设备(在本例中是 E)。这个版本的 Disk Imager 似乎能够检测到应用程序启动后添加的设备。一旦你填写了细节,你只需要按“写”按钮。这应该会给你一个警告提示,如图 A-6 所示。

图 A-6。

Last chance to change your mind

在这里检查设备名称绝对是值得的,并且最好确保您没有插入任何其他外部设备。例如,你真的不想不小心把图像写到相机的 SD 卡上。我们以前见过这种情况,所以它肯定会发生!

一旦你开始写,你将得到如图 A-7 所示的屏幕。

图 A-7。

Writing in progress

并且最终是图 A-8 中所示的那个。

图 A-8。

Just what it says on the tin

一旦你得到上面的弹出窗口,你就知道取出 SD 卡并在 Pi 中使用它是安全的。通常,当写入这类介质时,您需要弹出设备以确保应该写入的所有内容都已写入(因此,当您“不正确地”移除设备时,Windows 会抱怨是有原因的)。当你写一个磁盘映像的时候,你可以绕过文件系统直接写到设备上。

对,就这样,你完了!如果你选择了 Raspbian 并且正在寻找一些帮助来设置它(也许 NOOBS 因为某些原因不适合你),你可以回到第一章并且从第一次启动开始继续。

在 Mac 上使用 dd

如果您使用的是 Mac,我们希望向您展示将图像写入 SD 卡是多么简单。唉,我们做不到这一点,因为没有一个简单、容易的方法来做到这一点(尽管在您阅读本文时可能有一些,所以如果您不想使用 dd,请务必与 Google 核实)。擅长许多其他事情的磁盘工具,只是不知道如何处理我们的标准图像文件。我们试着把它转换成一个.dmg文件(Mac 的原生图像格式),也不行。我们还查看了您可能已经下载的帮助解决问题的在线工具,但我们没有发现任何比首先手动完成任务更容易的东西。

因此,我们将比原计划提前一点接触命令行。我们不会深入讨论我们实际在做什么,因为这些命令中的大部分稍后会在它们的 Linux 版本中看到。现在,你只需要相信我们。

寻找终点站

首先,我们需要打开终端。可以在Applications下的Utilities目录中找到。为了将下面的内容放入上下文中,我们用我们使用的所有命令的完整副本来结束这一部分。这个过程相当简单;它只是有相当数量的活动部件。

我们打开了终端,现在我们需要使用sudo成为根用户,相当于 Windows 机器上的管理员。

现在,出于安全原因,修补低级设备是危险的(例如,你不希望病毒能够直接写入硬盘),所以普通用户不允许发出该级别的命令。因为我们需要将 Raspbian 映像直接写入 SD 卡,所以我们别无选择:我们需要直接访问 sd 卡。幸运的是,root 可以不受限制地访问机器,所以作为 root,我们可以将映像写入卡中。我们需要使用的命令是:

sudo –i

该命令以 root 用户身份打开一个交互式提示符,并授予“超级用户”权限。您可以使用sudo来直接执行命令,但是因为我们将要执行其中的一些命令,所以这样做更方便。sudo然后会提示您输入密码(通常用于您的用户帐户的密码)。一旦sudo能够确认坐在键盘前的真的是你,你将会在根提示符下结束。

Caution

我们现在有权限在系统上做任何我们想做的事情,虽然这意味着我们现在可以制作我们的图像,但这也意味着如果我们不小心,我们真的会把事情搞砸。在 Unix 下,假设 root 知道自己在做什么,并且几乎没有安全防护。以 root 用户身份运行任何命令时都要非常小心,仔细检查(然后再次检查),只有在完全确定的情况下才应该按回车键。完成后,您还应该关闭终端窗口,以防万一。

好吧,现在怎么办?向 SD 卡写入数据的挑战之一是知道 sd 卡实际上是系统上的哪个设备。你不会想不小心把你的主硬盘误认为它,因为那会有一些不愉快的后果。您通常可以做出一些假设(例如,我们知道/dev/disk0 几乎总是会成为系统盘,所以您永远也不会想要写入这个磁盘),但是为了限制风险,我们将按数字来做这件事。

首先,确保您的 SD 卡没有连接到 Mac,然后像这样运行 mount 命令:

mbp:∼ root# mount

/dev/disk0s2 on / (hfs, local, journaled)

devfs on /dev (devfs, local, nobrowse)

map -hosts on /net (autofs, nosuid, automounted, nobrowse)

map auto_home on /home (autofs, automounted, nobrowse)

mbp:∼ root#

现在,你可能会看到类似的东西,但可能会有一点不同。我们可以忽略 devfs 和地图线,因为它们实际上只是操作系统的一部分。我们感兴趣的是/上标识/dev/disk0s2 的第一行。这是系统盘,我们要确保不碰这个。如果您映射了任何网络驱动器或附加了磁盘映像,列表中可能会有其他条目。没关系,因为在这个阶段我们并不真的在寻找什么特别的东西,我们只是想为你的系统建立一个基准。

好了,现在是插入 SD 卡的时候了。SD 卡是预先格式化的,可以在相机中使用(尽管现在很多相机都会重新格式化它们),所以你应该可以在 Finder 的 Devices 下看到它。对于我们的特殊卡片,它看起来像图 A-9 。

图 A-9。

What you’ll see in Finder after inserting your SD Card

由于卡已经自动挂载,我们现在可以返回并重新运行 mount 命令,看看发生了什么变化。这是我们重新运行时得到的结果:

mbp:∼ root# mount

/dev/disk0s2 on / (hfs, local, journaled)

devfs on /dev (devfs, local, nobrowse)

map -hosts on /net (autofs, nosuid, automounted, nobrowse)

map auto_home on /home (autofs, automounted, nobrowse)

/dev/disk2s2 on /Volumes/UNTITLED (msdos, local, nodev, nosuid, noowners)

mbp:∼ root#

这里我们关心的是添加一个新磁盘,在本例中是 disk2。我们可以从它的挂载位置(/Volumes/UNTITLED)看出这是我们感兴趣的磁盘。所以现在我们知道我们想在哪里写我们的形象。

Info

BSD 系统将磁盘分割成片。在我们的示例中,挂载的文件系统位于 disk2s2 上。这相当于磁盘 2,片 2。这允许您直接引用一个片,但出于我们的目的,我们希望写入设备本身。因此,在我们的例子中,我们将写入/dev/disk2。

不过有一个小问题。当我们安装并使用 SD 卡时,我们不能直接写入 sd 卡。如果我们从 Finder 中弹出它,它不仅会卸载文件系统,还会弹出设备。这对我们没有帮助,因为我们仍然需要设备存在才能写入数据。为了解决这个问题,我们将使用名为“diskutil”的 Mac 专用命令手动卸载文件系统。Mac 确实有通用的 Unix umount 命令(我们将在后面的章节中介绍),但是如果您的 Mac 上的任何东西碰巧在查看 SD 卡,umount 将失败,并声称设备正忙。另一方面,Diskutil 知道这一点,并且通常可以卸载设备而不会有任何问题。对于我们,我们运行以下命令:

mbp:∼ root# diskutil unmount /dev/disk2s2

Volume UNTITLED on disk2s2 unmounted

mbp:∼ root#

在这一切之后,我们获得了超级用户权限,隔离了要写入的设备,卸载了文件系统,这样我们就可以直接写入卡本身。我们现在要做的就是开始写作了!

这项任务选择的工具称为“dd”。这个工具有点老派,因为它只关心从设备读取和向设备写入。它对文件系统不感兴趣,也不知道硬盘和 SD 卡之间的细微差别。它只是读取和写入,而不关心它从哪里读取或写入。这是一个基本的 Unix 原则,我们将在后面的章节中再次讨论。现在,我们将利用这一点在您的 SD 卡上制作一份图像文件的精确副本。

dd 只需要知道两件事,从哪里读取(if=参数)和向哪里写入(of=参数)。我们已经搞清楚了写入位(它将是/dev/disk2 ),但是源代码呢?如果您按照前面的说明进行了操作,那么您应该将图像文件放在您的主区域的下载目录中。将我们需要的信息输入终端的最简单方法是键入:

dd if=

然后,转到 Finder 中的下载目录(或您提取图像文件的位置),单击并按住图像文件,然后将其拖到您的终端窗口。这将为您粘贴完整的路径,而无需您键入任何内容。这意味着您将得到与此非常相似的结果:

dd if=/Users/myuser/Downloads/2012-08-16-wheezy-raspbian.img

现在我们已经指定了输入文件,我们需要做的就是指定我们希望 dd 将它写入的确切位置。由于我们之前的实验,我们知道这将是/dev/disk2。我们还将添加“bs=1M ”,让 dd 以更大的块写入映像(这意味着您不必等待四个小时才能完成)。因此,dd 所需的完整命令如下所示:

dd if=/Users/miggyx/Downloads/2012-08-16-wheezy-raspbian.img of=/dev/disk2 bs=1M

运行此命令可能需要一些时间(即几小时而不是几秒钟)。图像本身的大小约为 2GB,您的普通智能卡阅读器并不是特别快。使用我们的 USB 适配器,我们最近的 MacBook Pro 花了整整 25 分钟。稍后回来后,您应该会发现 dd 已经完成了它的任务,并且您又回到了命令提示符下。

好吧,不可否认,这并不像在 Windows 上写图像那样简单或直接,但是如果你看看我们必须做的一切,使用命令行允许我们以一种非常紧凑和精确的方式表达我们想要的。这是我们在第四章中回顾的内容,在那里我们看到了学习使用命令行的各种好处。

这是我们为了将映像写入磁盘而输入的命令的完整副本。如果我们上面的解释不太符合,或者你不完全确定最终结果应该是什么样的,你可以使用下面的文字记录作为参考,将你的版本与我们的进行比较:

Last login: Wed Sep 19 13:48:40 on ttys000

mbp:∼ pmembrey$ sudo -i

Password:

mbp:∼ root# mount

/dev/disk0s2 on / (hfs, local, journaled)

devfs on /dev (devfs, local, nobrowse)

map -hosts on /net (autofs, nosuid, automounted, nobrowse)

map auto_home on /home (autofs, automounted, nobrowse)

<<SD Card inserted>>

mbp:∼ root# mount

/dev/disk0s2 on / (hfs, local, journaled)

devfs on /dev (devfs, local, nobrowse)

map -hosts on /net (autofs, nosuid, automounted, nobrowse)

map auto_home on /home (autofs, automounted, nobrowse)

/dev/disk2s1 on /Volumes/UNTITLED (msdos, local, nodev, nosuid, noowners)

mbp:∼ root# diskutil unmount /dev/disk2s1

Volume UNTITLED on disk2s1 unmounted

mbp:∼ root# dd if=/Users/pmembrey/Downloads/2012-08-16-wheezy-raspbian.img of=/dev/disk2 bs=1M

mbp:∼ root#

对,有了我们(辛辛苦苦)准备的 SD 卡,终于可以启动 Pi 了!如果你已经安装了 Raspbian 并且你想按照初始配置进行操作,你可以跳回第一章并按照第一次启动时的说明进行操作。祝你好运!

本文标签: 手册树莓派Linux