boot/src/legacy/contains the BIOS bootloader (stage1.asm,stage2.asm).kernel/arch/i386/holds architecture-specific bring-up (entry, linker script, IDT/ISR glue).kernel/core/contains kernel subsystems such as PMM/VMM, heap, shell, panic/debug, and self-tests.kernel/drivers/contains hardware drivers (PIC, PIT, keyboard, ATA, terminal, block/MBR).kernel/fs/implements VFS-related filesystems (nullfs,devfs,pyfs), andkernel/lib/is freestanding utility code.docs/stores setup and roadmap docs;build/is generated output and should not be hand-edited.
make clean && makebuilds the default release image (build/pyramidos.img).make clean && make debugbuilds a debug profile with symbols.make clean && make STRICT=1enables strict warnings (-Werror).make runboots the image in QEMU (qemu-system-i386).- Toolchain: prefer
i686-elf-gcc; the Makefile falls back to nativegcc -m32when unavailable.
- Follow
.editorconfig: 4 spaces for*.c,*.h,*.asm; tabs inMakefile; 2 spaces in docs/YAML/JSON. - Write freestanding C (
-ffreestanding, C11): avoid host libc usage (stdio/stdlib). - Use explicit-width integer types (
uint32_t,uint16_t, etc.) and named constants instead of magic numbers. - Keep naming consistent with the codebase: lowercase
snake_casefor files/functions,UPPER_SNAKE_CASEfor macros/constants.
- There is no host-side unit test framework yet; validation is boot/runtime based.
- Minimum check for each change: build (
makeormake debug) and boot (make run). - At KShell, run
diagnose; for storage/VFS changes also verifyblkinfo,mounts,pyfs_sb, anddiskread 0. - Include exact reproduction steps and observed output when reporting regressions.
- Match existing history style: imperative, capitalized subject lines (example:
Add DevFS virtual filesystem and mount at /dev). - Keep commits focused and bisectable; avoid mixing unrelated refactors.
- PRs should include: scope summary, commands run, boot verification result, and QEMU output/screenshot for behavior changes.
- Request review from the relevant
CODEOWNERSgroup for touched areas.
- This repository is private and all-rights-reserved (see
NOTICE). - Report security-sensitive kernel issues privately to maintainers instead of filing public issues.