由于缺少软盘驱动器,GRUB-2 引导加载程序无法加载。Ubuntu 10.4 和 Windows XP

由于缺少软盘驱动器,GRUB-2 引导加载程序无法加载。Ubuntu 10.4 和 Windows XP

2010.07.21 尝试安装 Ubuntu 10.4

大家好,

我一直试图在我的戴尔工作站上安装 Ubuntu 10.04,但无法正确加载 Grub-2 引导加载程序。它似乎由于系统上缺少软盘驱动器而失败,导致出现一条错误消息,内容如下:

error: fd0 cannot get C/H/S values.  

我浏览了 Grub-2 页面https://help.ubuntu.com/community/Grub2毫无效果,其他有类似问题的来源也同样没有找到解决方案。我当然会很感激任何见解,以下是背景:

不久前,我尝试安装不同版本的 Linux,但遇到了同样的问题,因此不得不暂时搁置该项目。我认为这与 Linux 或 Ubuntu 本身无关,而是与 Grub 有关。

该系统是一台旧的(4-5 年)戴尔工作站,有一个驱动器(128 GB)用于 Windows XP,另一个新驱动器(500GB)是我为 Linux 安装的。有一个 DVD/CD 驱动器,但系统根本没有软盘驱动器。为了使它正常工作,我尝试修改 BIOS 以指示有一个软盘驱动器 - 这导致链中较早的故障,BIOS 无法正确加载,这并不意外,只是当时的一次偶然机会。

目前,我正在考虑购买并安装一个便宜的软盘驱动器,看看是否有用。但我永远不会用这个东西,所以我宁愿找到一个不需要花钱购买无用硬件的解决方案。

无论如何,这里是 /boot/grub/grub.cfg 的内容:

#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by /usr/sbin/grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
if [ -s $prefix/grubenv ]; then
  load_env
fi
set default="0"
if [ ${prev_saved_entry} ]; then
  set saved_entry=${prev_saved_entry}
  save_env saved_entry
  set prev_saved_entry=
  save_env prev_saved_entry
  set boot_once=true
fi

function savedefault {
  if [ -z ${boot_once} ]; then
    saved_entry=${chosen}
    save_env saved_entry
  fi
}

function recordfail {
  set recordfail=1
  if [ -n ${have_grubenv} ]; then if [ -z ${boot_once} ]; then save_env recordfail; fi; fi
}
insmod ext2
set root='(hd1,1)'
search --no-floppy --fs-uuid --set fbebde47-f488-41b0-9480-337802ecb988
if loadfont /usr/share/grub/unicode.pf2 ; then
  set gfxmode=640x480
  insmod gfxterm
  insmod vbe
  if terminal_output gfxterm ; then true ; else
    # For backward compatibility with versions of terminal.mod that don't
    # understand terminal_output
    terminal gfxterm
  fi
fi
insmod ext2
set root='(hd1,1)'
search --no-floppy --fs-uuid --set fbebde47-f488-41b0-9480-337802ecb988
set locale_dir=($root)/boot/grub/locale
set lang=en
insmod gettext
if [ ${recordfail} = 1 ]; then
  set timeout=-1
else
  set timeout=10
fi
insmod play
play 480 440 1
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
### END /etc/grub.d/05_debian_theme ###

### BEGIN /etc/grub.d/10_linux ###
menuentry 'Ubuntu, with Linux 2.6.32-21-generic' --class ubuntu --class gnu-linux --class gnu --class os {
 recordfail
 insmod ext2
 set root='(hd1,1)'
 search --no-floppy --fs-uuid --set fbebde47-f488-41b0-9480-337802ecb988
 linux /boot/vmlinuz-2.6.32-21-generic root=UUID=fbebde47-f488-41b0-9480-337802ecb988 ro   quiet splash
 initrd /boot/initrd.img-2.6.32-21-generic
}
menuentry 'Ubuntu, with Linux 2.6.32-21-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
 recordfail
 insmod ext2
 set root='(hd1,1)'
 search --no-floppy --fs-uuid --set fbebde47-f488-41b0-9480-337802ecb988
 echo 'Loading Linux 2.6.32-21-generic ...'
 linux /boot/vmlinuz-2.6.32-21-generic root=UUID=fbebde47-f488-41b0-9480-337802ecb988 ro single 


 echo 'Loading initial ramdisk ...'
 initrd /boot/initrd.img-2.6.32-21-generic
}
### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_memtest86+ ###
menuentry "Memory test (memtest86+)" {
 insmod ext2
 set root='(hd1,1)'
 search --no-floppy --fs-uuid --set fbebde47-f488-41b0-9480-337802ecb988
 linux16 /boot/memtest86+.bin
}
menuentry "Memory test (memtest86+, serial console 115200)" {
 insmod ext2
 set root='(hd1,1)'
 search --no-floppy --fs-uuid --set fbebde47-f488-41b0-9480-337802ecb988
 linux16 /boot/memtest86+.bin console=ttyS0,115200n8
}
### END /etc/grub.d/20_memtest86+ ###

### BEGIN /etc/grub.d/30_os-prober ###
menuentry "Microsoft Windows XP Home Edition (on /dev/sda1)" {
 insmod ntfs
 set root='(hd0,1)'
 search --no-floppy --fs-uuid --set 6ef0d4b4f0d4842d
 drivemap -s (hd0) ${root}
 chainloader +1
}
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###

有人有想法吗?

提前致谢。

答案1

您的 BIOS 中是否有软盘仿真设置?如果有,请尝试将其打开,这可能会解决(或至少是解决)问题。如果没有,请检查是否有“传统 USB”或类似选项,使 BIOS 无法启动 USB 设备,这可能会有所帮助。当您修改 BIOS 以指示有软盘驱动器时,它出错了,您到底做了什么,到底发生了什么?

据我所知,该错误可能是由于某些 BIOS 将 USB 设备报告为软盘而引起的。然后,Grub 尝试探测软盘,但找不到实际的软盘,因此出现故障。假设这是正在发生的情况,则应该在 grub-1.98-1 中修复了该问题 — — 尽管升级到该版本可能比它的价值更麻烦。

将软盘放入系统可能解决这个问题,说实话我不确定。看起来似乎可以,但这是一个相当糟糕的解决方法。

答案2

尝试在 BIOS 中完全关闭软盘控制器。它可能正在尝试初始化不存在的设备。如果 GRUB 看不到控制器,它自然就不会对软盘采取任何措施。

相关内容