I solved this problem a long time ago while I was in college.
It is so old that this program used console DOS UI.
Knight initial position can be anywhere on the board. In fact, you can enter it.
Update: I have ported it to Silverlight. Here is the link.