5. 如何加载 MILO

加载 MILO 最常用的方法是通过 Windows NT ARC 固件,因为大多数出厂系统都支持这种方法。然而,加载 MILO 的方法有很多种。它可以从以下位置加载:

5.1. 从 Windows NT ARC 固件加载 MILO

大多数(如果不是全部)基于 Alpha AXP 的系统都包含 Windows NT ARC 固件,这是启动 MILO 和 Linux 的首选方法。一旦 Windows NT 固件运行起来,并且您拥有适用于您系统的正确 MILO 镜像,此方法就完全通用。

Windows NT ARC 固件是一个环境,程序可以在其中运行并回调固件以执行操作。Windows NT OSLoader 就是一个执行此操作的程序。Linload.exe 是一个更简单的程序,它仅执行加载和执行 MILO 所需的足够操作。它将适当的镜像文件加载到内存 0x00000000 处,然后对其进行 swap-PAL PALcall 调用。MILO 和 Linux 一样,使用与 Windows NT 不同的 PALcode,这就是为什么必须进行交换的原因。MILO 将自身重定位到 0x200000,并像以前一样继续通过 PALcode 重置入口点。

在添加 Linux 启动选项之前,您需要将 linload.exe 和您希望加载的适当 MILO 复制到 Windows NT ARC 固件可以读取的位置。在以下示例中,我假设您是从 DOS 格式的软盘启动。

  1. 在启动菜单中,选择“补充菜单...”

  2. “补充菜单”中,选择“设置系统...”

  3. “设置菜单”中,选择“管理启动选择菜单...”

  4. “启动选择菜单”中,选择“添加启动选择”

  5. 选择“软盘 0”

  6. 输入“linload.exe”作为 osloader 目录和名称

  7. 对操作系统与 osloader 位于同一分区回答“是”

  8. 输入“\”作为操作系统根目录

  9. 我通常输入“Linux”作为此启动选择的名称

  10. 回答“否”,您不想在启动时初始化调试器

  11. 您现在应该回到“启动选择菜单”中,选择“更改启动选择选项”并选择您刚刚创建的选择进行编辑

  12. 使用向下箭头获取“OSLOADFILENAME”向上,然后键入您希望使用的 MILO 镜像的名称,例如“noname.arc”然后按回车键。

  13. 按 ESC 键返回到“启动选择菜单”

  14. 选择“设置菜单”(或再次按 ESC 键)并选择“补充菜单,并保存更改”选项

  15. ESC 键将使您返回到“启动菜单”,您可以尝试启动 MILO。如果您不希望 Linux 作为第一个启动选项,那么您可以更改“启动选择菜单”.

在所有这些操作结束时,您应该有一个看起来像这样的启动选择

LOADIDENTIFIER=Linux
SYSTEMPARTITION=multi(0)disk(0)fdisk(0)
OSLOADER=multi(0)disk(0)fdisk(0)\linload.exe
OSLOADPARTITION=multi(0)disk(0)fdisk(0)
OSLOADFILENAME=\noname.arc
OSLOADOPTIONS=

您现在可以启动 MILO(然后是 Linux)。您可以直接从 Windows NT 理解的文件系统(如 NTFS 或 DOS 硬盘)加载 linload.exe 和 MILO。

内容OSLOADOPTIONS被传递给 MILO,MILO 将其解释为命令。因此,为了直接从 Windows NT 启动 Linux 而不在 MILO 中暂停,您可以传递以下内容:OSLOADOPTIONS:

boot sda2:vmlinux.gz root=/dev/sda2

有关可用命令的更多信息,请参见第 6 节

通过 WNT ARC 固件加载 MILO 的另一种(相当隐蔽的)方法是将 MILO 放到 MS-DOS 软盘上并将其命名为fwupdate.exe然后选择“升级固件”选项。

5.2. 从评估板调试监视器加载 MILO

评估板(以及通常从中克隆的设计)包括对 Alpha 评估板调试监视器的支持。在考虑使用此方法启动 MILO 之前,请查阅您的系统文档。以下系统已知包含调试监视器支持:

