tl; dr :我用fat-fingered grub-install ,然后“正确地”重新发送它,目标是/dev/sda1上的/ boot文件系统,但是它不读取grub/grub.conf除非我明确地告诉它在哪里查找grub提示工具。 我如何解决这个问题?
我有一个关键的CentOS 5系统,带有多个不可热插拔的硬盘驱动器。 顺便说一句,这是一个坏主意。
第一个驱动包含/ boot,然后是两个镜像mdraid分区,用于操作系统和数据。 第二个驱动器只包含两个mdraid分区。
第一辆车非常慢,所以我加了第三辆车来为不可避免的事情做准备。 我复制了第一个驱动器的分区布局,将其添加到mdraid镜像中,然后使用dd将sda1克隆到sdc1。
我昨晚有一个硬件维护窗口,无论如何需要重新启动机器,所以我想我会趁机切换到引导驱动器的SDC。 由于我只复制分区布局和第一个分区,而不是整个驱动器,我认为sdc不可启动。 所以在调整fstab后,我做了sdc1启动,并使用grub-install来确保grub可以处理事情。
只有我发指令并inputgrub-install /dev/sda 。
它给了我一个关于在BIOS驱动器列表中找不到驱动器的警告,所以我认为它没有做任何有害的事情。 我重新发出命令目标/dev/sda1来代替,但得到了同样的错误。 嗯。 噢,它可能没有做任何事情,对吧? 是啊。 没有。
当系统重新启动后(在控制台上反复打印GRUB GRUB GRUB)时,系统没有恢复,我知道我被拧了。 显然我所做的事情非常普遍 。
我把机器启动成了一张live CD,用dd在sda和sdc上加载了MBR,装载了sda1的/ boot副本,发出了正确的命令(包括要求探测驱动器列表并给出一个实际的文件系统位置)并重新启动。 出来的是grubshell。 我能够发出root (hd0,0)和configfile grub/grub.conf进入启动菜单,但是我会假设如果我正确地发出命令开始,那么它会看到菜单立即。
所以,我的关键系统运行良好。 我只能在不久的将来重新启动一次,所以我想正确地处理这个问题。
所以,我的问题是:
grub-install ? 我现在被吓坏了 grub-install ,那应该是正确的方法吗? 我使用grub-install --recheck --root-directory=/path/to/sda1/boot /dev/sda1来使其进入当前状态。 我有类似的configuration:通常我在镜像mdraid分区上创build/引导,然后在每个驱动器的MBR上安装grub,以便服务器可以在任何驱动器发生故障时启动,其余(即除MBR程序阶段之外的所有其他驱动器)无论如何都是用mdraid复制的,
赶紧跑
grub-install --recheck /dev/sda grub-install --recheck /dev/sdb
您需要在MBR上安装grub,而不是第一个分区。 它将拾取阶段1.5文件,并启动内核将切换到mdraid分区的根等
下面是我的configuration的样子,实际上没有什么特别的,是的,它是Centos 6,但它是一样的:
设备图
[root@main ~]# cat /boot/grub/device.map # this device map was generated by anaconda (hd0) /dev/sda (hd1) /dev/sdb (hd2) /dev/sdc (hd3) /dev/sdd
menu.lst文件
[root@main ~]# cat /etc/grub.conf # grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/mapper/vg_main-lv_main_root # initrd /initrd-[generic-]version.img #boot=/dev/md0 default=0 timeout=10 splashimage=(hd0,0)/grub/splash.xpm.gz title CentOS (2.6.32-358.14.1.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-358.14.1.el6.x86_64 ro root=/dev/mapper/vg_main-lv_main_root rd_NO_LUKS LANG=en_US.UTF-8 rd_MD_UUID=7d8cff6b:744c0786:023226e9:536570ed rd_LVM_LV=vg_main/lv_main_root rd_LVM_LV=vg_main/lv_main_swap SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM quiet initrd /initramfs-2.6.32-358.14.1.el6.x86_64.img