我在一台硬件 RAID 级别为 5 的新服务器上安装了 CentOS 5.9 x64。
由于我的无知,我告诉它不要安装 Grub。下次重新启动时,我看到一个闪烁的光标。所以,我回到安装程序,无需重新安装所有内容即可将 Grub 放在 /dev/cciss/c0d0 上。现在,无论何时启动,我都会收到一个grub>
(0.9.7,我猜不是 Grub2)提示。
当我做这:
root (hd0,0)
setup (hd0,0) (or "setup (hd0)")
一切都成功完成,但下一次启动又把我带到同一个地方。于是我就去追随这些方向,但是当我到达less menu.lst
它时,它告诉我它不存在。做事ls
既不向我展示menu.lst
也不grub.conf
在/boot/grub
之后chroot /mnt/sysimage
。
我是否必须手动创建 grub.conf,或者是否有更好/更自动化的方式,我不太可能搞砸,以完成这一步?
更新:我刚刚尝试使用 vi 自己创建 grub.conf 。然后我grub-install
又做了一次,此时我注意到这hd0
是我的 USB 记忆棒(我从它启动到安装程序来linux rescue
执行此操作)并且hd1
是 RAID。我想即使我在没有 USB 记忆棒的情况下重新启动,情况仍然如此。所以也许我应该做root (hd1,0)
等等?不,当我尝试这样做时,它启动时出现错误Selected disk does not exist
。但是,此时它为我提供了一个方便的 grub.conf 编辑器。所以我尝试(hd0,0)
启动,它发现 ext 文件系统没问题,但现在显示File not found
.我已经尝试了以下几行和所有yield File not found
:
kernel /boot/vmlinuz-2.6.18-384.el5 root=/dev/cciss/c0d0
kernel /boot/grub/vmlinuz-2.6.18-384.el5 root=/dev/cciss/c0d0
kernel /grub/vmlinuz-2.6.18-384.el5 root=/dev/cciss/c0d0
kernel /dev/cciss/c0d0/vmlinuz-2.6.18-384.el5 root=/dev/cciss/c0d0
这个终于启动了,但是在挂载 /sys 失败然后尝试卸载旧的 /sys 后,它给了我一个内核恐慌:
default=0
timeout=2
title CentOS 5.9
root (hd0,0)
kernel /vmlinuz-2.6.18-384.el5 ro root=/dev/cciss/c0d0
initrd /initrd-2.6.18-384.el5.img
所以我没有做任何事情,再次启动棒linux rescue
,并选择“升级现有安装”,并重新安装 Grub。首先是/dev/sda
安装位置的选项,但我告诉它我想修改/高级。下一个屏幕让我在/dev/sda
和之间进行选择/dev/cciss/c0d0p1
。如果我首先修改引导顺序以将 RAID 阵列放在第一位(而不是匹配 BIOS 中当前的方式以便引导到棒),我的选择将变为/dev/cciss/c0d0p1
和/dev/cciss/c0d0
。如果我选择后者,它会说安装软件包时出了问题,并且没有加载内核映像,重新启动会让我回到自定义的 grub.conf 失败(如果我修改它,我可以让它陷入内核恐慌。)如果我不要修改启动顺序并选择/dev/cciss/c0d0
,同样的事情。
答案1
您还需要在救援模式下编辑 /boot/grub/device.map 并更改映射以反映在没有 USB 密钥的情况下启动时的情况。即删除/dev/sda 行,并将/cciss 行更改为hd0。然后保存grub-install /dev/cciss/c0d0
并重新启动。