我有一个希捷 2TB USB2 硬盘,ext4 格式。如果我将其插入系统并启动,PC 就会卡在“欢迎使用 grub”处。如果我在未插入 USB 驱动器的情况下重新启动,系统会正常启动。然后我可以插入驱动器并使用它。
我正在使用Debian GNU/Linux jessie/sid
更新到最新的。
Ubuntu livecds/usbs 启动正常。
lsusb(外部驱动器):
Bus 001 Device 006: ID 0bc2:3332 Seagate RSS LLC Expansion
grub-pc 版本:2.00-14
主板只有 USB2 端口(Intel H55TC)BIOS 是最新的(新旧固件都遇到同样的问题)。
可能是什么原因造成的?
(欢迎可测试的猜测,因为我没有想法了)。
注:在我发现USB驱动器是原因之前,我只是简单地启动了10次左右,最终就可以正常启动了。
这是我的 grub.cfg
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by 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 [ x"${feature_menuentry_id}" = xy ]; then
menuentry_id_option="--id"
else
menuentry_id_option=""
fi
export menuentry_id_option
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 load_video {
if [ x$feature_all_video_module = xy ]; then
insmod all_video
else
insmod efi_gop
insmod efi_uga
insmod ieee1275_fb
insmod vbe
insmod vga
insmod video_bochs
insmod video_cirrus
fi
}
terminal_input console
terminal_output console
set timeout=5
### END /etc/grub.d/00_header ###
### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=cyan/blue
set menu_color_highlight=white/blue
### END /etc/grub.d/05_debian_theme ###
### BEGIN /etc/grub.d/10_linux ###
menuentry 'Debian GNU/Linux' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-2f0165f3-2087-4157-b1e6-f707a995827b' {
load_video
insmod gzio
insmod part_msdos
insmod part_msdos
insmod diskfilter
insmod mdraid09
insmod ext2
set root='mduuid/019e28032b26f1e0e368bf24bd0fce41'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint='mduuid/019e28032b26f1e0e368bf24bd0fce41' 2f0165f3-2087-4157-b1e6-f707a995827b
else
search --no-floppy --fs-uuid --set=root 2f0165f3-2087-4157-b1e6-f707a995827b
fi
echo 'Loading Linux 3.9-1-686-pae ...'
linux /boot/vmlinuz-3.9-1-686-pae root=UUID=2f0165f3-2087-4157-b1e6-f707a995827b ro hdd=noprobe
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-3.9-1-686-pae
}
submenu 'Advanced options for Debian GNU/Linux' $menuentry_id_option 'gnulinux-advanced-2f0165f3-2087-4157-b1e6-f707a995827b' {
menuentry 'Debian GNU/Linux, with Linux 3.9-1-686-pae' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.9-1-686-pae-advanced-2f0165f3-2087-4157-b1e6-f707a995827b' {
load_video
insmod gzio
insmod part_msdos
insmod part_msdos
insmod diskfilter
insmod mdraid09
insmod ext2
set root='mduuid/019e28032b26f1e0e368bf24bd0fce41'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint='mduuid/019e28032b26f1e0e368bf24bd0fce41' 2f0165f3-2087-4157-b1e6-f707a995827b
else
search --no-floppy --fs-uuid --set=root 2f0165f3-2087-4157-b1e6-f707a995827b
fi
echo 'Loading Linux 3.9-1-686-pae ...'
linux /boot/vmlinuz-3.9-1-686-pae root=UUID=2f0165f3-2087-4157-b1e6-f707a995827b ro hdd=noprobe
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-3.9-1-686-pae
}
menuentry 'Debian GNU/Linux, with Linux 3.9-1-686-pae (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.9-1-686-pae-recovery-2f0165f3-2087-4157-b1e6-f707a995827b' {
load_video
insmod gzio
insmod part_msdos
insmod part_msdos
insmod diskfilter
insmod mdraid09
insmod ext2
set root='mduuid/019e28032b26f1e0e368bf24bd0fce41'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint='mduuid/019e28032b26f1e0e368bf24bd0fce41' 2f0165f3-2087-4157-b1e6-f707a995827b
else
search --no-floppy --fs-uuid --set=root 2f0165f3-2087-4157-b1e6-f707a995827b
fi
echo 'Loading Linux 3.9-1-686-pae ...'
linux /boot/vmlinuz-3.9-1-686-pae root=UUID=2f0165f3-2087-4157-b1e6-f707a995827b ro single
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-3.9-1-686-pae
}
menuentry 'Debian GNU/Linux, with Linux 3.2.0-4-686-pae' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.2.0-4-686-pae-advanced-2f0165f3-2087-4157-b1e6-f707a995827b' {
load_video
insmod gzio
insmod part_msdos
insmod part_msdos
insmod diskfilter
insmod mdraid09
insmod ext2
set root='mduuid/019e28032b26f1e0e368bf24bd0fce41'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint='mduuid/019e28032b26f1e0e368bf24bd0fce41' 2f0165f3-2087-4157-b1e6-f707a995827b
else
search --no-floppy --fs-uuid --set=root 2f0165f3-2087-4157-b1e6-f707a995827b
fi
echo 'Loading Linux 3.2.0-4-686-pae ...'
linux /boot/vmlinuz-3.2.0-4-686-pae root=UUID=2f0165f3-2087-4157-b1e6-f707a995827b ro hdd=noprobe
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-3.2.0-4-686-pae
}
menuentry 'Debian GNU/Linux, with Linux 3.2.0-4-686-pae (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.2.0-4-686-pae-recovery-2f0165f3-2087-4157-b1e6-f707a995827b' {
load_video
insmod gzio
insmod part_msdos
insmod part_msdos
insmod diskfilter
insmod mdraid09
insmod ext2
set root='mduuid/019e28032b26f1e0e368bf24bd0fce41'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint='mduuid/019e28032b26f1e0e368bf24bd0fce41' 2f0165f3-2087-4157-b1e6-f707a995827b
else
search --no-floppy --fs-uuid --set=root 2f0165f3-2087-4157-b1e6-f707a995827b
fi
echo 'Loading Linux 3.2.0-4-686-pae ...'
linux /boot/vmlinuz-3.2.0-4-686-pae root=UUID=2f0165f3-2087-4157-b1e6-f707a995827b ro single
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-3.2.0-4-686-pae
}
menuentry 'Debian GNU/Linux, with Linux 3.2.0-3-686-pae' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.2.0-3-686-pae-advanced-2f0165f3-2087-4157-b1e6-f707a995827b' {
load_video
insmod gzio
insmod part_msdos
insmod part_msdos
insmod diskfilter
insmod mdraid09
insmod ext2
set root='mduuid/019e28032b26f1e0e368bf24bd0fce41'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint='mduuid/019e28032b26f1e0e368bf24bd0fce41' 2f0165f3-2087-4157-b1e6-f707a995827b
else
search --no-floppy --fs-uuid --set=root 2f0165f3-2087-4157-b1e6-f707a995827b
fi
echo 'Loading Linux 3.2.0-3-686-pae ...'
linux /boot/vmlinuz-3.2.0-3-686-pae root=UUID=2f0165f3-2087-4157-b1e6-f707a995827b ro hdd=noprobe
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-3.2.0-3-686-pae
}
menuentry 'Debian GNU/Linux, with Linux 3.2.0-3-686-pae (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.2.0-3-686-pae-recovery-2f0165f3-2087-4157-b1e6-f707a995827b' {
load_video
insmod gzio
insmod part_msdos
insmod part_msdos
insmod diskfilter
insmod mdraid09
insmod ext2
set root='mduuid/019e28032b26f1e0e368bf24bd0fce41'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint='mduuid/019e28032b26f1e0e368bf24bd0fce41' 2f0165f3-2087-4157-b1e6-f707a995827b
else
search --no-floppy --fs-uuid --set=root 2f0165f3-2087-4157-b1e6-f707a995827b
fi
echo 'Loading Linux 3.2.0-3-686-pae ...'
linux /boot/vmlinuz-3.2.0-3-686-pae root=UUID=2f0165f3-2087-4157-b1e6-f707a995827b ro single
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-3.2.0-3-686-pae
}
menuentry 'Debian GNU/Linux, with Linux 3.2.0-2-686-pae' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.2.0-2-686-pae-advanced-2f0165f3-2087-4157-b1e6-f707a995827b' {
load_video
insmod gzio
insmod part_msdos
insmod part_msdos
insmod diskfilter
insmod mdraid09
insmod ext2
set root='mduuid/019e28032b26f1e0e368bf24bd0fce41'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint='mduuid/019e28032b26f1e0e368bf24bd0fce41' 2f0165f3-2087-4157-b1e6-f707a995827b
else
search --no-floppy --fs-uuid --set=root 2f0165f3-2087-4157-b1e6-f707a995827b
fi
echo 'Loading Linux 3.2.0-2-686-pae ...'
linux /boot/vmlinuz-3.2.0-2-686-pae root=UUID=2f0165f3-2087-4157-b1e6-f707a995827b ro hdd=noprobe
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-3.2.0-2-686-pae
}
menuentry 'Debian GNU/Linux, with Linux 3.2.0-2-686-pae (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.2.0-2-686-pae-recovery-2f0165f3-2087-4157-b1e6-f707a995827b' {
load_video
insmod gzio
insmod part_msdos
insmod part_msdos
insmod diskfilter
insmod mdraid09
insmod ext2
set root='mduuid/019e28032b26f1e0e368bf24bd0fce41'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint='mduuid/019e28032b26f1e0e368bf24bd0fce41' 2f0165f3-2087-4157-b1e6-f707a995827b
else
search --no-floppy --fs-uuid --set=root 2f0165f3-2087-4157-b1e6-f707a995827b
fi
echo 'Loading Linux 3.2.0-2-686-pae ...'
linux /boot/vmlinuz-3.2.0-2-686-pae root=UUID=2f0165f3-2087-4157-b1e6-f707a995827b ro single
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-3.2.0-2-686-pae
}
}
### END /etc/grub.d/10_linux ###
### BEGIN /etc/grub.d/20_ipxe ###
menuentry "Network boot (iPXE)" --users "" --class network {
insmod part_msdos
insmod part_msdos
insmod diskfilter
insmod mdraid09
insmod ext2
set root='mduuid/019e28032b26f1e0e368bf24bd0fce41'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint='mduuid/019e28032b26f1e0e368bf24bd0fce41' 2f0165f3-2087-4157-b1e6-f707a995827b
else
search --no-floppy --fs-uuid --set=root 2f0165f3-2087-4157-b1e6-f707a995827b
fi
linux16 /boot/ipxe.lkrn
}
### END /etc/grub.d/20_ipxe ###
### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###
### BEGIN /etc/grub.d/20_memtest86 ###
### END /etc/grub.d/20_memtest86 ###
### BEGIN /etc/grub.d/20_memtest86+ ###
menuentry "Memory test (memtest86+)" {
insmod part_msdos
insmod part_msdos
insmod diskfilter
insmod mdraid09
insmod ext2
set root='mduuid/019e28032b26f1e0e368bf24bd0fce41'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint='mduuid/019e28032b26f1e0e368bf24bd0fce41' 2f0165f3-2087-4157-b1e6-f707a995827b
else
search --no-floppy --fs-uuid --set=root 2f0165f3-2087-4157-b1e6-f707a995827b
fi
linux16 /boot/memtest86+.bin
}
menuentry "Memory test (memtest86+, serial console 115200)" {
insmod part_msdos
insmod part_msdos
insmod diskfilter
insmod mdraid09
insmod ext2
set root='mduuid/019e28032b26f1e0e368bf24bd0fce41'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint='mduuid/019e28032b26f1e0e368bf24bd0fce41' 2f0165f3-2087-4157-b1e6-f707a995827b
else
search --no-floppy --fs-uuid --set=root 2f0165f3-2087-4157-b1e6-f707a995827b
fi
linux16 /boot/memtest86+.bin console=ttyS0,115200n8
}
menuentry "Memory test (memtest86+, experimental multiboot)" {
insmod part_msdos
insmod part_msdos
insmod diskfilter
insmod mdraid09
insmod ext2
set root='mduuid/019e28032b26f1e0e368bf24bd0fce41'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint='mduuid/019e28032b26f1e0e368bf24bd0fce41' 2f0165f3-2087-4157-b1e6-f707a995827b
else
search --no-floppy --fs-uuid --set=root 2f0165f3-2087-4157-b1e6-f707a995827b
fi
multiboot /boot/memtest86+_multiboot.bin
}
menuentry "Memory test (memtest86+, serial console 115200, experimental multiboot)" {
insmod part_msdos
insmod part_msdos
insmod diskfilter
insmod mdraid09
insmod ext2
set root='mduuid/019e28032b26f1e0e368bf24bd0fce41'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint='mduuid/019e28032b26f1e0e368bf24bd0fce41' 2f0165f3-2087-4157-b1e6-f707a995827b
else
search --no-floppy --fs-uuid --set=root 2f0165f3-2087-4157-b1e6-f707a995827b
fi
multiboot /boot/memtest86+_multiboot.bin console=ttyS0,115200n8
}
### END /etc/grub.d/20_memtest86+ ###
### BEGIN /etc/grub.d/30_os-prober ###
### END /etc/grub.d/30_os-prober ###
### BEGIN /etc/grub.d/30_uefi-firmware ###
### END /etc/grub.d/30_uefi-firmware ###
### 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 ###
### BEGIN /etc/grub.d/41_custom ###
if [ -f ${config_directory}/custom.cfg ]; then
source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f $prefix/custom.cfg ]; then
source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###
答案1
引导顺序
听起来您的系统启动顺序已设置为系统正在尝试从 USB 驱动器启动或访问 USB 驱动器。我会仔细检查系统的 BIOS 以确保以下内容正确:
- 驱动器的启动顺序是这样的,任何 USB 驱动器都应该位于列表的底部。
尝试另一台计算机?
如果可能的话,我会通过测试插入的驱动器,同时另一台计算机在安装该驱动器的情况下启动,来确认这不是您的特定计算机和 USB 组合的 BIOS/硬件问题。
syslinux + BIOS + ext4 的问题
我遇到了这个标题为:[已解决] 从 USB 闪存驱动器启动的问题在 ArchLinux 论坛上。该线程中的 #8 评论提到了某些 BIOS 无法启动 ext4 分区驱动器的问题。
摘抄
根据 syslinux 维基条目:
虽然 ext4 格式的 USB 驱动器可以在较新的计算机上启动,但如果包含内核和 initrd 的启动分区不在 fat16 分区上,某些计算机可能会挂起
答案2
我建议检查MBR分区表,看看物理驱动器映射是否有问题。很少有网站和工具,您只需粘贴您的 mbr 内容,他们就会为您分析它。另外,请确保您的 USB 不可启动(运行fdisk /dev/sdX
,按p并检查没有分区具有可启动标志)
要获取 mbr 的内容,请运行以下命令:sudo dd if=/dev/sda of=mbr.bin bs=512 count=1 conv=notrunc
然后发出hexdump [-C] mbr.bin
以极客可读格式查看 mbr 代码:D
现在是时候做一些研究了......
从你的描述来看,我觉得这个问题很有可能存在。