在您考虑使用此方法之前,您应该注意,早期版本的评估板调试监视器不包含视频或键盘驱动程序,因此您必须准备好通过串行端口连接另一个系统,以便您可以使用调试监视器。它的界面非常简单,输入 help 会显示大量命令。最有趣的命令包括单词bootload在其中。

评估板调试监视器可以通过网络 (netboot) 或软盘 (flboot) 加载镜像。在任何一种情况下,在启动镜像之前,将启动地址设置为 0x200000 (> bootadr 200000)。

如果镜像在软盘上(请注意,仅支持 DOS 格式的软盘),那么您需要键入以下命令:

     AlphaPC64> flboot <MILO-image-name>

5.3. 从失效保护启动块软盘加载 MILO

只有 AxpPCI33 已知包含失效保护启动块软盘支持(< id="noname-section" name="Noname">节)。

如果您没有标准的预构建 MILO .dd 镜像,那么您可能需要构建一个 SRM 启动块软盘。一旦您构建了 MILO,您需要在 Digital Unix 机器上执行以下操作:

     fddisk -fmt /dev/rfd0a
     cat mboot bootm > /dev/rfd0a
     disklabel -rw rfd0a 'rx23' mboot bootm

或在 Linux 机器上:

     cat mboot bootm > /dev/fd0 

如果您有可用的标准 MILO 镜像(例如MILO.dd),那么您可以使用以下命令构建启动块软盘:

     dd if=MILO.dd of=/dev/fd0 

5.4. 从闪存加载 MILO

在许多系统中,MILO 可以被烧录到闪存中并直接启动(而不是通过 Windows NT ARC 固件)。

5.5. 从 SRM 控制台加载 MILO

SRM(系统参考手册的缩写)控制台不了解文件系统或磁盘分区,它只是期望辅助引导加载程序占用从给定偏移量开始的连续物理磁盘扇区范围。描述辅助引导加载程序的信息(其大小和偏移量)在第一个 512 字节块中给出。要通过 SRM 加载 MILO,您必须在 SRM 可以访问的设备(例如软盘)上生成该结构。这就是mbootbootm, mboot是第一个块(或启动描述),而mbootMILO镜像,向上舍入到 512 字节边界。

要从启动块设备加载 MILO,请构建mbootbootm并使用以下命令将它们推送到启动设备上:

	$ cat mboot bootm > /dev/fd0

或者,从网站抓取适当的MILO.dd并使用RAWRITE.EXEdd.

将其写入启动设备。完成此操作后,您可以启动 SRM 控制台并使用其许多命令之一来启动 MILO。例如,要从启动块软盘启动 MILO,您将使用以下命令:

	>>>boot dva0
	(boot dva0.0.0.0.1 -flags 0)
	block 0 of dva0.0.0.0.1 is a valid boot block
	reading 621 blocks from dva0.0.0.0.1
	bootstrap code read in
	base = 112000, image_start = 0, image_bytes = 4da00
	initializing HWRPB at 2000
	initializing page table at 104000
	initializing machine state
	setting affinity to the primary CPU
	jumping to bootstrap code
	MILO Stub: V1.1
	Unzipping MILO into position
	Allocating memory for unzip
	####...

以下系统已知具有 SRM 控制台支持:

5.6. 系统特定信息

5.6.1. AxpPCI33 (Noname)

Noname 板可以从 Windows NT ARC 固件(第 5.1 节)、SRM 控制台(第 5.5 节)和失效保护启动块软盘(第 5.3 节)加载 MILO。一个可从 MILO 运行的闪存管理实用程序可用,以便一旦 MILO 运行,就可以将其烧录到闪存中(第 7 节)。但是,请注意,一旦您执行此操作,您将丢失先前保存在那里的镜像,因为只有一个镜像的空间。

Noname 的启动方式由板上的跳线 J29 和 J28 控制。它们看起来像
        	    4
        J29	2 x x x 6
        	1 x x x 5

        J28	2 x x x 6
        	1 x x x 5
        	    3

我们感兴趣的两个选项是 J28,引脚 1-3,它从闪存启动控制台/加载程序,以及 J29,引脚 1-3,它从启动块软盘启动控制台/加载程序。第二个选项是您需要在 Noname 板上首次启动 MILO 的选项。

