Alpha平台Linux引导详解:Bootloader与Firmware的作用

需积分: 1 0 下载量 140 浏览量 更新于2024-09-21 收藏 32KB DOCX 举报
"本文概述了Linux在Alpha/AXP平台上的启动过程,主要涉及Bootloader的角色,包括MILO和Firmware两种引导方式。MILO类似于i386平台的LILO,具有内置的磁盘驱动和文件系统支持。Firmware分为ARC和SRM,两者都可通过引导MILO或直接引导Linux的引导代码来启动系统。Linux Bootloader的实现主要由'arch/alpha/boot'目录下的文件完成,包括'head.S'和'main.c'等,它们负责初始化数据结构,加载内核,并将控制权交给kernel。" 在Alpha/AXP架构的Linux系统启动过程中,Bootloader起着至关重要的作用。它分为两个主要的引导途径:一是通过MILO或其他类似引导程序,二是直接由Firmware引导。MILO是一个功能丰富的引导加载程序,它可以识别和处理多种磁盘驱动(如IDE和SCSI)以及文件系统(如ext2和iso9660)。此外,Firmware有ARC和SRM两种形态,前者提供类似BIOS的图形界面,后者则拥有强大的命令行交互。 在具体实现上,Bootloader的代码主要位于'arch/alpha/boot'目录下。'head.S'是入口点,用于调用OSFPAL/1并加载到引导扇区。一旦获得控制权,它会初始化数据结构,然后将执行权传递给'main.c'中的'start_kernel()'函数。'start_kernel()'执行一系列初始化操作,如输出提示信息,初始化PAL代码,打开引导设备,加载内核到内存特定地址,并将引导参数加载到内存零页。最后,它调用'runkernel()'将控制权交给kernel的入口点0x100000,完成Bootloader的任务。 如果使用MILO作为引导程序,Bootloader的步骤会简化,MILO会自动解压缩内核(可能是vmlinux或vmlinux.gz)并将其加载到内存中,然后直接启动内核,无需上述手动编译和写入引导扇区的过程。 Linux在Alpha/AXP平台上的启动涉及Bootloader与Firmware的协同工作,以及Bootloader内部的复杂流程,包括初始化、加载内核以及传递控制权。理解这些过程对于系统维护、故障排查以及优化具有重要意义。