This is actually part of my freeNANDmod for the Samsung Galaxy S I9000. However, I would like to introduce this trick to all Samsung Galaxy SII I9100 users too.
The only difference is, for I9000, /dev/block/bml12 is used for holding the modem.bin file, while for I9100, it's /dev/block/mmcblk0p8.
In order to do the trick, put a modem file somewhere, say /data/modem/modem.bin, and create a symlink to it like the example below:
ln -s /data/modem/modem.bin /dev/block/bml12
ln -s /data/modem/modem.bin /dev/block/mmcblk0p8
Put it in a script file and place it under your init.d, usually /etc/init.d (or /system/etc/init.d), and it is suggested to name it with prefix 00 (zero zero) like 00-load-modem so that it can be executed first since scripts in init.d are executed in sequential order.
A sample init script should look like:
rm /dev/block/bml12; ln -s /data/modem/modem.bin /dev/block/bml12
rm /dev/block/mmcblk0p8; ln -s /data/modem/modem.bin /dev/block/mmcblk0p8
The "rm /dev/block/bml12" or "rm /dev/block/mmcblk0p8" command is used to remove the block device bml12 or mmcblk0p8 created by the system during init. You have to remove it first before you can create a symlink with the same name.
To see if it run correctly, put another version of modem instead of the one already on your phone to /data/modem/modem.bin after the init script is created. Reboot your phone and type *#1234# in the dialpad, you should see the new modem version is in use now. Note that after you have replaced the /data/modem/modem.bin with another modem, you'll need to reboot the phone.
So if you want to, you can place different versions of modem.bin file in /data/modem/ and symlink to modem.bin or overwritting it by copy and paste.
reference to my post: freeNANDmod - get more space from NAND - PART IV