内容


在 Beagle Board 上引导 Linux

以低廉的价格建立有效的 Linux 单板计算机

Comments

Beagle Board 是一种便携式参考板(见图 1),其中包含一个 Texas Instruments OMAP3530 system-on-a-chip (SoC) 处理器 (ARM Cortex A-8 core),最高运行频率为 600MHz。(在本文后面的 参考资料 中可以找到更多系统规格说明的链接)。微型的参考板本身并不是新东西 — Gumstix 等公司多年以来一直提供相似的板,包括一些基于 OMAP3530 处理器的板。我选择 Beagle Board 是因为它是一个廉价的平台,很适合学习如何建立 Linux 和小型系统。对于为自己设计项目的爱好者,为课程创建项目的学校,以及设计低成本装置或瘦客户机的专业人员,它都是合适的选择。

图 1. Beagle Board
Beagle Board 的布局

构建自己的开发环境

引导 Beagle Board 需要三个东西:

  • 带串口的桌面计算机或笔记本计算机(更多信息见边栏 关于主机平台的说明
  • 串行连接器
  • USB 设备线缆,standard-A 到 mini-A

Beagle Board 并不附带线缆或连接器。Beagle Board Shopping List(见 参考资料)列出必需和可选的组件及其链接。这里列出的大多数组件可以单独购买或打包购买。

串行连接

对于串行连接,需要以下组件:

  • IDC10-to-DB9M 串行线缆
  • DB9F-to-DB9F null 调制解调器线缆
  • DB9M-to-USB 线缆(如果主机平台有 RS-232 端口,它就是可选的)
  • USB mini-B male-to-USB A male 线缆

前三种线缆的组合提供串行连接,让您能够通过主机平台上的终端模拟程序观察和控制板上的引导装载器和操作系统。

输入和输出

对于输入和输出,需要以下组件:

  • 已经加电的 USB 3 端口集线器,内置以太网
  • 5mm barrel power plug-to-USB A male 适配器
  • USB mini-A-to-USB A female On-The-Go (OTG) 线缆(可选;通过它的 USB 连接供电)

这些组件让 Beagle Board 上的 Linux 发行版能够发挥更大的作用。内置的以太网提供网络连接。集线器本身提供 USB 端口,通过 5mm power plug 给 Beagle Board 供电。

键盘、视频和鼠标

对于键盘-视频-鼠标 (KVM) 功能,需要以下组件:

  • HDMI male-to-DVI-D male 线缆
  • 数字监视器
  • USB 键盘
  • USB 鼠标

您可能希望通过转换器使用 PS/2 键盘。我的建议是购买 USB 键盘。PS/2 键盘可能可以适用于 Ångström Linux 发行版(本文中描述的演示系统),但是您以后可能想更进一步,而且并非所有发行版都有 PS/2 驱动程序。

您还可能希望使用模拟 (VGA) 监视器或 DVI-D-to-VGA 转换线缆。Beagle Board 不产生驱动这个设置的模拟信号,所以使用转换器或模拟监视器是没有意义的。如果您的监视器不接收数字(HDMI 或 DVI-D)输入,那么应该考虑使用电视和 4 针 S-video 线缆。另外注意,在 Ångström 上还不支持音频,所以不要浪费时间设置扬声器或耳机。

SD 卡

需要至少一个 SD 卡来存储 Linux 和它的引导装载器。如果您不愿意下载软件并对卡进行分区,Special Computing(见 参考资料 中的链接)提供一个解决方法:可以订购一个预先装载了 Ångström 的 4GB SD 卡。

连接组件

收集了所有组件之后,就该连接它们了。首先,按以下步骤连接串口:

  1. 把 IDC10 线缆插入 Beagle Board,线缆的第一针对连接器的第一针(带状线缆上的粉红线朝向板的外角)。
  2. 在 DB9M 端插入 null 调制解调器 DB9F/DB9F 线缆。
  3. 把 DB9F/DB9F 线缆插入主机平台(如果它有 DB9 端口)。否则,把线缆插入 DB9M/USB 线缆,然后把 DB9M/USB 线缆插入主机。

接下来,连接 USB 和电源:

  1. 把 mini-A/USB A female 线缆的 USB mini-A 端插入 Beagle Board 的 USB mini-A 连接器。
  2. 在已经加电的 USB 集线器上插入同一线缆的 USB A female 端。
  3. 把 USB/5mm barrel 线缆的 USB 端插入集线器。
  4. 把 5mm barrel 端插入 Beagle Board 的 barrel 连接器。

注意:还没有把电源连接到集线器。

现在,连接键盘、鼠标和视频:

  1. 把视频线缆的 HDMI 端插入 Beagle Board 的 HDMI 连接器。
  2. 把 DVI-D 端插入监视器。
  3. 把 USB 键盘插入集线器。
  4. 把 USB 鼠标插入集线器。

图 2 显示连接好的组件。

图 2. 连接好的 Beagle Board
Beagle Board 已经与视频、电源、USB 集线器和主机平台连接
Beagle Board 已经与视频、电源、USB 集线器和主机平台连接

现在,要设置控制台了。

设置控制台

了解板上发生的情况的惟一方法是,通过控制台观察它的串行输出。这需要设置一个终端模拟程序。如果在主机平台上配置了串行端口,板上的所有活动就会显示在控制台上,包括引导装载器命令的提示、操作系统登录提示和错误消息。

在 Linux 上设置控制台

要想在 Linux 上设置串行控制台,需要使用 minicom 等终端模拟程序,步骤如下:

  1. 在系统上安装 minicom(见 参考资料 中的链接)。
  2. 运行 sudo minicom -s 命令,作为根用户启动设置过程。
  3. 选择 Serial Port Setup,然后按 Return。
  4. 输入 A 选择 Serial Device 以设置串行端口,切换到 /dev/ttyS0 目录,然后按 Return。
  5. 确认通信设置 (E) 是 115200 8N1
  6. F 禁用 Hardware Flow Control
  7. 确认 Software Flow Control 也是禁用的。
  8. 按 Return 返回到主菜单。
  9. 选择 Save Setup as dfl,在默认情况下就会使用这些设置。
  10. 选择 Exit 退出设置过程并用这些设置启动 minicom。

在 Windows 上设置控制台

对于在 Windows XP 或 Vista 操作系统上设置串行控制台,我建议下载 PuTTY,这是一个用于 Windows 操作系统的免费终端模拟程序(见 参考资料)。在 Session 窗口中单击 Serial,把 PuTTY 配置为串行模式。然后,在 Category 面板的底部单击 Serial。把速度设置为 115200,数据位设置为 8,奇偶校验设置为 None,停止位设置为 1,流控制设置为 None

检查设置

为了检查控制台的设置是否正确,给板供电;可以按 图 2 插入线缆,也可以把 USB standard-A-to-mini-A 设备线缆直接插入 Beagle Board,使用 OTG 电源通过线缆给它供电。如果一切正常,控制台上会出现清单 1 中的文本。

清单 1. 引导装载器的输出
Texas Instruments X-Loader 1.41
Starting OS Bootloader...


U-Boot 1.3.3 (Jul 10 2008 - 16:33:09)

OMAP3530-GP rev 2, CPU-OPP2 L3-165MHz
OMAP3 Beagle Board + LPDDR/NAND
DRAM:  128 MB
NAND:  256 MiB
In:    serial
Out:   serial
Err:   serial
Audio Tone on Speakers  ... complete
Hit any key to stop autoboot:  0
OMAP3 beagleboard.org #

输出末尾的提示来自第二阶段引导装载器,它等待关于如何装载操作系统的指令。

设置操作系统

主机系统准备好了,Beagle Board 也设置完了。现在需要设置操作系统。

对于许多 Linux 发行版,都有在 Beagle Board 上运行的二进制代码可供下载,最受欢迎的是 Ångström、Maemo、Ubuntu 和 Android。这些系统目前都在积极地开发,专业人员和爱好者都为它们提供了演示。本文讨论 Ångström 发行版,这种发行版经过充分测试并且很简洁,它将 Beagle Board 转变成可行的 Linux 桌面机器和不太瘦的客户机。参考资料 中有演示视频的链接和 Ångström 二进制代码的下载链接。

Ångström Linux 发行版

Ångström 发行版包含四个主要组件。必须按以下次序把它们复制到 SD 卡上,因为在卡上引导装载器必须最先出现:

  • 第一阶段引导装载器
  • 第二阶段引导装载器
  • Linux 引导映像 (uImage)
  • Linux 文件系统

Beagle Board 的固件包含一个名为 X-loader 的第一阶段引导装载器。也可以从可移除存储空间(比如 SD 卡)上的 MLO 文件装载 X-loader。X-loader 只能把系统引导到能够装载第二阶段引导装载器的状态;如果不经过这个阶段,第二阶段引导装载器就不能装载到内存中。

Beagle Board 上闪存中提供的第二阶段引导装载器是 U-boot,但是大多数发行版在 u-boot.bin 文件中提供自己的 U-boot 版本。U-boot 对系统进行初始化,然后引导 Linux 内核。也可以从控制台运行它。

最后,Linux 引导映像 (uImage) 引导 Linux 内核,Linux 内核驻留在 Linux 文件系统中的 /boot 目录中。

设置文件系统有几种方法;这里采用的方法需要在开始时多做一些工作,但是比较灵活。另外注意,从 Special Computing 订购的 SD 卡上预装载的 Ångström 也采用这种方法。

下载发行版

组装 Ångström 发行版需要以下文件:

  • Angstrom-Beagleboard-demo-image-glibc-ipk-2009.X-test-20090326-beagleboard.rootfs.tar.bz2
  • MLO
  • README.txt
  • md5sums
  • u-boot.bin
  • uImage

检查下载的每个文件是否是正确的。在一个终端窗口中进入下载的目录,输入 md5sum *,然后对比每个文件的值和 md5sum 文件的内容。

对卡进行分区

这种方法在 SD 卡上创建两个分区。第一个分区是一个 FAT 分区,其中存储引导装载器和内核映像。卡上的剩余空间分配给一个 third extended file system (ext3) 分区。

必须在 SD 卡上创建两个磁盘分区。FAT 分区包含引导装载器和原始 Linux 内核映像。使用 FAT 作为引导分区是因为它是非常基本的文件系统,Beagle Board 在默认情况下能够理解它,不需要引导装载器或操作系统提供的信息。

但是,Linux 根文件系统可以采用 Linux 内核能够理解的任何文件系统格式。这个示例使用 ext3,但是 Journaling Flash File System version 2 (JFFS2) 和 SquashFS 也是合适的选择,尤其是对于基于闪存的存储系统。

现在,把 SD 卡插入主机平台,使用您喜欢的分区工具在 SD 卡上创建两个磁盘分区。创建一个小的可引导的 FAT 分区,然后创建一个大的 ext3 分区。在 Beagle Board 社区页面 上可以找到使用 fdisk 实用程序完成这个过程的详细说明。按照说明,把 FAT 分区命名为 BeagleBoot,把 ext3 分区命名为 BeagleRootFS

移除并重新插入卡,这两个新分区应该挂装在主机平台上了。

把文件复制到磁盘上

现在要把文件复制到磁盘上。一定要按以下次序 复制它们:

  1. 把 MLO 复制到可引导的 FAT 分区。
  2. 把 u-boot.bin 复制到可引导的 FAT 分区。
  3. 把 uImage 复制到可引导的 FAT 分区。
  4. 把根文件系统提取到 ext3 分区。最简单的方法是在命令行上执行以下命令:

    cd ext3FileSystem; tar xvjf downloadLocation/Angst*.tar.bz2

卸载分区

运行以下命令卸载分区:

cd ~; sync; sudo umount BeagleBoot; sudo umount BeagleRootFS

最后,移除 SD 卡,然后把它插入 Beagle Board。

引导 Linux

在主机平台上设置串行控制台之后,把电源线插入 USB 集线器。控制台上应该会出现 清单 1 所示的文本。(注意,如果您的 Beagle Board 是 2009 年 3 月之后购买的,很可能是 Rev C 或更新型号的,具有 256MB 或更多 DRAM。撰写本文时使用的是 Rev B7 Beagle Board,具有 128MB DRAM。但是,引导过程对于所有型号是相同的)。

让 Beagle Board 从卡引导 Linux 有两种方法:

  • 关断电源,在重新供电时按下用户按钮(离板的外边缘最近的按钮)。
  • 在 U-boot 提示上输入以下行,通过设置环境变量从卡引导:

    setenv bootargs 'console=ttyS0,115200n8 root=/dev/mmcblk0p2 rw rootwait'
    setenv bootcmd 'mmcinit; fatload mmc 0 80300000 uImage.bin; bootm 80300000'
    boot

    注意,可以在用 boot 命令引导之前输入 saveenv 命令,这样就可以把这些环境变量写到内存中,让 Beagle Board 总是从闪存引导。

在 Ångström 第一次引导时,它会检查系统上的总线,初始化键盘、显示器、鼠标、以太网适配器和所有其他外设,然后寻找要使用的驱动程序。以后的引导会快得多。

引导完成之后,图 3 所示的图像出现在显示器上。

图 3. 显示器上的 Ångström 引导输出
显示器上的 Angstrom 引导输出
显示器上的 Angstrom 引导输出

使用 USB 键盘输入用户名和密码。如果从串行提示登录,可以使用 root 作为用户名,密码为空。

恭喜!您现在已经建立了一个功能完整的 Linux 系统,它运行 Web 浏览器 (Mozilla Firefox)、电子邮件客户端程序 (Evolution) 和其他几个应用程序,以及一套完整的桌面工具和一个包管理程序 (opkg)。最好的一点是,这个系统在一个微型、廉价、无风扇的计算机上运行,功率消耗小于 4 Watt,这大约是监视器能耗的 1/10,主机系统的 1/25。您已经建立了一个瘦客户机,可以开始使用它了。欢迎加入社区,分享您的想法!


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Linux
ArticleID=425360
ArticleTitle=在 Beagle Board 上引导 Linux
publish-date=09032009