Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

I installed Ubuntu 12.04 on my external USB drive, where I have a 700GB NTFS partition followed by the new 6GB ext4 partition and a swap partition (all primary). The GRUB MBR is also installed to the external hard disk.

Since my BIOS puts the external drive as first disk when booting, I removed my internal hard disk before installation in order to avoid ordering problems.

Now when I boot from the external drive, GRUB is stuck at the rescue console with the error "unknown filesystem".

grub rescue> ls
(hd0) (hd0,msdos3) (hd0,msdos2) (hd0,msdos1)

ls (hd0,<any of them>)/ gives me "unknown filesystem", thus also "insmod normal"

GRUB doesn't seem to be able to read my Linux partition as you can see above?! How can I solve this?


Additional info:

bootinfoscript says (this is with the internal drive in again, but that does not make a difference):

Grub2 (v1.99) is installed in the MBR of /dev/sdb and looks at sector 1 of the same hard drive for core.img. core.img is at this location and looks for (,msdos2)/boot/grub on this drive.

sdb1: __________________________________________________________________________

    File system:       ntfs
    Boot sector type:  Windows Vista/7: NTFS
    Boot sector info:  No errors found in the Boot Parameter Block.
    Operating System:  
    Boot files:        

sdb2: __________________________________________________________________________

    File system:       ext4
    Boot sector type:  -
    Boot sector info: 
    Operating System:  Ubuntu 12.04 LTS
    Boot files:        /boot/grub/grub.cfg /etc/fstab /boot/grub/core.img

sdb3: __________________________________________________________________________

    File system:       swap
    Boot sector type:  -
    Boot sector info: 
share|improve this question
    
You will probably find your answer here, this chap (drs305) is an expert on Grub. ubuntuforums.org/search.php?searchid=86421203 –  Sun Dial May 6 '12 at 20:34
    
@SunDial: Thanks for the resource, great tutorials there. But none of them seem to be relevant since GRUB even shows the error for ls (each partition). –  AndiDog May 6 '12 at 20:50
    
OK, is sda your hard drive and sdb the USB?? –  Sun Dial May 6 '12 at 21:04
    
Yes, when I start from the live CD, the internal is /dev/sda and external is /dev/sdb. But when I boot from the external, my bios sets the USB drive as the first disk. That's why I installed with my internal hard drive unplugged. But even if I install Ubuntu with that drive plugged in, same issue... –  AndiDog May 6 '12 at 21:45
add comment

4 Answers

OK, is sda your hard drive and sdb the USB?? Thank you for your reply. I've suggested this to a lot of people and that is to burn a CD of SuperGrub Boot Disc. You boot from that and it will present you with a list of OSs to choose from. Try that next. Following that, what happens if you try to examine the contents of those partitions from a Live CD install?? Are they readable now??

share|improve this answer
add comment

Please refer to this thread on ubuntuforums.org.

share|improve this answer
add comment

I also experienced that issue. But I've found a workaround for this.

My usb drive has first NTFS partition of 430GB (sdg1) followed by linux partition of 10 GB (sdg2) (all primary). I installed Ubuntu (or afterwards Trisquel) to it and had the same error about uknown filesystem.

It was that grub was unable to "see" linux partition after such "large" ntsf partition. I don't know the exact limitations of GRUB2, but my 430GB was above it.

Here is the workaround:

  1. Insall grub to USB HDD with root directory at /dev/sdg1 (NTFS partition). You then will have grub.cfg in /boot/grub/ on that partition.

  2. Copy kernel and inirtd image to /boot/ubuntu/ at /dev/sdg1.

  3. Change grub.cfg to have root at 'hd0,msdos1' and to load kernel and initrd from /boot/ubuntu/.

Done.

Here is my grub.cfg entry, for example:

menuentry 'Ubuntu' { insmod gzio insmod part_msdos insmod ext2 set root='hd0,msdos1' echo 'Loading Linux' linux /boot/iubuntu/vmlinuz-3.5.0-17-generic root=UUID=bdc4249b-ad4c-4f84-9ea0-6e9636768669 ro quiet splash echo 'Loading initial ramdisk ...' initrd /boot/iubuntu/initrd.img-3.5.0-17-generic }

Hope it will help someone.

PS: this workaround won't work with every distro (with ArchBang, for example).

share|improve this answer
add comment

I have had this same problem, I have tried most suggestions found here and in other well answered post with no success.

I kind of found a simpler way of fixing it, and just wanted to share this newfound knowledge with you all, who are as I was trying to solve it in a too complicated way.

So, my NTFS storage partition was almost 2 Tb, which is too big for the ext filesystems if I am correct. There is software to actually move a partition, with all its data, to the back of the drive. Thus you can split it, move the stored data, and create a new partition with ext3 or ext4, or your system of choice, in the beginning of the drive. This made Ubuntu directly bootable without hassle.

I used Minitool Partition Wizard Home edition. And I can assure you, that data is moved, and not wiped. I don't know if gparted moves the data as well?

Best wishes, Carl-Magnus

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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