В такой ситуации часто виснет при старте из-за того, что ждет завершения той программы, которую вы туда вставили (которая благополучно запустилась). Так что, первый шаг - это убедиться, что ваша программа либо завершается, либо исполняется параллельно.
Любую программу можно заставить исполняться параллельно, если запускать с символом &:
startprogram &
В общем случае, надо написать скрипт, который делает именно это действие, сделать его исполняемым и поместить его в /etc/init.d.