4. 原始加载器

此加载器的源代码可以在目录arch/alpha/boot的 Linux 内核源代码发行版中找到。它通过读取START_SIZE字节,从磁盘偏移量BOOT_SIZE+512(也是字节)。 常量START_SIZEBOOT_SIZE定义在linux/include/asm-alpha/system.h. START_SIZE必须至少与内核镜像一样大(即,.text, .data,和.bss段)。 同样地,BOOT_SIZE必须至少与原始引导加载程序的镜像一样大。这两个常量都应该是扇区大小(512 字节)的整数倍。 默认值目前为 2MB 用于START_SIZE,以及 16KB 用于BOOT_SIZE。 请注意,如果您想从 1.44MB 软盘启动,则必须减少START_SIZE到 1400KB,并确保您要启动的内核不大于此。

要构建原始加载器,只需键入make rawboot在您的 linux 源代码树的顶层目录中(通常是/usr/src/linux)。 这应该在以下目录中生成以下文件arch/alpha/boot:

tools/lxboot:

磁盘上的第一个扇区。 它包含下一个文件的偏移量和大小,格式如上所述。

tools/bootlx:

原始引导加载器,将加载以下文件。

vmlinux.nh:

原始内核镜像,由.text, .data,和.bss对象文件中的段组成,该对象文件位于/usr/src/linux/vmlinux。 扩展名.nh表示此文件没有对象文件头。

这三个文件的连接应写入您要从中启动的磁盘。 例如,要从软盘启动,请插入一个空软盘,例如,/dev/fd0然后键入
# cat tools/lxboot tools/bootlx vmlinux >/dev/fd0

然后您可以关闭系统,并通过发出命令从软盘启动boot dva0.