1


I have a Seagate 2TB USB2 hard drive, ext4 formatted. If I plug it in to my system and boot, PC gets stuck at "welcome to grub". If I restart without the USB drive plugged in, the system boots normally. I can then plug the drive and use it.

I am using Debian GNU/Linux jessie/sid updated to latest.
Ubuntu livecds/usbs boot fine.

lsusb (of the external drive):

Bus 001 Device 006: ID 0bc2:3332 Seagate RSS LLC Expansion

grub-pc version: 2.00-14

Motherboard only has USB2 ports (Intel H55TC) BIOS is up to date (both old and new firmware experienced the same problem).

What could be causing this?
(testable speculations are welcome, because I ran out of ideas).

Note: Before I found the USB drive was the cause I would simply boot around 10 times, and eventually it will boot normally.

Here is my 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
    Try a BIOS upgrade? – Shiki Jul 12 '13 at 18:15
  • Something about GRUB's boot map. But I don't have anything further than that. – Ignacio Vazquez-Abrams Jul 12 '13 at 18:34
  • @Shiki Tried that, did not help. BIOS is up to date – GuySoft Jul 12 '13 at 20:05
  • @IgnacioVazquez-Abrams I see no mention of the device on /boot/grub/device.map only hd0, hd1, hd2 which are the SATA drives on the system. – GuySoft Jul 12 '13 at 20:19
  • "... which are the SATA drives on the system." Only while the USB drive isn't plugged in... – Ignacio Vazquez-Abrams Jul 12 '13 at 21:04
1

boot order

It sounds like your system's boot order is setup so that the system is attempting to either boot from or access the USB drive. I would double check in the system's BIOS to make sure the following thing is true:

  1. That the boot order of the drives is such that any USB drives should be down at the bottom of the list.

try a different computer?

If possible I'd confirm that it's not a BIOS/hardware issue with your paritcular computer & USB combination by testing out the drive being plugged in while another computer boots with it installed.

Issue with syslinux + BIOS + ext4

I came across this thread titled: [Solved] Problems Booting From USB Flash Drive on the ArchLinux forums. The #8 comment in the thread mentions an issue with certain BIOS' not being able to boot ext4 partitioned drives.

excerpt

According to the syslinux wiki entry:

While an ext4 formatted usb drive may boot on a more recent computer, some computers may hang if the boot partition containing the kernel and initrd are not on a fat16 partition

  • boot order Interesting, didn't think grub might be there. Though I can see clearly grub is not installed on the external drive following this entry. try different computer Not sure I can do that, No free debian 7 machine, only Ubuntu, and we know they boots ok. arch issue The problem is not booting from USB, its booting from the SATA drive while the USB device is connected. – GuySoft Jul 12 '13 at 20:17
  • @GuySoft - understand that you're not booting from it directly but the presence of the drive could still cause confusion because the presence of the would be noticed by the booting OS, so it would attempt to scan/index it has part of any auto detection going on during boot up. – slm Jul 12 '13 at 20:21
  • @sim That seems to be the most logical explanation. But there must be a way to avoid that scan, since Ubuntu livecds boot fine, that's why I asked here :) – GuySoft Jul 29 '13 at 19:11
  • @GuySoft - there is. When the kernel boots you can add parameters to its argument list to not probe certain devices. For example hda=noprobe or hdb=noprobe lines can be added as part of the boot menu so that it doesn't attempt to scan these devices. These commands can be chained together as well to the kernel's arg. list. All the parameters are listed in the man page, man bootparam. Also here: man7.org/linux/man-pages/man7/bootparam.7.html. – slm Jul 29 '13 at 19:19
  • Tested this, does not work, noprobe is set on the kernel line, and it seems like grub gets stuck much before at "welcome to grub" those lines are not even executed at that stage. – GuySoft Aug 9 '13 at 22:07
0

I would suggest to check the MBR partition table, to see maybe you have a problem in the physical drive mapping. There are few websites and tools, where you can just paste the contents of your mbr, and they will analyze it for you. Also, make sure your USB is not bootable (run fdisk /dev/sdX, press p and check that no partition has the bootable flag on)

To get the contents of the mbr run the following command: sudo dd if=/dev/sda of=mbr.bin bs=512 count=1 conv=notrunc Then issue hexdump [-C] mbr.bin to see the mbr code in geek-readable format :D

Now it your time to do some research....

From your description, it sounds to me that there is a good possibility that the problem is there.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.