通过跳线选择从软盘启动选项后,将包含 MILO 的 SRM 启动块软盘放入软驱并重新启动。几秒钟后(在软盘指示灯熄灭后),您应该看到屏幕变白,MILO 告诉您正在发生的事情。

如果您真的对技术细节感兴趣,Noname 从软盘将镜像加载到物理地址 0x104000,从闪存加载到 0x100000。因此,MILO 的构建使其 PALcode 从 0x200000 开始。当它首次加载时,它会将自身移动到正确的位置(请参阅 relocate.S)。

5.6.2. AlphaPC64 (Cabriolet)

AlphaPC64 包括 Windows NT ARC 固件(第 5.1 节)、SRM 控制台(第 5.5 节)和评估调试监视器(第 5.2 节)。这些镜像位于闪存中,并且有空间添加 MILO,以便您可以直接从闪存启动 MILO。一个可从 MILO 运行的闪存管理实用程序可用,以便一旦 MILO 运行,就可以将其烧录到闪存中(第 7 节)。此系统支持 MILO 环境变量。

您可以使用跳线和保存在 TOY 时钟的 NVRAM 中的启动选项的组合来选择启动选项(以及放入闪存后的 MILO)。

跳线是 J2,SP 位 6 和 7 具有以下含义:

  • SP 位 6 应始终拔出。如果设置了此跳线,则会启动 SROM 迷你调试器。

  • SP 位 7 插入表示由 TOY 时钟中的启动选项字节选择启动镜像。

  • SP 位 7 拔出表示启动闪存中的第一个镜像。

因此,当位 7 拔出时,调试监视器将被启动,因为它总是闪存中的第一个镜像。当位 7 插入时,将选择由 TOY 时钟中的启动选项选择的镜像。调试监视器、Windows NT ARC 固件和 MILO 都支持设置此启动选项字节,但您必须非常小心地使用它。特别是,您不能设置启动选项,以便下次系统启动 MILO 时,当您运行 Windows NT ARC 固件时,它只允许您将调试监视器或 Windows NT ARC 设置为启动选项。

要通过评估板调试监视器将 MILO 放入闪存,您将需要一个可刷写的镜像。构建过程会生成 MILO.rom,但您也可以使用板随附的调试监视器软件中的 makerom 工具制作 rom 镜像。

> makerom -v -i7 -l200000 MILO -o mini.flash

(键入 makerom 以查找参数的含义,但 7 是 srom 使用的闪存镜像 ID,-l200000 给出了镜像的加载地址为 0x200000)。

将该镜像加载到内存(通过调试监视器命令 flload、netload 等)中的 0x200000 处,然后将镜像烧录到闪存中。

     AlphaPC64> flash 200000 8

(200000 是要烧录的镜像在内存中的位置,8 是您放置镜像的段号。闪存中有 16 个 1024*64 字节的段,调试监视器位于段 0,Windows NT ARC 固件位于段 4)。

通过将镜像编号写入 TOY 时钟来设置 srom 将启动的镜像。

     AlphaPC64> bootopt 131

(131 表示启动第 3 个镜像,129 = 第 1 个,130 = 第 2 个,依此类推)。

断电,插入跳线 7,然后通电,您应该会看到 MILO 开始运行。如果您没有看到,请拔下跳线 7 并重新启动调试监视器。

5.6.3. EB66+

EB66+ 与 Digital 构建的所有 Alpha 评估板一样,包含评估板调试监视器,因此可以使用它来加载 MILO(第 5.2 节)。通常(尽管并非总是如此),设计源自这些板的板也包含调试监视器。通常,这些板包含 Windows NT ARC 固件(第 5.1 节)。一个可从 MILO 运行的闪存管理实用程序可用,以便一旦 MILO 运行,就可以将其烧录到闪存中(第 7 节)。此系统支持 MILO 环境变量。

这些系统在闪存中有多个启动镜像,由跳线控制。两个跳线组是 J18 和 J16,位于板中间的底部(如果 Alpha 芯片在顶部)。您可以使用跳线和保存在 TOY 时钟的 NVRAM 中的启动选项的组合来选择启动选项(以及放入闪存后的 MILO)。

