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.