LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Software (https://www.linuxquestions.org/questions/linux-software-2/)
-   -   ubuntu installed on external hard drive, can't startup without external hard drive. (https://www.linuxquestions.org/questions/linux-software-2/ubuntu-installed-on-external-hard-drive-cant-startup-without-external-hard-drive-697304/)

Vanostaajen 01-14-2009 01:23 PM

ubuntu installed on external hard drive, can't startup without external hard drive.
 
I have 2 ubuntu's: 1 on my ineternal hard drive, 1 on my external

When I startup without my ext drive =>GRUB error 21.

And when I plug it in I can choose: the standard ubuntu kernel is the one on my external, and the original one is listed under other...

I'd like to be able to startup without external hard drive and make the ubuntu on my internal drve the standard.


So what do I do now?

hal8000b 01-14-2009 03:16 PM

Plug in your external hard drive, boot the Ubuntu system that is installed on your internal hard drive.

Then install grub to the mbr on the internal drive, as grub is currently installed to the mbr on the external drive, this is why you see grub error 21 when the external drive is not present.

syg00 01-14-2009 03:44 PM

Nothing is ever that simple.
Grub is actually on the MBR of the internal, but refers to a partition on the external for its stage files (and menu.lst). Doing the above will allow boot without the external plugged in, but will (likely) not have any reference to the external in the boot menu. Can be simply added using the menu.lst on the external as an example.

Vanostaajen 01-15-2009 01:49 AM

Ok I'm not that good with coputers: 1)what is MBR, and 2) how do I install grub...?

Sorry but I'm really unexperienced with linux.

syg00 01-15-2009 02:44 AM

Open a terminal, and post the output of this "sudo fdisk -l".

Vanostaajen 01-15-2009 05:31 AM

Tsadaaam:


thomas@Vanessa:~$ sudo fdisk -l

Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x1f7e8491

Device Boot Start End Blocks Id System
/dev/sda1 * 1 18702 150223783+ 83 Linux
/dev/sda2 18703 19457 6064537+ 5 Extended
/dev/sda5 18703 19457 6064506 82 Linux swap / Solaris

Disk /dev/sdb: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x0009af02

Device Boot Start End Blocks Id System
/dev/sdb1 1 42476 341188438+ b W95 FAT32
/dev/sdb2 42477 60801 147195562+ 5 Extended
/dev/sdb5 42477 60052 141179188+ 83 Linux
/dev/sdb6 60053 60801 6016311 82 Linux swap / Solaris

yancek 01-15-2009 08:23 AM

MBR is the master boot record. The Grub bootloader consists of several files. The stage1 file is in the master boot record and will point to the other files of the bootloader. Boot to the Ubuntu you have on the INTERNAL drive, open a terminal and enter the following commands, hit ENTER key after each line:

sudo grub
root (hd0,0)
setup (hd0)
quit

The setup line will put stage1 in the mbr and the root line will have it pointing to the first partition on the first disk, sda1.

Vanostaajen 01-15-2009 10:29 AM

WOW, amazing!
It worked :D

How do you know all this?

Vanostaajen 01-15-2009 11:50 AM

Ok, a new problem has arrived: now I can't boot the ubuntu from my external drive anymore. Is there a way around this?

I'd like to be able to choose which ubuntu I boot when I start my pc with my external hard drive plugged in.

yancek 01-15-2009 01:33 PM

Boot the Ubuntu on the internal drive. Open a terminal and type:

sudo gedit /boot/grub/menu.lst

Don't use Ubuntu but I think that command should get you to the menu.lst file with the gedit text editor. Once there, you need to get the entry from the external Ubuntu menu.lst file and put it in the internal Ubuntu menu.lst file. If you can't see the external Ubuntu when you are in the internal do the following:

sudo mkdir /mnt/sdb5
sudo mount -t ext3 /dev/sdb5 /mnt/sdb5
cat /mnt/sdb5/boot/grub/menu.lst

You should then see the external menu.lst file and have the entry to copy.

Vanostaajen 01-15-2009 03:11 PM

I'm asking this to be sure:

I have this:

Code:

# menu.lst - See: grub(8), info grub, update-grub(8)
#            grub-install(8), grub-floppy(8),
#            grub-md5-crypt, /usr/share/doc/grub
#            and /usr/share/doc/grub-doc/.

## default num
# Set the default entry to the entry number NUM. Numbering starts from 0, and
# the entry number 0 is the default if the command is not used.
#
# You can specify 'saved' instead of a number. In this case, the default entry
# is the entry saved with the command 'savedefault'.
# WARNING: If you are using dmraid do not use 'savedefault' or your
# array will desync and will not let you boot your system.
default                0

## timeout sec
# Set a timeout, in SEC seconds, before automatically booting the default entry
# (normally the first entry defined).
timeout                10

## hiddenmenu
# Hides the menu by default (press ESC to see the menu)
#hiddenmenu

# Pretty colours
#color cyan/blue white/blue

## password ['--md5'] passwd
# If used in the first section of a menu file, disable all interactive editing
# control (menu entry editor and command-line)  and entries protected by the
# command 'lock'
# e.g. password topsecret
#      password --md5 $1$gLhU0/$aW78kHK1QfV3P2b2znUoe/
# password topsecret

#
# examples
#
# title                Windows 95/98/NT/2000
# root                (hd0,0)
# makeactive
# chainloader        +1
#
# title                Linux
# root                (hd0,1)
# kernel        /vmlinuz root=/dev/hda2 ro
#

#
# Put static boot stanzas before and/or after AUTOMAGIC KERNEL LIST

### BEGIN AUTOMAGIC KERNELS LIST
## lines between the AUTOMAGIC KERNELS LIST markers will be modified
## by the debian update-grub script except for the default options below

## DO NOT UNCOMMENT THEM, Just edit them to your needs

## ## Start Default Options ##
## default kernel options
## default kernel options for automagic boot options
## If you want special options for specific kernels use kopt_x_y_z
## where x.y.z is kernel version. Minor versions can be omitted.
## e.g. kopt=root=/dev/hda1 ro
##      kopt_2_6_8=root=/dev/hdc1 ro
##      kopt_2_6_8_2_686=root=/dev/hdc2 ro
# kopt=root=UUID=21592602-9305-4948-b7e5-19c36bbc5ae0 ro

## default grub root device
## e.g. groot=(hd0,0)
# groot=21592602-9305-4948-b7e5-19c36bbc5ae0

## should update-grub create alternative automagic boot options
## e.g. alternative=true
##      alternative=false
# alternative=true

## should update-grub lock alternative automagic boot options
## e.g. lockalternative=true
##      lockalternative=false
# lockalternative=false

## additional options to use with the default boot option, but not with the
## alternatives
## e.g. defoptions=vga=791 resume=/dev/hda5
# defoptions=quiet splash

## should update-grub lock old automagic boot options
## e.g. lockold=false
##      lockold=true
# lockold=false

## Xen hypervisor options to use with the default Xen boot option
# xenhopt=

## Xen Linux kernel options to use with the default Xen boot option
# xenkopt=console=tty0

## altoption boot targets option
## multiple altoptions lines are allowed
## e.g. altoptions=(extra menu suffix) extra boot options
##      altoptions=(recovery) single
# altoptions=(recovery mode) single

## controls how many kernels should be put into the menu.lst
## only counts the first occurence of a kernel, not the
## alternative kernel options
## e.g. howmany=all
##      howmany=7
# howmany=all

## should update-grub create memtest86 boot option
## e.g. memtest86=true
##      memtest86=false
# memtest86=true

## should update-grub adjust the value of the default booted system
## can be true or false
# updatedefaultentry=false

## should update-grub add savedefault to the default options
## can be true or false
# savedefault=false

## ## End Default Options ##

title                Ubuntu 8.10, kernel 2.6.27-9-generic
uuid                21592602-9305-4948-b7e5-19c36bbc5ae0
kernel                /boot/vmlinuz-2.6.27-9-generic root=UUID=21592602-9305-4948-b7e5-19c36bbc5ae0 ro quiet splash
initrd                /boot/initrd.img-2.6.27-9-generic
quiet

title                Ubuntu 8.10, kernel 2.6.27-9-generic (recovery mode)
uuid                21592602-9305-4948-b7e5-19c36bbc5ae0
kernel                /boot/vmlinuz-2.6.27-9-generic root=UUID=21592602-9305-4948-b7e5-19c36bbc5ae0 ro  single
initrd                /boot/initrd.img-2.6.27-9-generic

title                Ubuntu 8.10, kernel 2.6.27-7-generic
uuid                21592602-9305-4948-b7e5-19c36bbc5ae0
kernel                /boot/vmlinuz-2.6.27-7-generic root=UUID=21592602-9305-4948-b7e5-19c36bbc5ae0 ro quiet splash
initrd                /boot/initrd.img-2.6.27-7-generic
quiet

title                Ubuntu 8.10, kernel 2.6.27-7-generic (recovery mode)
uuid                21592602-9305-4948-b7e5-19c36bbc5ae0
kernel                /boot/vmlinuz-2.6.27-7-generic root=UUID=21592602-9305-4948-b7e5-19c36bbc5ae0 ro  single
initrd                /boot/initrd.img-2.6.27-7-generic

title                Ubuntu 8.10, memtest86+
uuid                21592602-9305-4948-b7e5-19c36bbc5ae0
kernel                /boot/memtest86+.bin
quiet

### END DEBIAN AUTOMAGIC KERNELS LIST

# This is a divider, added to separate the menu items below from the Debian
# ones.
title                Other operating systems:
root


# This entry automatically added by the Debian installer for an existing
# linux installation on /dev/sda1.
title                Ubuntu 8.10, kernel 2.6.27-9-generic (on /dev/sda1)
root                (hd0,0)
kernel                /boot/vmlinuz-2.6.27-9-generic root=UUID=b43b2556-6f17-4507-a19a-d9d85b1cf6fa ro quiet splash
initrd                /boot/initrd.img-2.6.27-9-generic
savedefault
boot


# This entry automatically added by the Debian installer for an existing
# linux installation on /dev/sda1.
title                Ubuntu 8.10, kernel 2.6.27-9-generic (recovery mode) (on /dev/sda1)
root                (hd0,0)
kernel                /boot/vmlinuz-2.6.27-9-generic root=UUID=b43b2556-6f17-4507-a19a-d9d85b1cf6fa ro single
initrd                /boot/initrd.img-2.6.27-9-generic
savedefault
boot


# This entry automatically added by the Debian installer for an existing
# linux installation on /dev/sda1.
title                Ubuntu 8.10, kernel 2.6.27-7-generic (on /dev/sda1)
root                (hd0,0)
kernel                /boot/vmlinuz-2.6.27-7-generic root=UUID=b43b2556-6f17-4507-a19a-d9d85b1cf6fa ro quiet splash
initrd                /boot/initrd.img-2.6.27-7-generic
savedefault
boot


# This entry automatically added by the Debian installer for an existing
# linux installation on /dev/sda1.
title                Ubuntu 8.10, kernel 2.6.27-7-generic (recovery mode) (on /dev/sda1)
root                (hd0,0)
kernel                /boot/vmlinuz-2.6.27-7-generic root=UUID=b43b2556-6f17-4507-a19a-d9d85b1cf6fa ro single
initrd                /boot/initrd.img-2.6.27-7-generic
savedefault
boot


# This entry automatically added by the Debian installer for an existing
# linux installation on /dev/sda1.
title                Ubuntu 8.10, memtest86+ (on /dev/sda1)
root                (hd0,0)
kernel                /boot/memtest86+.bin 
savedefault
boot


And I copy/paste this in the gedit file?
no matter where?

I'm sorry to have to ask all these questions but I'm really at the beginnig of my linux discovery (3weeks)

Thanks for the answers!

syg00 01-15-2009 03:53 PM

That looks like the menu.lst from the internal disk, not the external.

Personally I don't like adding to the menu.lst like that because as (kernel) updates come out for your external system (they will, automatically), you'll not see them because it won't update your boot selection.

A couple more questions before I offer another option - how do you want to use the external ?. Only boot it from this machine, or be able to take it to another machine and boot it there also ?.
Is the external (directly) bootable from the BIOS ?

jailbait 01-15-2009 04:20 PM

The following section of code is a title section from your internal drive /boot/grub/menu.lst

Code:



title                Ubuntu 8.10, kernel 2.6.27-7-generic (recovery mode)
uuid                21592602-9305-4948-b7e5-19c36bbc5ae0
kernel                /boot/vmlinuz-2.6.27-7-generic root=UUID=21592602-9305-4948-b7e5-19c36bbc5ae0 ro  single
initrd                /boot/initrd.img-2.6.27-7-generic

There are similar title sections in your external drive /boot/grub/menu.lst. Find the title section in your external drive /boot/grub/menu.lst which corresponds to booting into Ubuntu on your external drive. Then copy that title section to be the last title section in your internal drive /boot/grub/menu.lst.

It will then show up on your boot screen list as the last entry on the list. I also recommend that you change the actual title to something like:

title Ubuntu 8.10 on external drive

--------------------
Steve Stites

yancek 01-15-2009 08:06 PM

If your internal hardrive is 160GB, sda, (hd0)
If your external hardrive is 500GB, sdb, (hd1)
If you followed the instructions in my last post, your last post has the menu.lst from the external hardrive. I would suggest that you copy the entry below into your /boot/grub/menu.lst file on the internal drive. Gedit is not a file, it a text editor like notepad/wordpad in windows.

Quote:

title Ubuntu 8.10, kernel 2.6.27-9-generic
uuid 21592602-9305-4948-b7e5-19c36bbc5ae0
kernel /boot/vmlinuz-2.6.27-9-generic root=UUID=21592602-9305-4948-b7e5-19c36bbc5ae0 ro quiet splash
initrd /boot/initrd.img-2.6.27-9-generic
quiet

Vanostaajen 01-16-2009 03:56 PM

Oh damn,

who should I believe?

which solution is the best?

extra info: yes I want to be able to boot my external ubuntu on other pc's. And yes I can boot from bios directly.

@Yancek: where exactly do I paste this. and do you really mean quiet? or maybe quit?

yancek 01-16-2009 04:54 PM

Look at your output from the fdisk -l command above. It shows sda as a 160GB drive. Is that your internal drive? It also shows sdb as a 500GB drive. Is that your external drive? You have Linux partitions on sda1 and sdb5 which in Grub would be (hd0,0) and (hd1,4) respectively. You ran the commands below to install Grub to the mbr and have it pointing to (hd0,0) which is sda1 and is the Ubuntu you are now able to boot, right?

sudo grub
root (hd0,0)
setup (hd0)
quit

Look at your menu.lst posting. Toward the bottom you will see this line:

Quote:

### END DEBIAN AUTOMAGIC KERNELS LIST
Just below that line you will see the following:

Quote:

This entry automatically added by the Debian installer for an existing
# linux installation on /dev/sda1.
The entries below that are for an "existing installation" so the menu.lst you have posted is the second one you installed which should be the external.

Did you run the commands I suggested in earlier post "sudo mkdir /mnt/sdb5...? Did you get any errors when you did this? If you did not get any errors or have any problems with the commands, you should be in the external menu.lst. I don't know what else you may have done but if you put the entry I suggested in the internal drive Ubuntu /boot/grub/menu.lst file and it is not right, the external just won't boot and we'll try something else.

Also, I didn't mean "quit", if you look at your menu.lst file, what I posted is just a title entry I copied from it.

Also, if you want to have just Ubuntu on the external drive and have it be able to boot when set to first boot priority on another computer, you will then need to put Grub in the mbr of the external drive. Not sure how you want to do this??

Vanostaajen 01-17-2009 02:00 AM

Ok I did it. And it works smootley :D

Thanks everyone for all the help!

Vanostaajen 01-17-2009 02:34 AM

So that everyne understands: when my ext is plugged in I still boot my internal automaticly. But when I press escape I can choose:). And thats just what I wanted.