J18 的跳线 7-8 插入表示启动由启动选项描述的镜像。J18 的跳线 7-8 拔出表示启动评估板调试监视器。

通过评估板调试监视器将镜像烧录到闪存的过程与 AlphaPC64 完全相同(第 5.6.2 节)。

5.6.4. EB64+/Aspen Alpine

此系统与 AlphaPC64 非常相似,只是它不包含可以从中加载 MILO 的闪存。EB64+ 有两个 ROM,其中一个包含 Windows NT ARC 固件(第 5.1 节),另一个包含评估板调试监视器(第 5.2 节)。

Aspen Alpine 有些不同,因为它只有一个 ROM;其中包含 Windows NT ARC 固件。

5.6.5. 通用桌面盒 (Multia)

这是一个非常紧凑的预封装的基于 21066 的系统,包括 TGA (21030) 图形设备。虽然您可以勉强在盒子中安装半高 PCI 图形卡,但您最好等待 XFree86 中的完整 TGA 支持。它包括 Windows NT ARC 固件,因此从该固件启动是首选方法(第 5.1 节)。

5.6.6. EB164

EB164 与 Digital 构建的所有 Alpha 评估板一样,包含评估板调试监视器,因此可以使用它来加载 MILO(第 5.2 节)。通常(尽管并非总是如此),设计源自这些板的板也包含调试监视器。通常,这些板包含 Windows NT ARC 固件(第 5.1 节)。SRM 控制台也可用(第 5.5 节)。一个可从 MILO 运行的闪存管理实用程序可用,以便一旦 MILO 运行,就可以将其烧录到闪存中(第 7 节)。此系统支持 MILO 环境变量。

这些系统在闪存中有多个启动镜像,由跳线控制。两个跳线组是 J1,位于板左侧的底部(如果 Alpha 芯片在顶部)。您可以使用跳线和保存在 TOY 时钟的 NVRAM 中的启动选项的组合来选择启动选项(以及放入闪存后的 MILO)。

J1 的跳线 SP-11 插入表示启动由启动选项描述的镜像。J1 的跳线 SP-11 拔出表示启动评估板调试监视器。

通过评估板调试监视器将镜像烧录到闪存的过程与 AlphaPC64 完全相同(第 5.6.2 节)。

5.6.7. PC164

PC164 与 Digital 构建的所有 Alpha 评估板一样,包含评估板调试监视器,因此可以使用它来加载 MILO(第 5.2 节)。通常(尽管并非总是如此),设计源自这些板的板也包含调试监视器。通常,这些板包含 Windows NT ARC 固件(第 5.1 节)。SRM 控制台也可用(第 5.5 节)。一个可从 MILO 运行的闪存管理实用程序可用,以便一旦 MILO 运行,就可以将其烧录到闪存中(第 7 节)。此系统支持 MILO 环境变量。

这些系统在闪存中有多个启动镜像,由跳线控制。主跳线组 J30 包含系统配置跳线,跳线 CF6 插入表示系统将启动调试监视器,默认状态是拔出。

通过评估板调试监视器将镜像烧录到闪存的过程与 AlphaPC64 完全相同(第 5.6.2 节)。

5.6.8. XL266

XL266 是 Avanti 系列系统之一。它有一个包含 Alpha 芯片和缓存的子卡,以直角方式插入主板。该板可以替换等效的 Pentium 板。

其中一些系统出厂时带有 SRM 控制台,但另一些系统,特别是 XL266,仅出厂时带有 Windows NT ARC 固件(第 5.1 节)。

这是我的兼容系统列表:

  • AlphaStation 400 (Avanti),

  • AlphaStation 250,

  • AlphaStation 200 (Mustang),

  • XL。有两种型号,XL266 和 XL233,唯一的区别在于处理器速度和缓存大小。

注意 我用于开发和测试 MILO 的系统是 XL266,因此这是我唯一可以保证可以工作的系统。但是,从技术上讲,以上所有系统都是等效的;它们具有相同的支持芯片组和相同的中断处理机制。

5.6.9. Platform2000

这是一个基于 233Mhz 21066 的系统。