Lo acabo de hacer para Windows, es tu tarea y no te voy a dar el codigo pero la logica deberia ser la misma y si pones un poco de esfuerzo lo vas a poder hacer:
1. Deshabilitas las interrupciones con la instruccion cli.
2. Con sidt conseguis el registro idtr, el primer WORD es la entrada limite y el siguiente DWORD es la direccion en memoria de la primera entrada (ver manual de Intel).
3. Con la direccion de la primera entrada + 8 * entrada deseada tenes la direccion de la entrada de la interrupcion que queres habilitar. Si queres usar la interrupcion 0x69 entonces: idtEntry = base + 8 * 0x69;
4. Modificas la entrada en cuestion para apuntar a tu funcion, esto lo tenes que hacer teniendo muy en cuenta el formato de una entrada, lo ideal es que leas el manual de Intel.
5. Habilitas las interrupciones con la instruccion sti.
Intel® 64 and IA-32 Architectures Software Developer’s ManualPD. Interrupt gate es lo que te interesa. Y en tu funcion podes empezar poniendo solo iretd para volver, con un breakpoint ya podes depurar usando el ejecutable que llame a tu interrupcion.
Me olvidaba de decir, esto solo lo podes hacer desde un modulo de modo Kernel.