《从firewire设备引导linux》由会员分享,可在线阅读,更多相关《从firewire设备引导linux(7页珍藏版)》请在金锄头文库上搜索。
1、 从 FireWire 设备引导 Linux 在移动驱动器上安装 在移动驱动器上安装 Linux 级别: 初级 Martyn Honeyford (), 软件工程师, IBM UK Labs 2004 年 8 月 15 日 获得外置驱动器是一种为较老设备注入生机的极好方法,或者允许您在不能(或不 想)改变内置硬盘驱动器的机器上运行 Linux。 假设您想在双引导系统中使用 Linux,但计算机硬盘驱动器中没有任何可用空间。一个解决方案 就是使用“活动的”Linux 发行版,如 Knoppix,它可以直接从 CD 运行。如果是偶尔使用,这 种方法确实可行,但是它有许多严重的缺点: ?您仍需要一些
2、数据文件的永久存储。如果仅使用非常小的文件,可以使用软盘;对于中等大 小的文件,USB 闪存盘可能就足够了,但是它们都不是理想的方法。 ?当使用“活动的”CD 时,要安装自己的应用程序或定制现有应用程序会非常困难,甚至不 可能。 ?使用活动发行版会降低性能,最显著的就是当启动检测所有设备时 但运行时也会降低 性能(因为所有东西都必须从 CD 加载,这通常要比从硬盘驱动器加载慢得多)。 自然,还有其他选择。例如,可以买其他内置驱动器并在其中安装 Linux。但常见的情况是,机 器中可能没有任何可用的驱动器托架(笔记本电脑更是如此,它通常仅允许一个内置硬盘驱动 器)。 或者,您可以使用更大的驱动器
3、替代当前的驱动器,并在由此得到的额外空间中安装 Linux。不 过,这是一个花费时间的选择,因为它需要您在新的驱动器上重新安装现有 OS 系统,重新安装 和重新配置所有应用程序及还原所有数据。 一种更好的解决方案是购买外置硬盘驱动器,并在其中安装 Linux。这使您可以不更改现有硬件 和软件,仅在想使用 Linux 的时候连接外置驱动器即可。 可移动驱动器选项可移动驱动器选项 可在其中安装 Linux 的移动设备的范围包括从软盘驱动器到 USB 闪存设备,再到 USB/FireWire 硬盘驱动器等等。 虽然的确可能将 Linux 安装在小容量的设备中,如 1.44 MB 软盘或 32 MB
4、USB 盘,但这些通常 (必然)都是专门的经过缩减的发行版,例如,用于拯救损坏的安装。 不过,外置硬盘驱动器以合理的成本为通用的 Linux 发行版提供最多的灵活性。 外置驱动器来自许多不同的制造商(Maxtor、Western Digital 等等),可以有各种不同的大小。 这些驱动器都包含一个外置盒,放置标准 3-1/2 英寸或 2-1/2 英寸 IDE 驱动器。这些驱动器通常 都通过 USB 或 IEEE1394(FireWire)连接到计算机上。 USB 有两个主要版本,1.1 和 2.0。版本 1.1 最大传输速度为 12 Mbit/s(兆比特/秒),而版本 2.0 支持最高达 48
5、0 Mbit/s 的传输速度。虽然大多数兼容 2.0 的驱动器都可向后兼容 1.1,但是 一般最好避免使用 1.1,除非别无选择(因为它的速度比较慢)。 FireWire 标准还定义了许多不同的可能速度,但是实际上,无论何时人们说到 FireWire,他们都 是指“FireWire400”,它支持最高达 400 Mbit/s 的传输。 从速度来看,在 USB 2.0 和 FireWire 之间没什么可选择的:虽然 USB 2.0 报出的速度较高,实 际上因为协议不同,它们都是差不多的。如果您的计算机两者都有,或许使用 USB 更好,而不是 FireWire(后面我会讲明原因),但是如果仅有 F
6、ireWire,则当然只能选择 FireWire。为了获得 最大的灵活性,从大量支持 USB 2.0 和 FireWire 的驱动器中选择一个(比如,我在本文稍后使 用的驱动器)。 页码,1/7从 FireWire 设备引导 Linux2007-5-6http:/ PCMCIA(对于笔记本电脑)的计算机,可以很便 宜地买到 FireWire 和 USB 2.0 卡:例如,我在本文后面使用的 PCMCIA FireWire 卡大概是用 10 GBP(不到 20 美元)买到的。 为了完成本文,我购买了 5-1/4 英寸外置驱动器盒。这是非常灵活的盘盒,它不与任何驱动器一 起提供,可以装入任何标准
7、IDE 设备,包括 3-1/2 英寸硬盘驱动器和 5-1/4 英寸 IDE 设备,如 CD-RW/DVD-RW 驱动器。该盘盒具有 USB 2.0 和 FireWire 连接。 为了将盘盒连接到我的 IBM Thinkpad T30 笔记本电脑,我还购买了 PCMCIA FireWire 卡(内置 USB 端口仅支持 USB 1.1)。 盘盒和 FireWire 卡都比较便宜(分别是 50 GBP 和 10 GBP)。 出于测试目的,我将盘盒与我准备的 13GB 3-1/2 英寸 IDE 驱动器连接 在实际使用时,我 会购买更大容量的驱动器,这些驱动器现在也非常便宜(大约每 GB 50 GBP
8、!) Linux 支持支持 正如您可能期望的那样,Linux 对这些盘盒的支持确实很好。任何遵守“大容量存储设备”的 SBP(Serial Bus Protocol)标准的设备都可以很容易地与 Linux 一起使用。 一般来说,要启用对这些设备的支持,内核需要支持许多内容(直接编译或通过模块)。 对于 USB 和 FireWire,SBP 设备支持都通过 SCSI 仿真实现 即,设备显示给 Linux 就好 像它们是 SCSI 磁盘一样。这是在 Linux 中抽象存储设备的一种通用方法(例如,IDE CD/DVD 驱动器也通常使用 SCSI 仿真连接)。因此,需要下列内核支持: ?SCSI 支
9、持 ?SCSI 仿真 ?SCSI 磁盘支持 另外,根据连接方法,还会需要下列支持: ?对于 对于 FireWire: ?IEEE1394 支持 ?OHCI1394 支持 ?RAW1394 支持 ?SBP-2 支持 ?对于 对于 USB: ?(主机端)USB 支持 ?OHCI 支持 ?UHCI 支持 ?USB 大容量存储支持 显然,您必须完全正常支持其他硬件(显卡等等),根据您实际的硬件情况,可能还需要一些其 他模块。 例如,我使用 PCMCIA (cardbus) FireWire 卡,所以需要添加: ?PCMCIA 支持 ?cardbus 支持 安装安装 现在我们有了外置设备,将开始在其中安
10、装 Linux。 现在安装 Linux 的最容易的方法(当然是我的观点)是连接所有硬件(在这里,包含插入 页码,2/7从 FireWire 设备引导 Linux2007-5-6http:/ FireWire 卡、将 FireWire 线缆连到 PCMCIA 卡和驱动器上、打开驱动器的电源开 关);然后使用您选择的发行版的安装 CD 来引导计算机。 我选择的发行版是 Gentoo(请参阅 参考资料获得相关链接),所以我使用最新的“Universal” x86 Live CD (2004.1)。其他发行版所需的步骤应该会比这里讲述的步骤多或者少。 一旦已经使用安装 CD 引导,如果幸运的话,它应该
11、已经识别了您的驱动器。驱动器应该显示 为 /dev/sdX 下的磁盘,其中 X 是从“a”开始的小写字母。在我的系统中,外置驱动器被检测 为 /dev/sda,但是如果您有其他 SCSI 磁盘(模拟的 SCSI 磁盘),这将发生变化;在那种情况 下,它可能是 /dev/sdb 或其他字母。如果驱动器没有被自动检测,可能需要进一步的步骤 例如,您可能必须通过引导选项来启用 FireWire 或 PCMCIA,或者可能必须手工加载一些内核 模块或类似的其他项(请参阅 参考资料获得故障排除指南的链接)。 一旦驱动器已经被识别,就考虑安装的其余部分而言,它应该确实像内置硬盘驱动器一样运转; 所以您应该
12、可以根据需要对其进行分区和像平常一样安装 Linux。 不过,提醒一句:当决定安装引导加载程序(通常是 GRUB 或 LILO)的位置时一定要小心 我建议不要将其安装在 Master Boot Record (MBR)(通常默认就是这样)中。而是应该安装在外 置驱动器的根分区(或引导分区,如果使用单独的引导加载程序)中。 现在我们已经在设备中安装了 Linux,接着要引导 Linux。从这里可以开始有一些技巧。 引导引导 在讨论引导新的驱动器之前,需要了解一些引导加载程序理论。 引导加载程序通常安装在计算机第一个硬盘的 MBR 中。调用引导加载程序时(BIOS 自动执行 MBR 中的代码),它
13、通常显示可以引导的 OS 的菜单。选择一个给定 OS 引导。 关于此场景应该注意两点: ?OS 选择菜单(通常)从磁盘加载。 ?要引导相关 OS,引导加载程序需要从磁盘读取相关内核。 由于以上操作在加载 OS 之前发生,它意味着所有磁盘读取都必须通过 BIOS 调用的方式发生。 这会涉及严重的问题:即为了直接引导磁盘,您的 BIOS 必须支持通过 FireWire 或 USB 连接的 磁盘。这通常可以看作从这些类型的磁盘引导的一个 BIOS 选项。实际上 FireWire BIOS 支持当 前很少见,但 USB 支持正在变得相当普遍。因此,如果您在相对较新的计算机中使用 USB,应 该可以直接
14、在 Linux 中引导驱动器。 在外置驱动器的 MBR 中安装了 GRUB 之后,当通过 USB 连接时,我可以直接引导该驱动器。 当引导连接的磁盘时很简单地进入了 BIOS 设置程序。外置磁盘将显示为普通的硬盘驱动器:移 动该磁盘使它在引导顺序中位于内置驱动器之前。 我也可以在内置驱动器的 MBR 中安装引导加载程序,并使用它引导 USB 驱动器(这时它在 GRUB 中显示为 hd1 in GRUB)。如果您使用 FireWire,有可能 BIOS 不能直接引导驱动器, 将需要一些其他操作。 幸运地是,因为 Linux 的灵活性,如果您不能直接引导(使用 PCMCIA FireWire 卡,
15、我的情况 肯定是这样!),会有相当简单的解决方案。可以从支持的设备(如软盘驱动器、CD、USB key 或主驱动器上的微小分区)执行初始引导步骤,然后使用外置驱动器进行其他操作。 构建引导映像构建引导映像 可以使用两种方法引导: ?一阶段引导一阶段引导 页码,3/7从 FireWire 设备引导 Linux2007-5-6http:/ /sbin/init)继续进行初始 化。 ?两阶段(两阶段(initrd)引导)引导 内核引导、安装初始 ram 磁盘(initrd),执行进一步的可定制初始化,然后安装根文件系 统并继续进行初始化(通常也是通过调用 /sbin/init) 这两种方法都有自己的优点和缺点。 一阶段引导一阶段引导 为了使用一阶段引导,我们需要构建内核,其具有安装内置根文件系统所需的所有驱动器(其他 任何驱动器都可以在正常初始化过程中,在能够从根分区加载的模块中构建)。 如果我们要从非常小的设备引导(如软盘),最好的方法是构建的内核仅具有足够使我们可以安 装根外置文件系统的内置驱动器 然后将其他所有项构建为模块。例如,我内置了