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 have a laptop with an internal SSD (let's call it samsung-SSD), and I would like to install ununtu 12.04 on an external SSD connected via USB3 (let's call this one vertex2).

I downloaded an ubuntu iso and created a bootable usb key from it.

Then I booted on the usb key, and followed the ubuntu install:

  /dev/sda is the internal samsung-SSD.
  /dev/sdb is the usb key from which I am installing
  /dev/sdc is the external vertex2 on which I am installing.

The install completes, I boot ubuntu this time from the vertex2. But as the usb key is not here anymore, the vertex2 is known as /dev/sdb. Ubuntu tried to boot on /dev/sdc and fails, because /dev/sdc does not exist.

So a BusyBox terminal shows up, with the message

Gave up waiting for root device. Common problems...

In this terminal, I can do the following:

# only vertex2 is plugged
> ls /dev | grep sd
/dev/sda # samsung SSD
/dev/sda1
/dev/sda2
/dev/sdb # vertex2

# removing vertex2
> ls /dev | grep sd
/dev/sda # samsung SSD
/dev/sda1
/dev/sda2

# pluging usb
> ls /dev | grep sd
/dev/sda # samsung SSD
/dev/sda1
/dev/sda2
/dev/sdb # usb stick

# pluging vertex2 in addition to usb stick
> ls /dev | grep sd
/dev/sda # samsung SSD
/dev/sda1
/dev/sda2
/dev/sdb # usb stick
/dev/sdc # vertex2

Now the vertex2 is know as /dev/sdc (as during the the install).

> exit # this command tries to resume the boot process

And this way I can boot on ubuntu.

So my question is: how do I configure ubuntu so that it tries to boot on /dev/sdb instead of /dev/sdc?

Can I achieve that with mount and chroot?

Edit: my fstab:

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sdc2 during installation
UUID=2586eee0-5f24-462b-b44d-5c9a25aebe6c /               ext2    errors=remount-ro 0       1
# swap was on /dev/sdc5 during installation
UUID=56498034-3361-4d7d-ae7f-dc8e69b582ed none            swap    sw              0       0

What I don't understand is that in my fstab, the vertex2 is known by it's UUID. So it shouldn't matter if it appears as sdb or sdc. And yet I am able to boot only when it appears as sdc... I tried to replace the vertex UUID by sdb in the fstab, and it didn't help. It's like some other file is used to mount drives on boot.


Edit 2: In the boot menu, I can edit entries. If I edit the ubuntu entry (by pressing e), I see this text:

recordfail
        gfxmode $linux_gfx_mode
        insmod gzio
        insmod part_msdos
        insmod ext2
        set root='hd2,msdos2'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd2,msdos2 --hint-efi=hd2,msdos2 --hint-baremetal=ahci2,msdos2  25\
86eee0-5f24-462b-b44d-5c9a25aebe6c
        else
          search --no-floppy --fs-uuid --set=root 2586eee0-5f24-462b-b44d-5c9a25aebe6c
        fi
        linux   /boot/vmlinuz-3.5.0-17-generic root=/dev/sdc2 ro   quiet splash $vt_handoff
        initrd  /boot/initrd.img-3.5.0-17-generic

If I change sdc2 to sdb2, and press f10 to resume boot, ubuntu boots sucessfully (no BusyBox prompt).

This text is located in /boot/grub/grub.cfg. But I should not edit it directly. It has this header:

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

I see no /dev/sdc2 in the grub config :

> sudo grep -r "sdc2" /etc/grub.d/
> #no results

Where sdc2 comes from ? How do I change it permanently to sdb2 ? (The change in the boot menu is only temporary.)

share|improve this question
    
I don't think I can really help too much, but I know in some cases (e.g. fstab), you can refer to devices by either sda1, etc. or by UUID. Obviously the latter is preferred, as it is more stable. I suspect this is similar behaviour for mount, too. –  Sparhawk Feb 10 '13 at 1:43
add comment

1 Answer 1

You should try setting one of:

GRUB_DEVICE_UUID=2586eee0-5f24-462b-b44d-5c9a25aebe6c
GRUB_DEVICE=/dev/sdb

in the file: /etc/default/grub

Then run: sudo update-grub

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.