But I'm not yet able to boot froma windows pc. how can I change that?

Thanks!

yancek 01-17-2009 10:15 AM

Quote:

But I'm not yet able to boot from a windows pc. how can I change that?
Are you talking about connecting your external hard drive to another windows only pc to boot the external with Linux/Ubuntu? As I indicated in my last post, if you want to be able to do that, you will need to install Grub stage1 to the mbr of that external hard drive. Then when you connect it to another computer, you will have to have whatever drive number your external drive is set first in boot priority on that machine.

Vanostaajen 01-19-2009 03:09 AM

Exactly what I'm talking about. So how do I install grub stage 1 to mbr? But I allready know how to make my disk the primary boot.

jailbait 01-19-2009 02:45 PM

Quote:

Originally Posted by Vanostaajen (Post 3413550)

how do I install grub stage 1 to mbr?

Boot into the Linux partition which contains the copy of grub that you want to use. Log in as root (or use sudo) and issue the grub-install command. See:

man grub-install

--------------------
Steve Stites

Vanostaajen 01-20-2009 03:36 AM

Ok, i did the command, but it doesn't tell me how to install grub to the mbr. So could someone please tell me how?

Thanks!

yancek 01-20-2009 08:32 AM

If you haven't made any changes since the last post to your bootloader, you should be able to install Grub to the mbr of the external by booting into the Ubuntu on the external and issuing commands:

sudo grub
root (hd1,4)
setup (hd1)
quit

Vanostaajen 01-20-2009 09:59 AM

Thanks alot,
That was all I needed:-)


All times are GMT -5. The time now is 07:52 PM.