you're missing gcc -m32 -c idt.c -o idt.o and you're not linking idt.o and vm86.o. Also first line is not needed because you overwrite bootloader.bin with ld command anyway. You should also use my boot.asm instead since it sets up TSS which is needed tof V86 mode to work.
I would try this:
Code:
nasm -f elf32 boot.asm -o boot.o
gcc -m32 -fno-stack-protector -fno-pic -c kernel.c -o kc.o
cd include
cd VM86
nasm -f elf32 isrs.asm -o isrs.o
nasm -f elf32 cpu.asm -o cpu.o
nasm -f elf32 vm86asm.asm -o vm86asm.o
gcc -m32 -fno-stack-protector -fno-pic -c ints.c -o ints.o
gcc -m32 -fno-stack-protector -fno-pic -c idt.c -o idt.o
gcc -m32 -fno-stack-protector -fno-pic -c vm86.c -o vm86.o ; you have to use it
cp boot.o (the kernel dir)
cp ints.o (the kernel dir)
cp idt.o (the kernel dir)
cp cpu.o (the kernel dir)
cp ints.o (the kernel dir)
cp vm86.o (the kernel dir)
cp vm86asm.o (the kernel dir)
cd ..
cd ..
ld -m elf_i386 -T link.ld -o bootloader.bin boot.o kc.o isrs.o idt.o cpu.o ints.o vm86.o vm86asm.o
cp bootloader.bin OS/boot/
grub-mkrescue -o OS.iso OS/
qemu-system-x86_64 -hda OS.iso
If you really want to use your bootloader.asm you have to set up GDT and TSS just as I do in boot.asm.