Flashing Cyanogenmod9 - Kernel via Odin EDIT: I think the question is more confusing than helpful. I leave it up simply because something else has been closed as a duplicate to this.
My problem was finally solved by flashing a completely fresh stock android.

With my Galaxy S i9000 (galaxysmtd), I can only access download and recovery mode after flashing some recovery kernel via odin.
The latter was done to escape the boot loop that my installed cyanogenmod 9 was stuck in.

Installing the cyanogenmod cm-9.1.0-galaxysmtd.zip from the sdcard from within the recovery mode gives me an error 7. 
This is supposedly because the recovery kernel I flashed was unfit.

My idea now is to flash only the kernel of the cyanogenmod-9.1.0-galaxysmtd as an odin-pda file, boot into recovery again and to then install the full ROM that is still on my sdcard, which should be possible then.

Because I can't boot the phone normally, I don't know how to put anything on the sdcard manually and have to use odin.

I have been reading though a lot of threads now, but the nomenclature seems to be used in such an inconsistent way that googling the right thing is almost impossible. I hope I expressed myself in sufficient clarity.
The key lines to understand why Error 7 occurred is from the recovery.log as shown here:

-- Installing: SDCARD:cm-9.1.0-galaxysmtd.zip
Finding update package...
I:Update location: SDCARD:cm-9.1.0-galaxysmtd.zip
Opening update package...
I:Update file path: /mnt/sdcard/cm-9.1.0-galaxysmtd.zip
Installing update...
I:Trying update-binary.
script aborted: assert failed: getprop("ro.product.device") == "galaxys" || getp
rop("ro.build.product") == "galaxys" ||
       getprop("ro.product.device") == "galaxysmtd" || getprop("ro.build.product
") == "galaxysmtd" ||
       getprop("ro.product.device") == "GT-I9000" || getprop("ro.build.product")
 == "GT-I9000" ||
       getprop("ro.product.device") == "GT-I9000M" || getprop("ro.build.product"
) == "GT-I9000M" ||
       getprop("ro.product.device") == "GT-I9000T" || getprop("ro.build.product"
) == "GT-I9000T"
assert failed: getprop("ro.product.device") == "galaxys" || getprop("ro.build.pr
oduct") == "galaxys" ||        getprop("ro.product.device") == "galaxysmtd" || g
etprop("ro.build.product") == "galaxysmtd" ||        getprop("ro.product.device"
) == "GT-I9000" || getprop("ro.build.product") == "GT-I9000" ||        getprop("
ro.product.device") == "GT-I9000M" || getprop("ro.build.product") == "GT-I9000M"
 ||        getprop("ro.product.device") == "GT-I9000T" || getprop("ro.build.prod
uct") == "GT-I9000T"
E:Error in /mnt/sdcard/cm-9.1.0-galaxysmtd.zip
(Status 7)
Installation aborted.


The fingerprint on the existing ROM, by way of the property ro.product.device or ro.build.product which is found in /system/build.prop did not match the expected one of the following:


galaxys
galaxysmtd
GT-I9000
GT-I9000M
GT-I9000T


In theory, you could edit the build.prop, and change it for this to work, but comes with a big fat juicy warning - "The actions in changing the build.prop's two properties could result in a soft-brick" :)