Move GRUB2 with YAST or otherwise (Thread MIA during forum wobble)

Hi folks, this thread seems to have got lost during the forum recent forum problems, here is a precis… mods/admins feel free to delete if the original turns up!

My OP:

   Most things I would experiment and hope, but with GRUB2 I am nervous of borking my system up; I am sure that this is a simple procedure....
    I have 1 HDD (currently sda) and one SSD (sdb)
    On sdb I have my opensuse 12.3 install plus a MSWinXP dual-booting. /home is also on sdb.
    I USED to have opensuse 11.4 and MSWinXP on sda.
    I installed another MSWinXP and 12.3 on to the SSD afterwards, and it installed/updated GRUB2.
    I have now finished with 11.4, and have deleted it, and have deleted THAT instance of MSWinXP and updated grub, which now correctly only shows my 12.3 and MSWINXP installs, but GRUB2 is still (I think) on the mbr of sda/HDD(or if not then it points to the old legacy grub there?). I would like to move GRUB2 to sdb, but then swap them around in bios so that the SSD is first.
    I guess (?) what I could do, is remove the HDD, boot from a USB livecd and fiddle with grub from there, and then add HDD back in. But is there a 'cleaner' or 'better' way of achieving this? How do I 'format mbr' of the HDD?

    I am happy to use James's script and report here the various GRUB script files...
    Meanwhile here is
    linux-7uwd:~ # fdisk -l

    sda3 is an extended partition containing sda6. I dont know why fdisk reports it as bootable?
    sda6, however is my media store, and could not bear to lose it!
    I would like to force my install to use the swap on the SSD, but when installing 12.3 the YAST installer insisted I use the existing one on the HDD....and I could not work out how to tell it different.

        linux-7uwd:~ # fdisk -l 
        Disk /dev/sda: 300.1 GB, 300090728448 bytes
        255 heads, 63 sectors/track, 36483 cylinders, total 586114704 sectors
        Units = sectors of 1 * 512 = 512 bytes
        Sector size (logical/physical): 512 bytes / 512 bytes
        I/O size (minimum/optimal): 512 bytes / 512 bytes
        Disk identifier: 0x6bf99939


           Device Boot      Start         End      Blocks   Id  System
        /dev/sda3   *   101739645   586099394   242179875    f  W95 Ext'd (LBA)
        /dev/sda5       311453696   315645951     2096128   82  Linux swap / Solaris
        /dev/sda6       315648000   586067967   135209984   83  Linux


        Disk /dev/sdb: 128.0 GB, 128035676160 bytes
        249 heads, 51 sectors/track, 19692 cylinders, total 250069680 sectors
        Units = sectors of 1 * 512 = 512 bytes
        Sector size (logical/physical): 512 bytes / 512 bytes
        I/O size (minimum/optimal): 512 bytes / 512 bytes
        Disk identifier: 0x14067fb6


           Device Boot      Start         End      Blocks   Id  System
        /dev/sdb1   *        2048    70674431    35336192    7  HPFS/NTFS/exFAT
        /dev/sdb2        70674432   250068991    89697280    f  W95 Ext'd (LBA)
        /dev/sdb5        70676480   112627711    20975616   83  Linux
        /dev/sdb6       112629760   116817919     2094080   82  Linux swap / Solaris
        /dev/sdb7       116819968   250056703    66618368   83  Linux

    ps I shall be backing up sda6, when I can work out again how to do a differential back up (rsync??) 

James’ reply:

My answer:

This is what I would do:

Use Yast to change the place of the bootloader code to /dev/sdb.
In the bootloader details, change the disk order. OK. OK.
Next, on reboot, change the BIOS disk order.
Boot

The logic here is that before altering the hardware settings in the BIOS, you prepare the openSUSE system for it.

Thanks Knurpht, I will do that…