2
1
Fork
You've already forked kstarter
0
Some OsDev tool set with main goal - load OS files to memory and map them to needed addresses, using amd64 (x86_64), but also different 64-bit CPU boards in future . Mostly multiboot2 "kernel" set and image making scripts.
  • Assembly 55.7%
  • C 42.3%
  • Makefile 1.9%
2026年07月13日 20:12:40 +03:00
barebios barebios :: Insert delay and wait - so no race ... 2026年07月13日 20:12:40 +03:00
mb2/p64starter Starting point for mb2/p64starter 2026年07月13日 18:09:47 +03:00
realmode/realc64 Documentation: ks_smifs usage, all formatting. Delete some comments. 2025年09月15日 10:58:18 +03:00
utl smifs: add option -c for easy image check 2026年07月10日 14:04:17 +03:00
LICENSE Initial commit 2025年03月06日 06:53:16 +00:00
README.md barebios :: Insert delay and wait - so no race ... 2026年07月13日 20:12:40 +03:00

kstarter

Some OsDev tool set with main goal - load OS files to memory and map them to needed addresses, using amd64 (x86_64), but also different 64-bit CPU boards in future . Mostly multiboot2 "kernel" set and image making scripts.

utl

Some programs for OS development:

  • ks_smifs : makes floppy image for using as memory image for OS experiments and also as boot floppy image for QEMU;

realmode

Boot sectors and realmode OS loaders:

  • realc64 : boot sector and OS loader written in C / NASM combination; enters long mode directly;

barembios - Pure64 bios variant with some changes.

In this folder Bare Metal Pure64 loader used. Floppy disk variant is used, cause bios disk variant not supported by QEMU (qemu-x86_64 version 7.2.22 (Debian 1:7.2+dfsg-7+deb12u18+b2)).

Changes in bios boot sector:

  • some optimizations for code size made to do more
  • second stage loader fixed size 16 sectors (3 - 18) and with no kernel (really some bytes less, but this is not matter)
  • kernel have fixed size 18 sectors = 9 Kb in next 18 sectors (can be less but not assume zeroed .data)
  • floppy is loaded to 0x00200000 using bios extended functions 1

Changes in second stage loader:

  • fixed size kernel from fixed address
  • hook to get additional cores to kernel

Also Pure64 documentation is consolidated to one file, and used only needed boot sector code.

mb2 - loaders using Grub2

p64starter - 64-bit OS loader using Pure64

Loading chain: Grub2 -> kstarter.sys -> pure64.sys -> kernel.bin

kernel.bin - the same demonstration kernel from barebios

pure64.sys - the same second stage loader from barebios

Now pure64.sys and kernel.bin are build using helper.sh: use barebios make copies files and make clean.

This sub - project key is kstarter.sys :

  • using multyboot specification asks Grub2 for frame buffer and memory map;
  • place p64.img loaded as module to address 0x00200000 1
  • using Grub2 memory map, makes Pure64 compilant memory map 1
  • use replaced p64.img to copy pure64.sys and kernel.bin to fixed addresses (same as in barebios ) 1
  • jumps to pure64.sys (and after this will be replaced - kernel.bin will be place to the same place) 1

kstarter.sys sources are in folder pks.


  1. Planned. ↩︎