I installed kde 4.0 and grub-install édevésdb doesn`t work

I installed kde 4.0 and grub-install /dev/sdb doesn’t work
I type in that and gives me a disk error when I try to boot it off external. Gnome worked fine but dunno why others not working
/dev/sdb external /dev/sda internal

Add to that I need a bootable iso grub since I can’t boot into opensuse anymore cause I did fixmbr

Is /dev/sdb an external USB drive? If so, you may need to create a new initrd image that preload’s USB drivers. However, I don’t know what you mean by it works in Gnome but not in KDE. A terminal is a terminal and those commands don’t care what window manager your using. Also, if you stick the opensuse install disk in, it should find your installation for you and boot it. Choose the first option in it’s list or just let it time out.

Good Luck!

How do I create initrd image that preload’s?
you mean delete all partitions? on external? and remake them?
I can clear my mbr as well :slight_smile:

Yeah You were right :smiley:
I cleared the partitions, then I made fixmbr run as administrator and should be fine now.
It says non-system disk. The error is gone now :slight_smile: Fixmbr is a program for fixing mbr, I was doing something wrong with it :o
So On Wednesday I will be working on it :smiley:
Solved

With all due respect to @CRC123, I don’t think the initrd is - or solves - the problem. (I’m happy to be corrected by anyone who knows better.) For the initrd to be loaded, and if /boot is located on the external drive, then grub must be able to access that first in order to just get to the initrd.

The primary question is whether grub can see the external drive at boot. If the bios can boot from the external, there is a chance grub can boot from it; grub doesn’t know it’s an external. What you need to do is check /boot/grub/device.map and make sure that both the internal and external drives are specified there. It needs to look like this:

(hd0) /dev/sdb
(hd1) /dev/sda

This tells grub that /dev/sdb, the external, is the first drive in the bios boot sequence. I notice you are using the grub-install script to install grub; why so rather than YaST Boot Loader? In any event, once device.map is fixed, and making sure that /dev/sdb is mounted, then to install grub to the MBR of /dev/sdb, the command is simply: grub-install (hd0)

Now, if you want to boot from /dev/sda (a Windows drive?) and put grub in that drive’s MBR and then boot into openSUSE which is on the external drive, you would do the reverse in device.map, that is, (hd0) is /dev/sda and (hd1) is /dev/sdb. And in the bios, you configure the internal drive for boot. Using grub-install in this case is going to be difficult, the script may not be smart enough to figure it out. YaST may not be able to do this either. So I would use the grub shell. As root, just type “grub”. Then the first command is to point grub to the partition you have /boot installed on. So, if that partition were /dev/sdb1, the first shell command would be:

root (hd1,0)

Be sure to change the “0” if /boot is on a different partition, with the grub partition numbering beginning with a zero. Then you do:

setup --stage2=/boot/grub/stage2 (hd0) (hd1,0)

This tells grub to install itself in the first grub disk (hd0 = /dev/sda per device.map) MBR (no partition is specified), and to point itself to find its stage2 (the OS loader) in the first partition of the second disk (hd1,0 = /dev/sdb1). Then - and this is very important - you type “quit” to exit grub (quit is necessary for grub to actually complete its work).

EDIT: Just saw your additional post. I don’t think you are quite there yet. You’ve figured out why the external drive wasn’t being seen. But for grub to boot from it, you will need to do something like the above.

With all due respect to @CRC123, I don’t think the initrd is - or solves - the problem. (I’m happy to be corrected by anyone who knows better.) For the initrd to be loaded, and if /boot is located on the external drive, then grub must be able to access that first in order to just get to the initrd.

I have had this problem before, however it was an older version of Linux (I can’t remember how old though). From what I know, BIOS’ normally only configure core hardware (Keyboard, storage, mouse, etc.) that the boot loader needs. What happens when you have a USB drive is that the BIOS will present the USB drive as a regular drive. In fact, some BIOS’ have a setting about allowing boot from “external devices” (if it’s not on, the USB drive won’t even be accessible until the OS is completely loaded). So as far as the boot loader knows, the USB drive looks like a normal hard drive. Then, the boot loader finds the boot partitions and sets up the initial ramdisk(initrd) as a filesystem in memory. It then passes off control to the kernel. The initrd is normally small and only includes core drivers (its job is to ‘prime’ the system for the kernel to be loaded). If it doesn’t have the usb-storage, ehci-hcd, and other modules loaded in it, you’ll get disk errors and a kernel panic ‘cause as far as it’s concerned, there’s no hard drive to pull the rest of the OS files off of. The reason I suggested it might be this is because Rukasuzu mentioned there were disk errors. However, I only know a big picture of how the boot process goes and don’t know much about the grub configuration stuff. I would definitely try mingus’ ideas first. If they work, then problem solved, else I would look into making sure the initrd has USB modules/drivers included in it. Hope all goes well : )

All I can do is hope :slight_smile:
First I have to finish fixing my parents laptop I sold them
Then I will see. All I can hope it will work, and be patient
It worked with Gnome thought :smiley: couple days ago

@CRC123 -

You are absolutely right in your description. This is particularly true if the external drive is SATA but the primary internal drives are IDE/PATA. The USB controller drivers are built into the kernel and seen with the scan of the PCI bus, but unless the SATA is added to the initrd the USB/SATA drive won’t be seen initially. Not an issue unless root and/or boot is on that drive. @Rakusuzu’s situation is that if grub is in the MBR of sdb, the drive must be included in what’s called the bios “map” that the bios creates with its scan. If the boot drive is sda and grub is in that drive’s MBR, still the external drive must be in the map for grub to find stage2 and load the initrd and kernel.

@Rakusuzu - for future ref, because my post above assumes the external drive is recognized by the bios and in the map, if that is not the case, you have yet another option. You can create a small (~100MB) partition on the internal drive. Boot from a live-CD or the DVD into rescue mode, format the new /dev/sdb partition as ext3, mount the root partition on /dev/sdb, and copy the contents of its /boot to that new /dev/sda partition. Then install grub to the sda MBR with stage2 being pointed at that sda partition, and in /boot/grub/menu.lst, on the root line specify the same partition. On the kernel line where the kernel’s “root=” parameter is, provide the /dev/sdb partition where openSUSE is installed. Finally, in fstab add a line to mount the /dev/sda boot partition to the root’s /boot mount point. When all done, delete the contents of /boot in the root (/) sdb partition (before mounting the new sda boot). You now have your /boot partition on sda, the rest of openSUSE on sdb, you’re booting from the sda MBR. In this scenario, @CRC123’s advice applies; be sure that any driver needed to access the external drive is in the initrd, because it is needed to mount the root partition. If any of this is not clear, please just ask.

I decided to install on internal.
I removed vista partitions using gparted live,
then i installed linux on internal. Yeah it is much faster.
My internal has sata