第2章
结识树莓派
2.1 简介
在本章中,我们将树莓派连到计算机上,以便能够使用它。下载NOOBS安装程序并将其复制到树莓派的SD卡上,启动树莓派。本章将分别介绍如何在Windows、MacOS X和Linux 3种系统上完成这项工作。
2.1.1 Windows
对于Windows用户,本章中的程序是在Windows 10操作系统上开发的,应该能够适用于后续Windows版本。也可以在Windows 7上开发,但是我没有试过。需要说明一下,我并不是在真正的Windows 10系统上开发的,而是使用了虚拟机。当然,在开发效果上,这二者应该没有什么不同。
2.1.2 MacOS X
本章中的程序应该适用于任何版本的MacOS系统。MacOS是一个非常成功的UNIX风格的操作系统,拥有漂亮的图形界面,但是苹果公司有时不遵守UNIX风格,特别是试图增加安全性时。本章中的程序是在MacOS 10.12.6(又名Sierra)上开发和测试的。
2.1.3 Linux
对于Linux用户,本章程序是使用Raspbian 4.9和Xubuntu 16.04LTS开发的,但是它应该适用于任何能够安装SD卡的Linux版本。
正如你可能已经知道的,Raspbian是树莓派的操作系统,它与许多最流行的发行版相似,并且是Debian推荐的Linux操作系统。显而易见,如果你朋友的树莓派有合适容量的microSD卡和可选的USB microSD卡适配器(在2.2节中列出),你可以使用朋友的树莓派,将系统装在自己的microSD卡上。
2.2 所需工具
- 一款树莓派,配有键盘、显示器和电源。正如在第1章中所讨论的那样。
- microSD卡,容量至少为4GiB,优选8GiB或更大。
- 其他计算机,下文中指你的台式计算机。
- microSD读卡器。读卡器可以内置到台式计算机中,也可以作为USB外围硬件。
- 宽带,可供你的台式计算机和树莓派连接互联网。我们将假设所有的树莓派项目都是支持WiFi的。
- 你可能还需要administrator/root/system的权限密码。
- MacOS X用户:需要下载适用于Mac的SD存储卡格式化工具。下载网址为https://www.sdcard.org/downloads 。
- Linux用户:需要GParted和dosfstools。
GParted应用程序是大多数Linux发行版的标准部分,而dosfstools通常默认安装。 - NOOBS,来自树莓派基金会,下载地址为https://www.raspberrypi.org/downloads/noobs/ 。
2.3 硬件设置
下面是设置树莓派的方法。首先要准备好microSD卡,如果需要连接键盘和显示器,则按照以下步骤操作。
2.3.1 3B+型树莓派
在图2-1中,标出了3B+型树莓派的各个接口的名称。
硬件设置非常简单。选用USB接口的键盘和鼠标,直接插入一个或多个USB插口(为了节约USB插口,可以把鼠标插入键盘上的USB插口)。选用HDMI连接线,连接显示器到树莓派的HDMI接口。
2.3.2 Zero W型树莓派
Zero W型树莓派的设置稍微复杂一点。在图2-2中,标记了Zero W型树莓派的各个接口名称。
将OTG主机电缆连接到USB Micro B接口。虽然这种连接器与电源端口相同,但它们是不可互换的。不能从USB接口给树莓派供电,电源端口也不能连接USB。树莓派的早期版本实际上允许从USB连接到5V轨,但这是设计中的缺陷,并且已经被修复了。将键盘插入OTG电缆的USB-A接口,将鼠标插入键盘上的USB-A接口。
将你的mini-HDMI接头接入树莓派上的mini-HDMI接口,如果你有mini-HDMI到HDMI的转换适配器,那么可以从显示器将HDMI线接入适配器,如果你有mini-HDMI到HDMI的接线,那么可以将接线的HDMI一端直接接入显示器。
2.3.3 两型树莓派
首先,需要给树莓派接上电源。然后,安装microSD卡,并且在卡上加载操作系统,否则,树莓派不会执行任何引导程序或者任何有用的操作。
2.4 用NOOBS安装Raspbian
我们将使用NOOBS(New Out Of Box Software)安装程序在树莓派上安装Raspbian。首先,我们先解释一下相关术语。
2.4.1 什么是NOOBS
NOOBS是树莓派基金会推出的软件安装程序。采用NOOBS在microSD卡上安装操作系统,操作方便,并且对Windows系统支持良好,克服了以往安装过程复杂、对Windows系统支持差的问题。
这里有一个问题,在引导时,操作系统通常只读取一种磁盘格式。树莓派只知道FAT32格式,这是源自MS-DOS时代的标准磁盘格式,也是出厂时为了方便通常采用的格式化格式。Linux(包括Raspbian)通常从Linux文件系统引导。如果你使用的是Windows或MacOS X,那么手动创建文件系统并不容易。由于分区(稍后将讨论)只是裸存储设备(在本例中是microSD卡)上的一系列字节,我们曾经必须下载SD卡的映像文件并逐字节地写到卡上。当然,Linux很容易做到这一点,尽管工具(dd)功能强大且笨拙。MacOS X也有dd,但是你必须知道实际裸设备的名称,否则在使用内存时,MacOS X将严重降低卡的性能,差不多要降低到原来的1/10。像往常一样,Windows在没有添加其他程序的情况下不能这样做。
NOOBS可以处理这个过程。选择你想要的操作系统(在本例中是Raspbian),单击它,然后等待。它解压缩已经加载到操作系统中的所需要的分区。
NOOBS也是一个启动管理器,一旦安装完毕,当你启动树莓派时,它就会出现,为你提供进入恢复模式的机会,如果不进入恢复模式,那么将继续启动默认操作系统。如果你的默认操作系统不能工作,并且你选择了恢复模式,那么它将为你提供一些选项和工具。
如果你想节约microSD卡的存储空间,又不太需要恢复模式和其他树莓派的操作系统,可以从树莓派基金会的网站下载Raspbian,并使用传统方式安装它。完整的说明参见https://www.raspberrypi.org/documentation/installation/installing-images/ README.md 。
本书中将使用NOOBS。
2.4.2 什么是Raspbian
Arduino和树莓派之间有一点非常不同,那就是Arduino假设你有台式计算机,而树莓派本质上就是一台计算机。Raspbian相当于Linux操作系统。我们将在树莓派自身的Linux(Raspbian)桌面环境中完成本书中所有项目的编程工作。
对于精通Linux的读者来说,Raspbian就是Debian 9(Stretch)。它是树莓派基金会为树莓派开发的,并且拥有一个叫作Pixel的定制桌面。Debian也是Ubuntu的基础,所以如果习惯了使用Ubuntu Linux,你会感觉Raspbian非常熟悉。事实上,当我使用Raspbian很长一段时间之后,重新使用Ubuntu Linux时,我发现两者很相似,都使用apt包管理器和.deb文件进行安装。
Raspbian操作系统自带了Chromium网络浏览器,它是Google Chrome的开源版本。如果在强大的(相比之下)3B+型树莓派上使用Chromium网络浏览器,会发现它的运行速度有些慢,如果在Zero W型树莓派上使用Chromium,会发现它变得非常慢。然而,我们仍然使用Chromium,因为对于现代网络,Chromium比过去其他解决方案的兼容性更好。
2.4.3 格式化microSD卡
在出厂前,microSD卡已经完成了格式化。如果所使用的microSD卡是新卡,则可以跳过这一步,但如果进行了格式化也不会有坏处。对于其他情况,则都需要格式化micro-SD卡。
将microSD卡放在microSD读卡器内进行格式化。格式化后,microSD卡内包含多个分区。分区是microSD卡上可用作存储空间的一块区域,每个分区可以像一个单独的设备一样工作。我们只格式化一张microSD卡,但如果需要,也可以格式化多张microSD卡。文件系统位于分区内,它包含操作系统实际使用空间所需的所有逻辑结构。目录位于文件系统内(Windows和MacOS X调用这些文件夹)。文件系统中至少有一个目录,你的文件位于目录中。目录中可以有其他目录,但是每个文件系统至少有一个目录。对于不同的桌面操作系统来说,分区、文件系统和目录的规则都是通用的,但是名称和组织形式可能有所不同。
1. Windows
Windows将具有文件系统的分区称为卷。挂载好的卷用盘符来标识。在Windows中,磁盘是物理设备,比如microSD卡和读卡器,并且具有磁盘号。例如,如果把microSD卡放入Windows机器并使用磁盘分区查找它,它将显示为Disk 1。如果打开File Explorer(文件资源管理器),则该卡上的分区和文件系统将显示为USB drive(E:)。
将microSD读卡器(其中已经装有microSD卡)连接至计算机时,操作系统可能会弹出一条消息:Windows正在(试图)为USB大容量存储设备安装新驱动程序。这个驱动程序是必需的,所以让操作系统完成这个驱动程序的安装。
安装完成后,打开Start(开始)菜单,并输入Disk Management(磁盘管理器)。Disk Management窗口将打开,如图2-3所示。
磁盘管理器将在窗口的上半部分列出所有可用的卷。根据大小等选择最像SD卡的那一卷。如果SD卡是新的,它可能显示为UNTITLED。如果卡上已经安装了NOOBS,则可能显示为RECOVERY,并且大小约为783MB。
在磁盘管理器窗口的下半部分,将发现相同的磁盘(在本例中是Disk 1 Removable)。如果查看的是SD卡,你将看到SD卡的正确大小,并在其右侧显示SD卡上的所有分区。此处我们需要删除这些分区。右击每个分区并选择Delete Volume命令即可将其删除。
完成后,整个磁盘将显示为未分配状态。这意味着它的空间没有被占用。右击未分配的空间并选择New Simple Volume命令,将打开设置向导,选择默认值即可,但要确保文件系统是FAT32格式,然后输入卷标NOOBS。需要注意的是磁盘的驱动器号已经更改,但是磁盘号不变。卷将被自动重新分配。
2. MacOS X
在像MacOS X这样的UNIX风格的操作系统当中,所有内容都是文件。每个设备都有一个特殊的设备文件,并且每个分区不管是否已安装,都被列为一个单独的设备—裸设备加上一个数字。但是,UNIX风格的目录系统是一个经常跨越文件系统和设备的大型树形结构。因此,当挂载格式化的microSD卡时,它将被挂载到一个已有目录中。无论该目录是否为空,它都被映射到设备的*目录。
例如,如果将microSD卡(在适配器中)放在Mac的插槽中,并且microSD卡是可读状态,分区是Mac支持的文件系统,那么该microSD卡将被分配设备名(/dev/disk2)。分区变成/dev/disk2s1,其上的文件系统被安装到目录/Volumes/NO NAME内。不同的Mac上,可能有不同的路径和设备名称。
如果没有挂载microSD卡,它将不会显示在桌面上,但是可以通过Disk Utility(磁盘工具)找到它。进入Applications→Utilities文件夹,可以找到Disk Utility。启动它,应该能看到如图2-4所示的窗口。
这张microSD卡上曾安装有Raspbian/NOOBS,所以分区名为RECOVERY。RECOVERY下面的分区被标记为boot,而microSD卡的其余空间被标记为Linux分区,该分区没有被系统占用。如果microSD卡是一张新卡,或者只在数码相机中使用过,那么microSD卡可能只有一个分区,名为NO NAME。继续其余步骤并在最后关闭Disk Utility。至此已经做完了关于microSD卡的准备工作,确保拥有一张可以正常使用的microSD卡。
2.2节介绍了可以在https://www.sdcard.org/downloads 网站下载SD存储卡格式化软件,它是由编写(和销售)SD卡规范的人员提供的工具软件,虽然算不上是Mac的好工具(因为速度很慢),但它能完成任务。通过这个软件,你将拥有一个带有FAT32格式分区的卡,称为NOOBS。该分区将用FAT32文件系统格式化,这是NOOBS所期望的,也是我们想要的。
(1)补充
以前能够使用Disk Utility完成这项工作,但是近年来,这个应用程序的功能已经严重削弱。看起来,苹果公司不想让“技术型”用户对其文件系统有太多控制,以免造成破坏。这正是促使我写技术书籍的原因。“技术型”用户想要知道操作系统是如何管理磁盘数据的,因为总有一天我们可能会更改磁盘分区。
(2)适用于SD卡的格式化软件
启动SDFormatter应用程序时,MacOS X会要求用户进行身份验证,并表示应用程序希望进行更改。没关系,我们确实想做出改变。输入密码,通过验证后应该显示如图2-5所示的窗口。
如果卡上有数据,此时我们并不需要考虑是什么数据,也不必考虑分区表,继续操作并选择快速格式化。如果需要,可以使用Overwrite Format,但是所需时间更长,可能会多用几个小时。无论选择哪种方式,卡片的名称并不重要,但是为了方便起见,我们将其命名为NOOBS,然后单击Format按钮。
3. Linux
在Linux系统中,安装过程与MacOS X中的相同,只是卡名为/dev/sdc,分区为/dev/sdc1,它在目录树上的结点为/media/jim/3764-3231。根据文件系统和组设置的不同,你可能需要使用sudo或gksudo来访问它。
确保已经安装了磁盘格式化程序GParted(见图2-6)。在Ubuntu和Raspbian上打开一个终端窗口(xterm、uxterm、LXTerminal等),输入sudo apt-get install gparted,然后按Return键。Linux将询问你的系统密码是什么,输入密码。你还需要确保安装了dosfstools。在Raspbian或其他Debian衍生的Linux(如Ubuntu)中,都可以使用sudo apt-get install dosf-stools命令。
如果你的Linux系统不是使用Debian风格的apt-get命令来安装软件,则必须为Linux系统查找正确的命令。同样,在一些Linux系统上,默认情况下没有安装sudo,则用su运行命令。
首先,需要在GParted上选择目标设备。默认情况下,它会损坏Linux系统的引导分区,这可不是一个好选择。因此,在GParted窗口中选择GParted→Devices命令,在设备列表中,根据存储空间找到你的卡。例如,如果知道卡的存储空间是16GB,就在设备列表中找到存储空间为16GB的设备。
对于Raspbian用户,在进行格式化时要特别小心,从分区结构来看,你的卡和你朋友的卡看起来很像。如果你的SD卡没有显示在设备列表中,可选择GParted→Refresh Devices命令进行显示。
一旦你选择了设备,窗口就会改变。在窗口中间会出现一个条形框,用来标记各个列:分区、文件系统、标签、大小、已使用、未使用和标识。它列出了什么并不重要,只要它看起来不像错误的驱动器或文件系统即可。单击其中一个分区。
当SD卡上没有任何分区时,我们无法在SD卡上开展进一步的工作。所以选择其中一个分区,然后选择Partition→Unmount命令。对SD卡上的所有分区都进行这样的操作。如果分区不是已安装状态,那么卸载它们的选项也不会出现在列表中。
选择Device→Create Partition Table命令,你将收到一个警告:整个驱动器(物理设备)上的所有内容都将被删除,并且默认情况下将创建一个MS-DOS分区表,这正是我们想要的。GParted将立即开始工作,实际上,SD卡将变为空的,只显示未分配的空间。
选择Partition→New命令,将弹出Create New Partition对话框,由于需要使用FAT32(MS-DOS)文件系统而不是ext2,所以在Create New Partition对话框中选择File System→ FAT32命令,然后给分区标注NOOBS或任何你想要的标签,其他参数保留默认值,如图2-7所示。
至此,还没有完成分区。GParted为了防止用户误操作,还需要用户再进行一次确认。选择Edit→Apply All Operations命令,GParted将询问用户是否确定要这么做,单击Apply Changes按钮。microSD卡是否被重新加载还不明确,需要在桌面上单击盘符图标进行确认。
2.4.4 下载NOOBS
下面将介绍如何下载和解压缩大文件。如果你没有这种需求,可以跳过这部分,继续阅读后续内容。
1.除Raspbian之外的操作系统
在Web浏览器中输入网址http://www.raspberrypi.org/downloads/ ,查找NOOBS Offline Network and Install,选中Download Zip,然后等待。这个下载文件很大,截至编写本书时,其大小已经超过1.5GiB。如果你了解并会使用torrent,那么使用torrent下载可能快得多,但下载的肯定也是ZIP格式的。
如果你想清理台式计算机上的驱动器空间,在启动树莓派之前,最好保留NOOBS ZIP文件,因为有时SD卡会出现问题,比如被你的猫弄坏。
2. Raspbian
在下载之前,请确保树莓派的根文件系统至少有1.5GiB的空间。打开终端窗口,输入df -h。其中一个条目将被列出为已安装在/.上。那是你的根文件系统。如果有超过2GiB的可用空间就更好了。
如果在根文件系统上没有足够的空间存储下载的内容,可能比较麻烦。建议至少准备一张8GB的microSD卡(或略低于8GiB),这样卡上就有足够的空间来存储下载的文件。右击Download Zip的图标,然后选择Save Link As命令,再选择你自己的卡就可以下载。
为了使用GUI工具扩展NOOBS下载,3B+型树莓派可能有足够的RAM,但Zero W型树莓派的RAM空间肯定不足,所以我们得手动完成。打开终端窗口并输入df -h。
DF界面将列出你朋友的树莓派上的所有设备。显然,其中之一是你的NOOBS卡,即使它显示的可能不是这个名字。NOOBS卡应该是空的,并且很可能安装在/media/pi内。
输入cd/media/pi/<...>,将默认目录设置为microSD卡。现在输入unzip NOOBS*.zip。
在等待下载的过程中,我来解释一下为什么在文件名中使用星号,例如NOOBS*.zip。这样,我们就不必输入NOOBS_v2_4_4.zip,因为当你阅读本文时,NOOBS_v2_4_4版本可能已经过时了。树莓派解压缩NOOBS ZIP文件需要很长时间,所以要有耐心,这期间你也可以先做一些别的事情。
2.4.5 安装NOOBS
选择你通常使用的文件管理器,例如Windows中的资源管理器、MacOS X中的查找器以及Linux中的Nautilus、Thunar、PCManFM等。然后,将文件从下载目录(通常称为Downloads)拖曳到SD卡中。不要拖动整个目录,只拖动它的内容。一旦文件复制完成,就完成了NOOBS的安装。
1. Windows
从资源管理器中右击NOOBS卷并进行弹出。完成卸载需要花费几秒,之后,可以将SD卡从读卡器中取出。
2. MacOS X
MacOS X的查找程序(Finder)喜欢将文件隐藏在文件系统*自己使用。它们有时会在启动时对你的树莓派造成混淆,因此我们需要在启动前将它们清除掉。启动终端。最简单的方法是选中并输入terminal.app。在打开的终端窗口中输入cd/Volumes/NOOBS。
MacOS X和Linux一样,终端窗口中都区分大小写。如果除了NOOBS之外还调用了分区,则需要在命令中指明NOOBS的位置。可以使用cd命令告诉MacOS X更改目录。/Volumes的意思是到根目录(记得UNIX风格的目录树底部吗?),然后转到Volumes目录(通常是安装文件系统的目录),再转到NOOBS的子目录,实际上这是SD卡上的。输入ls -a,用于在MacOS X中显示隐藏的文件,并且查找程序(Finder)造成的混淆也变得可见。注意,我的Mac的系统名是Molly。
那些.Spotlight和.fseventsd是什么?._又是什么?它们应该被删除。输入rm -R .*删除它们。
这将删除当前目录及子目录中以“.”开头的所有文件(“.”会使文件隐藏)。我们将在第3章中介绍rm及其标志以及通配符(*)。
输入cd~返回主目录,如果SD卡正在工作,则无法卸载。
现在将NOOBS图标从桌面拖动到删除/弹出按钮,几秒后将完成处理,然后从读卡器中取出SD卡。
3. Linux
使用Nautilus、Thunar、PCManFM中的任意一个,右击NOOBS SD卡并选择Unmount或者Eject Removable Media,几秒后卸载完成,然后将其从SD读卡器中移除。
4. Raspbian
在使用完SD卡之前,需要清理一下。单击桌面上SD卡的图标,然后找到NOOBSv <...>.zip文件,将其拖到回收站,然后清空回收站。只有当回收站被清空时,文件才会真正从SD卡中删除,这正是我们所希望的。
目前,你可能对很多在终端中使用的命令尚不熟悉,在第3章中将再次深入讨论这些问题,之后,你会更熟悉这些命令。
2.5 启动NOOBS
进行验证的时刻到了。你的树莓派已经连上了吗?键盘插上了吗?显示器连接了吗?电源是否已经插到你的树莓派上,但没有插到墙上的插座上?如果所有回答都是肯定的,那么很好。树莓派没有关闭开关,所以现在不要接通电源。
不管你使用的是哪种型号的树莓派,如果树莓派是右侧向上,所有组件都面向你,那么microSD卡就应倒置地插进卡槽,一直插到底。如果插不动,不要用蛮力,因为它有防插错设计。
现在将树莓派的电源线插入树莓派。
如果在此之后出现问题,你需要重新格式化并重新加载SD卡。请注意,除了调整引导分区的大小之外,NOOBS还将重命名SD卡上的所有分区,因此,如果你必须重新格式化SD卡并重新加载它,那么它不再具有卷名NOOBS,你的单个分区也不会是卡上的唯一分区。
一旦NOOBS调整了引导分区的大小(将花费很长时间),之后你就将得到一个弹出窗口,显示NOOBS v-Built:。如果你得到的窗口如图2-8所示,那么恭喜你,它在工作!
2.6 排除故障
如果你的树莓派没有启动,那么可以通过以下方法排除故障:
- 树莓派的电源接通了吗?如果你使用的是Zero W型树莓派,请确保连接的是电源插座,而不是USB插座。
- microSD卡在吗?断开树莓派的电源,移除microSD卡,并重新插入以进行检查。
- 你的显示器连接正常吗?
- 显示器的输入是否设置为树莓派正在使用?一些显示器将根据从哪个输入设备获得信号而在输入设备之间自动切换。如果台式机和树莓派在使用同一个显示器,并且台式机正在工作,那么必须手动将显示器状态切换到以树莓派作为输入设备。如果你有某些品牌的超宽显示器,并且支持分屏显示,应该知道,分屏显示是依靠软件在台式机上自动切换的。由于树莓派没有这个分屏软件,因此必须再次通过手动方式配置显示器,切换到以树莓派作为输入设备的状态。
- 树莓派是否正在正常工作?Zero W型树莓派有一个LED指示灯,这个指示灯可以告诉你它的工作状态。尽管有时指示灯看上去毫无反应,但实际上树莓派运行得不错,只是处于忙状态而已。
- 你的键盘上有灯吗?如果NUM LOCK灯亮起,并且你可以使用Caps Lock键打开和关闭CAPS LOCK灯,就意味着Linux内核正在运行,需要耐心等一会儿。
如果上述方法都行不通,那么可以拔掉电源,把microSD卡放回台式机,看看有没有反应。
2.7 安装Raspbian
当NOOBS完成启动时,应该显示一个类似于图2-9所示的窗口。
在底部的语言设置下拉列表框中设置语言。如果你使用美国键盘,请选择English(US),这很重要,否则一些键不能正常工作。
接下来,在NOOBS窗口中间的菜单中选择Raspbian,如图2-10所示。
然后,单击NOOBS窗口左上角的安装图标,将弹出一个删除驱动器(microSD卡)的警告框,单击Yes按钮,NOOBS就会开始Raspbian的安装过程。这一过程同样比较耗时。
最后,NOOBS将弹出一个对话框,如图2-11所示,表示安装完毕。
单击OK按钮,系统将重新启动,在屏幕左上角将出现一个树莓派图标(系统中每个内核会有一个),并且Linux将启动。其中包含很多消息,你不必阅读所有消息。正常情况下不应该出现任何以红色显示的失败消息,但是当树莓派完全无法启动时,这些消息就变得至关重要。如果你使用的是Zero W型树莓派,要更耐心一点,最终屏幕将变得清晰,并且在等待一会儿后,图形用户界面将会出现,如图2-12所示。
祝贺你,你成功进入系统了!
2.8 本章小结
简单地讲,我们可从https://www.raspberrypi.org/downloads/ 获取NOOBS并安装Raspbian。在下一章中,我们将为项目设置Raspbian,并学习足够的Linux知识,以通过树莓派完成一个又一个项目。