I'm sorry if you already posted this but, could you post the exact MSI motherboard model? If you do I'll be happy to download and review the manual to see if there are any "gocthas" in the BIOS settings.
One thing that you mentioned mentioned is the SATA settings. I'm used to seeing three choices, IDE, AHCI and RAID. You mentioned "IDE" and "RAID". The "IDE" setting that I'm used to seeing makes the SATA ports appear to be a normal Primary and Secondary IDE controller. That isn't usually what you want and it also prevents you from using any IDE ports that are on the motherboard. Setting IDE mode may actually cause Linux to use the IDE/ATA driver instead of the SATA driver. The AHCI mode usually assigns the SATA ports somewhere else besides the normal IDE controller addresses and enables faster DMA modes. I have also seen some BIOS software where you have to set RAID to get the AHCI mode. In that case just don't create any RAID arrays and the BIOS will run the SATA ports using AHCI mode. Unfortunately every BIOS is different.
Don't confuse the boot-loader (lilo) with the kernel. You can install multiple copies of lilo to different disks but you MUST install lilo with the BIOS hard disk boot order set the way it will be when you use that copy of lilo. When you switch the default boot disk between the SATA and IDE you will have to re-install lilo (use the lilo command). All the different copies of lilo can boot the same kernel files but they will only find the files if the disks are configured the way they were when lilo was installed.
The BIOS numbers hard disks like this.
0x80 - First hard disk (boot disk)
0x81 - Second hard disk
0x82 - Third hard disk
0x83 - Fourth hard disk
I do mean hard disks and NOT partitions or drive letters. All the partitions on the first hard disk use drive ID 0x80 because the BIOS doesn't know anything about partitions.
What the "lilo" installation command does is convert all of the Linux device names into the corresponding BIOS drive IDs. That's fine as long as those disks will be configured the same way when lilo actually boots. When the BIOS boots from a different disk it may assign different drive IDs even when that isn't necessary. It has to assign 0x80 to the boot disk but it might also rearrange the other IDs.
I recommend using grub for multi-booting especially if you will be booting from multiple hard disks. You can specify the file locations of the kernel and initrd to grub at boot time and boot from kernels that aren't even referenced in the grub configuration menu file.
If your ultimate goal is to boot from the SATA drive then I suggest that you configure it as the first hard disk boot drive and leave it configured that way. Double check the BIOS settings and verify that the kernel is detecting the device as an SATA drive and not an ATA/IDE drive. You can install lilo using any Linux OS as long as you identify the file locations using the device names that OS expects (not the OS ultimately being booted). Just make sure not to change the BIOS boot device after installing lilo.
What I usually do is boot the Slackware Setup CD.
Then I mount the new OS partition.
mount /dev/sda1 /mnt
I change the root to the new OS.
Mount the pseudo file-systems used by lilo to get system information.
mount -t proc none /proc
mount -t sysfs none /sys
Build the kernel if you want.
make clean all
Copy the kernel files to the /boot directory.
Change to the "etc" directory and edit the lilo configuration.
After saving "lilo.conf" then use the lilo command.
And finally un-mount everything.
Use Ctrl Alt Delete to reboot.
You have to do the lilo part of this (not the kernel build) whenever you rearrange the hard disk ordering in the BIOS or update the kernel file locations or files.
Using the kernel option "rdinit=ro" causes Linux to use the "init" process from the "initrd" image. To mount the root device read only just use the "ro" option (no quotes). I think the "ro" option is what you actually want to use. Are you using an "initrd" image? The only reason to do that is if the root device driver (SATA or IDE) is not built into the kernel that you selected. To use an initrd image you have to specify the "initrd=" option in "lilo.conf". You should not have to include the "rdinit=ro" option in the boot command to lilo.