Si no entendí mal entonces la solución sería
30 4 * * * touch -r /etc/banner -d '+2 minute' /etc/banner && reboot
Sí. Se supone que en el arranque, al no quedarse la hora grabada en el router, se parte siempre de una fecha en el pasado. Al terminar el arranque, se toma de fecha, la última de todos los ficheros de /etc. Después, el router se pone en hora con la actual, a través de internet (NTP).
Digamos que la última fecha del /etc es 2016/12/15, y tenemos un cron que se ejecuta cada día. Al ponerse en hora a través de internet, detectaría que hoy 2016/12/17, ya han pasado 2 días desde la última vez ejecutada, y por lo tanto se ejecutaría.
Lo que no tengo tan claro, es por qué touch debería poner la fecha en el futuro, si la fecha de la que partimos es anterior, y todavía no se ha actualizado por NTP, la fecha que pusiera touch, sería todavía en el pasado...

. Para lo que debiera servir, es para que tras el primer reboot, no ocurra un segundo reboot, ya que la fecha en /etc ya sería correcta por el touch... Ummm..., le veo sus lagunas...
Yo, me haría a la idea, de que en el arranque, se ejecutan todas las tareas (recurrentes) del cron inicialmente, y luego, a los intervalos definidos. O parchear el comando con el touch, y además le pondría el sleep, por si acaso. Y el sleep se lo pondría antes del touch, para darle tiempo al demonio NTP a poner en hora el reloj interno, y por lo tanto al hacer touch, se ponga realmente la hora correcta en /etc.
En resumen, yo pondría sleep && touch && reboot.
Todo esto parece un derivado de efectos colaterales, no muy fácil de esquivar...