HP Microserver Gen8安装Ubuntu后启动报错:Attempt to read or write outside of disk 'hd0'
HP Microserver Gen8安装Ubuntu后启动报错:Attempt to read or write outside of disk 'hd0'
兄弟,我太懂你这种每次重启都要重新折腾的崩溃感了!两台Gen8不管有没有RAID卡都遇上同一个启动报错,这绝对是这个老机型和Ubuntu搭配的常见坑,我给你整理几个亲测有效的排查和解决办法:
先调对BIOS里的关键设置
开机按F9进BIOS,先找Storage相关选项:- 带LSI MegaRAID的那台:确认RAID卡被正常识别,SATA控制器模式别和RAID卡冲突(比如别同时开RAID和AHCI);
- 无RAID的那台:把SATA Mode改成AHCI,别用IDE模式,这能减少磁盘识别的兼容性问题;
另外一定要在Boot Order里把装了Ubuntu的磁盘设为第一启动项,别让安装盘或者其他设备抢了优先级。
修复GRUB引导(最可能解决问题的步骤)
这个报错大概率是GRUB没正确识别磁盘布局导致的,用Ubuntu安装盘启动到「试用Ubuntu」模式,打开终端一步步来:- 先挂载你的Ubuntu系统分区(比如系统在/dev/sda1,就执行):
sudo mount /dev/sda1 /mnt - 挂载系统必需的目录:
sudo mount --bind /dev /mnt/dev sudo mount --bind /proc /mnt/proc sudo mount --bind /sys /mnt/sys - 切换到系统根环境:
sudo chroot /mnt - 重新安装GRUB到磁盘(注意是磁盘不是分区,比如/dev/sda):
grub-install /dev/sda - 更新GRUB配置:
update-grub - 退出并重启:
exit然后sudo reboot
要是带RAID卡的那台,重启后还是有问题,就在chroot环境里装RAID卡的驱动:apt-get install megaraid-sas-dkms,再重新执行update-grub试试。
- 先挂载你的Ubuntu系统分区(比如系统在/dev/sda1,就执行):
调整安装时的分区布局
老机型可能对磁盘分区位置有要求,安装Ubuntu时注意:- 一定要用GPT分区表(别选MBR),尤其是4TB的大磁盘;
- 如果是Legacy启动,专门分一个100MB左右的「BIOS Boot分区」,不用格式化,标记为
bios_grub; - 如果是UEFI启动,分一个200MB左右的EFI分区,格式化为FAT32,挂载点设为
/boot/efi;
把这些引导相关的分区放在磁盘最前面,避免系统分区太靠后超出BIOS识别范围。
检查固件和系统版本兼容性
- 带RAID卡的那台:去HP官网下载Gen8对应的LSI MegaRAID最新固件更新,刷完固件再重新安装Ubuntu;
- 两台机器都尽量用Ubuntu LTS版本(比如20.04、22.04),这些版本对老硬件的兼容性更稳定,别用太新的非LTS版本,容易出驱动适配问题。
备注:内容来源于stack exchange,提问作者Dennis




