В зависимости от того, что вы взламываете, может быть лучше использовать UML (пользовательский режим Linux). Если вы возитесь с не зависящим от оборудования кодом, то я думаю, что это очень поможет.
UML позволяет вам скомпилировать ядро как обычную программу пользовательского режима и запустить его как любое другое приложение в вашей системе. Поскольку он запускается как обычное приложение, вы можете очень легко отладить его с помощью gdb или любого другого отладчика.
Вот хорошее начало для UML