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 看不到控制器,它自然就不会对软盘采取任何措施。