进入HP x86服务器的ELILO引导环境,最核心的方法是在开机自检时按F9进入RBSU,在启动顺序里临时指定从EFI分区引导,系统加载elilo.efi后会直接落入ELILO命令行;也可以在UEFI Shell里手动执行elilo命令,这是针对引导丢失或配置错误最可靠的兜底路径。
HP x86服务器进入ELILO的三种实操方式
老HP机型和Gen9之后的机型进入ELILO的路径差异很大,先说结论:Gen8及以前依赖ROM-Based Setup Utility(RBSU),Gen9及以后则靠UEFI启动菜单,不管哪种,最终目的都是让服务器把控制权交给elilo.efi。
开机按键法与RBSU启动顺序调整
绝大多数HP x86服务器在开机自检(POST)阶段按F9可进入系统维护界面,这里有个关键点:RBSU里的“启动顺序”不会立刻让你看到ELILO选项,需要做两步操作。
- 开机看到HP Logo时连续按F9,直到进入RBSU主界面。
- 选择Boot Order菜单,查看当前第一启动项是否为Embedded UEFI Shell或Internal EFI Shell。
- 如果第一启动项是硬盘,按方向键选到EFI Shell,用调整到首位。
- 按F10保存退出,服务器重启后会进入UEFI Shell命令行界面。
在UEFI Shell下,输入fs0:回车切换到EFI系统分区,再执行dir查看文件列表,找到EFI\elilo\elilo.efi路径,直接输入该路径回车即可加载ELILO引导器,操作示例:
Shell> fs0:
FS0:\> cd EFI\elilo
FS0:\EFI\elilo\> elilo.efi
进入后屏幕会显示ELILO 3.8之类的版本号,伴随一个boot:提示符,此时你可以输入vmlinuz root=/dev/sda1手动指定内核参数进行引导。
临时启动菜单与F11快捷键
多数HP x86服务器支持F11弹出一次性启动菜单(Boot Menu),这个方式不影响原有的启动顺序,适合临时进入ELILO修复系统,操作路径如下:
- 重启服务器,在开机自检期间快速按F11。
- 在启动菜单列表中选择Internal UEFI Shell或Embedded Shell。
- 进入UEFI Shell后执行与上文相同的elilo引导加载命令。
行业共识认为,F11临时启动菜单是日常维护最高效的入口,因为它不需要改动BIOS永久配置,操作失误也不会影响生产环境原有的引导逻辑。
从硬盘直接引导ELILO的场景
如果服务器刚装完Linux(如SLES或RHEL早期版本),开机默认会直接加载ELILO;若遇到黑屏只剩光标的情况,说明elilo.conf配置有问题,这时需要从启动菜单进入ACPI分区目录,手动执行elilo命令并附加备用内核参数,具体排查方法在第四部分展开。
Gen8与Gen9服务器进入ELILO的差异对比
HP服务器从Gen9开始全面转向UEFI引导,而很多存量Gen8服务器还在使用传统BIOS模式,这两种模式进入ELILO的路径完全不同,混淆操作会导致进不去系统。
Gen8及之前机型:传统BIOS与RBSU
Gen8服务器进入ELILO的方式比较直接,开机按F9进入RBSU,在Server Availability下找到Boot Mode,确认是Legacy BIOS Mode还是UEFI Mode,传统模式下,ELILO通常写在主引导记录(MBR)中,开机按F9调整硬盘为第一启动项即可直接进入。
但要注意:如果Gen8设置为UEFI Mode,则需要按F9进RBSU的Boot Order,把UEFI Built-In Shell调到首位,然后从Shell执行elilo,很多运维卡在“UEFI模式下找不到ELILO引导”,就是因为没进Shell手动加载。
Gen9及之后机型:UEFI引导主导
HP Gen9服务器ELILO几乎全部走UEFI路径,开机按F9进入System Utilities(注意不是RBSU,界面风格完全不同),在Boot Maintenance Manager中选择Boot Options,这里有两个入口:
- Add Boot Option:手动添加指向elilo.efi的启动项。
- UEFI Shell:直接进入Shell环境执行elilo。
实际操作中推荐直接用Shell,因为Add Boot Option需要手动输入文件路径,容易拼错,Shell进入后执行fs0:和cd EFI\elilo,运行elilo.efi即可。
新一代机型的光驱和U盘引导限制
Gen10及后续机型默认启用了Secure Boot,未经签名的elilo.efi可能被拒绝加载,如果你的服务器装的是早期Linux发行版,建议先在Secure Boot Configuration里设为Disabled,否则会出现“加载elilo.efi失败”的报错,这一步常被忽略,因为提示信息只出现一两秒。
进入ELILO后常用的操作命令与维护技巧
成功进入ELILO只解决了一半问题,真正要做的往往是修复引导或修改内核参数,这里整理了一套实际维护中最高频的命令组合。
手动指定内核与initrd引导
ELILO不像GRUB那样有交互菜单,它是纯命令行交互方式,在boot:提示符后输入:
boot: linux root=/dev/mapper/vg0-lv_root ro console=tty0
boot: initrd /boot/initrd.img
第一条指定内核和根分区,第二条加载初始RAM盘,旧版ELILO可能不支持分两条命令,需要写在一行:
boot: vmlinuz initrd=initrd.img root=/dev/sda3 ro
从集群节点或救援盘进入ELILO的考量
HP机架服务器在数据中心里经常同时承担多个节点,如果你的服务器跑着Oracle RAC或K8s节点,直接进ELILO会导致服务中断,需要提前把业务切走,挂载光驱或虚拟介质进入救援模式时,注意ELILO的root参数要改成实际根分区路径,避免救援内核加载后找不到文件系统。
elilo.conf配置错误导致无法进入ELILO情形
这是最常见的一种“无法进入ELILO”场景,开机后提示ELILO boot failed或者卡在boot:后反复重启,多半是 /etc/elilo.conf 中的root=或initrd=路径写错。
业内专家指出,处理elilo命令进不去怎么办这类问题时,首先进入UEFI Shell执行fs0:EFI\elilo\elilo.efi,绕过配置文件直接加载引导器,然后用命令行参数启动系统,系统起来后再修正elilo.conf并执行elilo -v重写引导记录。
重装elilo引导器的标准流程
如果ELILO引导文件损坏,需要从感染了系统的EFI分区恢复,流程如下:
- 进入UEFI Shell,挂载EFI分区。
- 用光盘或U盘启动到救援模式,chroot到硬盘根分区。
- 重新安装elilo:apt-get install elilo或yum install elilo。
- 运行elilo -v,确认写入成功。
elilo配置注意事项:elilo.conf需要放在EFI系统分区内,且必须被vfat文件系统支持,内核和initrd文件可以放在根分区的/boot下,但部分老版本ELILO只认EFI分区内的文件,此时需要在配置里用image=/boot/vmlinuz指定绝对路径。
ELILO与GRUB2引导器的选择:HP服务器场景对比
很多运维纠结是继续用ELILO还是换GRUB2,其实这个不用纠结,看你的系统版本和内核需求,这里给一个直观对比:
| 对比维度 | ELILO | GRUB2 |
|---|---|---|
| 配置文件位置 | EFI分区内elilo.conf | /boot/grub2/grub.cfg |
| 交互方式 | 纯命令行(boot:提示符) | 图形化菜单 |
| 引导速度 | 较快,无菜单等待 | 默认5秒等待 |
| 内核参数修改 | 需要手动输入完整参数 | 菜单编辑,自动补全 |
| 排错友好度 | 较低,无日志反馈 | 较高,有debug模式 |
| HP服务器适配 | Gen8及以前原生支持 | Gen9以后默认支持 |
HP x86服务器进入ELILO的难点不在工具本身,而在于UEFI固件与引导器的交互逻辑,旧BIOS时代,ELILO直接写在MBR里,开机自动运行;UEFI时代,必须经过Shell或Boot Option中转,这导致很多老运维在换新服务器后找不到北。
如果你现在维护的是存量Gen7/Gen8服务器,建议保持ELILO不变;如果是新上架的Gen10+,推荐用GRUB2,因为elilo项目维护频率低,对新型NVMe和XFS文件系统支持不完善,但无论用哪个,掌握手动进入Shell的路径作为应急方案,是必备技能。
Linux服务器ELILO引导丢失的应急排查路径
前面重点讲了“怎么进入ELILO”,这里解决“进不去”的逆向问题,根据多年维护经验,90%的引导失败是这三个原因造成的:UEFI启动项丢失、elilo.conf语法错误、EFI分区被格式化。
UEFI启动项丢失的恢复方法
在Boot Maintenance Manager中会看到Boot Option List为空,此时不慌,先确认EFI分区是否还有elilo文件,操作:
- 使用F11进入启动菜单,选UEFI Shell。
- 输入map -r扫描所有可用的文件系统。
- 找到FS0:(EFI分区),执行fs0:切换。
- 依次执行 dir、cd EFI\elilo、elilo.efi,验证引导文件是否完好。
如果文件存在但无启动项,可以执行 bcfg boot dump 查看现有配置,再用 bcfg boot add 0 FS0:\EFI\elilo\elilo.efi “ELILO Linux Boot” 重新添加,这个命令在UEFI Shell下直接生效,不需要重启。
elilo.conf参数错误的定位技巧
配置语法错误时,ELILO会在启动阶段短暂打印错误行,但整屏刷新太快来不及看,可以用Ctrl+L锁定屏幕,或者从Shell加载elilo时加-v详细输出参数:
FS0:\EFI\elilo\> elilo.efi -v
常见误区是delay=参数不可为负数,vga=参数不支持部分新显卡,append=里的引号必须成对出现,修正后重新执行elilo -v写入配置。
EFI分区空间不足导致的引导异常
小概率但很隐蔽的场景:EFI分区仅有200MB左右空间,内核更新频繁时容易写满,症状是elilo能启动但内核无法加载,报错信息类似于 No space left on device,进入Shell后执行 ls -la FS0:\EFI\elilo 查看文件大小,清理旧的 vmlinuz.old 和 initrd.old 释放空间。
应急引导方面,也可以直接指定网络引导或使用HP Intelligent Provisioning恢复,但这两个方案一个依赖DHCP/TFTP环境,一个会覆盖系统分区配置,不如手动进Shell来得安全可控。
关于HP x86服务器进入ELILO的常见问题解答
HP服务器开机只能进UEFI Shell,不直接进ELILO怎么办?
在UEFI Shell中执行 bcfg boot dump 查看当前引导项,如果找不到ELILO启动项,使用 bcfg boot add 0 FS0:\EFI\elilo\elilo.efi “elilo” 添加,随后输入 exit 退出Shell,服务器会重新按启动顺序查找,若仍不进系统,检查elilo.conf中的root参数是否与实际根分区UUID匹配。
elilo和grub引导配置有什么核心区别?
ELILO使用/etc/elilo.conf静态配置,修改后需要执行elilo -v写入EFI分区;GRUB2使用grub.cfg自动生成机制,ELILO适合老旧稳定环境,GRUB2适合频繁更新内核的系统,两者在HP服务器上的切换需要先卸载elilo再安装grub2-efi,同时清理EFI分区的旧引导文件。
HP Gen8服务器在UEFI模式下按F9找不到Boot Order怎么办?
RBSU界面中,Server Availability选项下方才有Boot Mode设置,将Boot Mode改为UEFI Mode并保存重启,再按F9进入RBSU,此时才会显示UEFI相关的Boot Order配置项,如果之前用的是Legacy模式,切换后磁盘分区表需要是GPT格式才能正常引导,MBR磁盘无法识别,这是Gen8 UEFI引导最常遇到的坑。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/796982.html

