Yo tengo el mismo problema.
Este el código de mi kernel:
 
[BITS 16]
    jmp Start
 
GDT:
GDT_NULL:
    dq 0
GDT_CODE:
    dw 0FFFFh
    dw 0
    db 0
    db 10011010b
    db 11001111b
    db 0
GDT_DATA:
    dw 0FFFFh
    dw 0
    db 0
    db 10010010b
    db 11001111b
    db 0
GDT_END:
GDT_DESC:
    db GDT_END - GDT
    dw GDT
    
Start:
    cli
    mov ax, ax
    mov ds, ax
    
    lgdt [GDT_DESC]
    
    mov eax, cr0
    or eax, 1
    mov cr0, eax
    
    jmp 08h:ProtectedMode
    
[BITS 32]
ProtectedMode:
 
    jmp $
    
 
 
Cuando lo ejecuto en VirtualPC, me aparece un mensaje que dice: "Error irrecuperable del procesador". Alguien me podría explicar porque no funciona.