{"id":47682640,"url":"https://github.com/fajarkraton/fajaros-x86","last_synced_at":"2026-04-14T00:00:22.427Z","repository":{"id":345484032,"uuid":"1185935865","full_name":"fajarkraton/fajaros-x86","owner":"fajarkraton","description":"FajarOS Nova v2.1.0 — x86_64 bare-metal OS written 100% in Fajar Lang. 139 modules, 36K LOC, 240+ commands. Compiler-enforced privilege isolation. VirtIO-GPU, ext2, TCP/IP, SMP, ELF loader. Verified with Fajar Lang v7.0.0. Made in Indonesia.","archived":false,"fork":false,"pushed_at":"2026-04-11T10:51:58.000Z","size":1322,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-11T12:25:06.251Z","etag":null,"topics":["bare-metal","ext2","fajar-lang","gpu-computing","indonesia","kernel","operating-system","os-development","systems-programming","tcp-ip","x86-64"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fajarkraton.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-19T04:55:44.000Z","updated_at":"2026-04-11T10:45:49.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/fajarkraton/fajaros-x86","commit_stats":null,"previous_names":["fajarkraton/fajaros-x86"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/fajarkraton/fajaros-x86","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fajarkraton%2Ffajaros-x86","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fajarkraton%2Ffajaros-x86/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fajarkraton%2Ffajaros-x86/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fajarkraton%2Ffajaros-x86/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fajarkraton","download_url":"https://codeload.github.com/fajarkraton/fajaros-x86/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fajarkraton%2Ffajaros-x86/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31776013,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-13T20:17:16.280Z","status":"ssl_error","status_checked_at":"2026-04-13T20:17:08.216Z","response_time":93,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bare-metal","ext2","fajar-lang","gpu-computing","indonesia","kernel","operating-system","os-development","systems-programming","tcp-ip","x86-64"],"created_at":"2026-04-02T14:06:39.636Z","updated_at":"2026-04-14T00:00:22.396Z","avatar_url":"https://github.com/fajarkraton.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FajarOS Nova -- x86_64 Operating System Written 100% in Fajar Lang\n\n[![Version](https://img.shields.io/badge/version-v3.0.0_Nusantara-blue)](https://github.com/fajarkraton/fajaros-x86/releases/tag/v3.0.0)\n[![Files](https://img.shields.io/badge/modules-163_.fj_files-green)](https://github.com/fajarkraton/fajaros-x86)\n[![LOC](https://img.shields.io/badge/LOC-47%2C821-orange)](https://github.com/fajarkraton/fajaros-x86)\n[![Compiler](https://img.shields.io/badge/compiler-Fajar_Lang_v26.1.0--phase--a-blueviolet)](https://github.com/fajarkraton/fajar-lang)\n[![Shell](https://img.shields.io/badge/shell-119_commands_(14_LLM)-purple)](https://github.com/fajarkraton/fajaros-x86)\n[![LLM E2E](https://img.shields.io/badge/LLM_E2E-SmolLM--135M_v5%2Fv6_in_kernel-success)](https://github.com/fajarkraton/fajaros-x86)\n[![Ring 3](https://img.shields.io/badge/Ring_3-user_mode_works-success)](https://github.com/fajarkraton/fajaros-x86)\n[![FajarQuant](https://img.shields.io/badge/FajarQuant-Phase_1%2B2_kernel_native-orange)](https://github.com/fajarkraton/fajaros-x86)\n[![License](https://img.shields.io/badge/license-MIT-brightgreen)](LICENSE)\n[![Made in](https://img.shields.io/badge/made_in-Indonesia-red)](https://primecore.id)\n\n\u003e **The world's first operating system with compiler-enforced privilege isolation.**\n\u003e Written entirely in [Fajar Lang](https://github.com/fajarkraton/fajar-lang) --\n\u003e `@kernel`, `@device`, and `@safe` annotations prevent privilege violations at compile time.\n\u003e No C. No assembly files. No other OS has this.\n\n**Made in Indonesia** by [Fajar](https://github.com/fajarkraton) (PrimeCore.id)\n\n---\n\n## Why FajarOS Nova?\n\nMost hobby operating systems are written in C or Rust with inline assembly. FajarOS Nova\ntakes a fundamentally different approach: every line of code -- from the bootloader constants\nto the TCP state machine -- is written in **Fajar Lang**, a statically-typed systems language\ndesigned for embedded ML and OS integration.\n\nThe key innovation is **compiler-enforced context safety**:\n\n```fajar\n@kernel fn irq_handler() {\n    // Compiler ALLOWS: asm!(), port I/O, page tables, MMIO\n    // Compiler REJECTS: heap strings, tensor ops\n    let status = port_inb(0x3F8 + 5)\n    asm!(\"cli\")\n}\n\n@device fn classify(image: Tensor) -\u003e i64 {\n    // Compiler ALLOWS: tensor ops, AVX2, GPU dispatch\n    // Compiler REJECTS: raw pointers, IRQ manipulation\n    let output = tensor_matmul(weights, image)\n    tensor_argmax(tensor_softmax(output))\n}\n\n@safe fn main() {\n    // Compiler ALLOWS: syscalls, strings, collections\n    // Compiler REJECTS: raw pointers, IRQ, direct hardware\n    let result = classify(load_image(\"/data/digit.raw\"))\n    println(f\"Predicted: {result}\")\n}\n```\n\n**\"If it compiles in Fajar Lang, it's safe to deploy on hardware.\"**\n\n---\n\n## Quick Start\n\n### Prerequisites\n\n| Tool | Version | Install |\n|------|---------|---------|\n| [Fajar Lang](https://github.com/fajarkraton/fajar-lang) | v7.0.0+ | `cargo install fajar-lang` |\n| QEMU | 8.0+ | `sudo apt install qemu-system-x86` |\n| GRUB2 | 2.0+ | `sudo apt install grub-pc-bin grub-common xorriso mtools` |\n| GNU Make | 4.0+ | `sudo apt install build-essential` |\n\n### Build and Run\n\n```bash\ngit clone https://github.com/fajarkraton/fajaros-x86.git\ncd fajaros-x86\n\n# Build the kernel (concatenates 163 .fj files, compiles to ELF)\nmake build\n\n# Boot in QEMU with serial console\nmake run\n```\n\n### Expected Boot Output\n\n```\n[NOVA] FajarOS Nova v3.0.0 Nusantara booted (62 init stages)\n[NOVA] 47821 LOC | 119 commands (incl. 14 LLM) | Preemptive | 100% Fajar Lang\n[NOVA] Frame allocator: 32768 frames (128MB)\n[NOVA] RamFS: 64 entries, 832KB data\n[NOVA] Init system: 16 services registered\n[NOVA] SMP: 4 cores online\n============================================\n  FajarOS Nova v3.0.0 -- x86_64 Shell\n  Written 100% in Fajar Lang\n============================================\n\nType 'help' for available commands.\n\nnova\u003e _\n```\n\n---\n\n## Architecture\n\nFajarOS Nova uses a five-layer architecture. Context annotations enforce strict\nisolation between layers at compile time -- a `@safe` application cannot call\n`port_write`, and a `@kernel` interrupt handler cannot allocate heap memory.\n\n```\n+---------------------------------------------------------------+\n|  Layer 5: Applications (@safe)                      Ring 3    |\n|  Shell, MNIST classifier, editor, compiler, login, pkgmgr    |\n+---------------------------------------------------------------+\n|  Layer 4: OS Services (@safe + @device)             Ring 3    |\n|  Init, VFS, BLK, NET, display, input, GPU, auth, packages    |\n+---------------------------------------------------------------+\n|  Layer 3: Filesystems (@kernel)                     Ring 0    |\n|  RamFS, FAT32, ext2, VFS mount table, journaling, fsck       |\n+---------------------------------------------------------------+\n|  Layer 2: HAL Drivers (@kernel)                     Ring 0    |\n|  Serial, VGA, keyboard, PCI, NVMe, VirtIO, xHCI, GPU         |\n+---------------------------------------------------------------+\n|  Layer 1: Microkernel (@kernel + @unsafe)           Ring 0    |\n|  Boot, GDT/IDT, paging, LAPIC, scheduler, syscall, SMP       |\n+---------------------------------------------------------------+\n|  Hardware: Intel Core i9-14900HX / QEMU x86_64               |\n+---------------------------------------------------------------+\n```\n\n### Context Safety Model\n\n| Annotation | Ring | What It Can Do | What the Compiler Rejects |\n|------------|------|----------------|---------------------------|\n| `@kernel` | 0 | `asm!()`, port I/O, page tables, MMIO, IRQ | Heap allocation, tensor ops, string concat |\n| `@device` | 0/3 | Tensor ops, GPU dispatch, AVX2, SIMD | Raw pointers, IRQ manipulation |\n| `@safe` | 3 | Syscalls, strings, collections, math | Raw pointers, IRQ, port I/O, direct hardware |\n| `@unsafe` | 0 | Everything (boot, context switch only) | Nothing -- use sparingly |\n\n---\n\n## Features\n\n### Memory Management\n- Bitmap frame allocator (32,768 frames / 128 MB)\n- 4-level page tables (PML4 / PDPT / PDT / PT) with NX bit\n- Copy-on-Write fork with refcounted page tables and page fault handler\n- Freelist heap allocator with split/merge (`kmalloc` / `kfree`)\n- Slab allocator with power-of-2 size classes\n\n### Process Management\n- Preemptive multitasking with timer-driven context switch (round-robin)\n- 16-entry process table (ready / running / blocked / zombie)\n- `fork()` with CoW, `exec()` from FAT32/ramfs with `argv`\n- `waitpid()`, signals, job control, session timeout\n- Per-process file descriptor table (stdin / stdout / stderr)\n\n### Syscalls\n- 34 syscalls via table dispatch (`EXIT` through `GPU_DISPATCH`)\n- `SYSCALL` / `SYSRET` mechanism (MSR-configured)\n- 5 Ring 3 user programs (hello / goodbye / fajar / counter / fibonacci)\n\n### Storage and Filesystems\n- NVMe driver (PCI detection, admin queue, I/O queue, sector R/W)\n- FAT32 (BPB parse, cluster chain, directory listing, file R/W/delete)\n- ext2 (superblock, block groups, inode read, directory traversal)\n- RamFS (64 entries, 832 KB data area)\n- VFS with mount table, `/dev` (null/zero/random), `/proc` (version/uptime/cpuinfo)\n- Hierarchical directories, symlinks, hardlinks\n- Write-ahead journaling with `fsck` recovery\n- USB mass storage (xHCI)\n\n### Networking\n- TCP state machine (RFC 793) with SYN/ACK/FIN/RST\n- UDP send/receive\n- HTTP server (GET/POST, static files, API endpoints)\n- Socket API (bind / listen / accept / connect / send / recv)\n- Echo server\n- DNS resolver\n- TLS handshake framework\n- VirtIO-Net driver (PCI discovery, Ethernet frame send/receive)\n- ARP request/reply with cache table\n- IPv4 header construction with checksum\n- ICMP echo request/reply (ping)\n\n### GPU and Compute\n- VirtIO-GPU driver (framebuffer 320x200, 2D drawing primitives)\n- GPU compute dispatch (matmul, vecadd) via syscall\n- 16-buffer compute pool (4 KB each)\n- GPU detection (NVIDIA / Intel / AMD via PCI class)\n\n### Security and Multi-User\n- 16 user accounts with login / logout / passwd\n- `chmod` / `chown` with `rwxrwxrwx` permission model\n- 12 capability bits for fine-grained access control\n- NX bit on data pages, stack guard (unmapped page below stack)\n- Ring 3 userspace with SYSCALL/SYSRET\n- ASLR-ready address space layout\n- Resource limits per process\n\n### SMP (Symmetric Multiprocessing)\n- AP trampoline with INIT-SIPI-SIPI boot sequence\n- Per-CPU scheduling\n- Test-and-set spinlocks\n\n### Shell\n- 240+ built-in commands\n- Pipes (`cmd1 | cmd2 | cmd3`)\n- Redirection (`\u003e`, `\u003e\u003e`, `\u003c`)\n- Environment variables (`$VAR`, `export`, `unset`)\n- Shell scripting (`if` / `for` / `while`, `test -f` / `-d`)\n- Job control (`bg`, `fg`, `jobs`)\n\n### Init System and Services\n- 16-service init system with runlevels\n- `syslogd`, `crond`, auto-restart on crash\n- Package manager (`pkg install` / `remove` / `list` / `search` / `update` / `upgrade`)\n- 5 standard packages\n\n### Debugging\n- GDB remote stub (RSP protocol)\n- Software breakpoints, watchpoints\n- Thread query, memory map\n- `make debug` starts QEMU with GDB server on port 1234\n\n### ELF Loader\n- ELF64 parser with `PT_LOAD` segment loader\n- `exec` from FAT32 or ramfs with argument passing\n- x86_64-user target for Ring 3 ELF compilation\n\n---\n\n## Module Structure\n\n```\nfajaros-x86/                          163 .fj files, 47,821 LOC\n|\n+-- kernel/                           Microkernel core\n|   +-- main.fj                       Entry point (kernel_main + shell loop)\n|   +-- boot/constants.fj             Global constants, magic numbers\n|   +-- mm/                           Memory management\n|   |   +-- frames.fj                 Bitmap frame allocator\n|   |   +-- paging.fj                 4-level page tables (PML4)\n|   |   +-- heap.fj                   Freelist heap (kmalloc/kfree)\n|   |   +-- slab.fj                   Slab allocator (size classes)\n|   |   +-- cow.fj                    Copy-on-Write page fault handler\n|   +-- sched/                        Process management\n|   |   +-- process.fj                Process table (16 PIDs)\n|   |   +-- scheduler.fj              Round-robin scheduler\n|   |   +-- smp.fj                    SMP boot (INIT-SIPI-SIPI)\n|   |   +-- signals.fj                Signal delivery\n|   |   +-- spinlock.fj               Test-and-set spinlock\n|   +-- syscall/                      System call interface\n|   |   +-- entry.fj                  SYSCALL stub, MSR config\n|   |   +-- dispatch.fj               Syscall table (34 entries)\n|   |   +-- elf.fj                    ELF64 parser + PT_LOAD loader\n|   +-- ipc/                          Inter-process communication\n|   |   +-- message.fj                Message queue\n|   |   +-- pipe.fj, pipe_v2.fj       Circular pipe (4KB, refcounted)\n|   |   +-- channel.fj                Typed channels\n|   |   +-- notify.fj                 Event notifications\n|   |   +-- shm.fj                    Shared memory regions\n|   +-- process/                      Process lifecycle\n|   |   +-- fork.fj                   fork() with CoW\n|   |   +-- exec.fj                   exec() from filesystem\n|   |   +-- wait.fj                   waitpid() + zombie reaping\n|   |   +-- exit.fj                   Process termination\n|   +-- signal/                       POSIX-style signals\n|   |   +-- signal.fj                 Signal dispatch\n|   |   +-- jobs.fj                   Job control (bg/fg)\n|   +-- auth/                         Authentication\n|   |   +-- users.fj                  User database (16 accounts)\n|   |   +-- permissions.fj            rwxrwxrwx model\n|   |   +-- sessions.fj               Login sessions + timeout\n|   +-- security/                     Hardening\n|   |   +-- capability.fj             12 capability bits\n|   |   +-- limits.fj                 Resource limits\n|   |   +-- hardening.fj              FPU init, Ring 3, RDRAND\n|   +-- debug/                        Debugging\n|   |   +-- gdb_stub.fj               GDB RSP server\n|   |   +-- gdb_ext.fj                Extended GDB commands\n|   +-- hw/                           Hardware detection\n|   |   +-- detect.fj                 CPU/chipset identification\n|   |   +-- acpi.fj                   ACPI table parsing\n|   |   +-- pcie.fj                   PCIe enumeration\n|   |   +-- uefi_boot.fj              UEFI boot protocol\n|   +-- interrupts/                   Interrupt management\n|   |   +-- lapic.fj                  Local APIC + IOAPIC\n|   |   +-- timer.fj                  PIT / LAPIC timer\n|   +-- compute/                      GPU compute\n|   |   +-- buffers.fj                Compute buffer pool\n|   |   +-- kernels.fj                matmul, vecadd dispatch\n|   +-- core/                         Core subsystems\n|   |   +-- boot.fj, mm.fj, irq.fj   Low-level primitives\n|   |   +-- sched.fj, ipc.fj          Scheduling + IPC core\n|   |   +-- syscall.fj                Syscall core\n|   |   +-- smp_sched.fj              SMP-aware scheduling\n|   |   +-- mm_advanced.fj            Advanced memory ops\n|   |   +-- security.fj               Security policy engine\n|   |   +-- fast_ipc.fj               Fast-path IPC\n|   |   +-- stability.fj              Stability monitors\n|   |   +-- elf_loader.fj             ELF loading core\n|   +-- stubs/                        Stub interfaces\n|   |   +-- console.fj                Console abstraction\n|   |   +-- driver_stubs.fj           Driver interface stubs\n|   |   +-- framebuffer.fj            Framebuffer stub\n|   |   +-- gpu_stub.fj               GPU dispatch stub\n|   +-- ring3_embed.fj                Embedded Ring 3 programs\n|\n+-- drivers/                          Hardware drivers\n|   +-- serial.fj                     16550 UART (COM1, 115200 baud)\n|   +-- vga.fj                        VGA text console (80x25, 16 colors)\n|   +-- keyboard.fj                   PS/2 keyboard (shift, capslock, scancodes)\n|   +-- pci.fj                        PCI bus enumeration + lspci\n|   +-- nvme.fj                       NVMe block device (admin + I/O queues)\n|   +-- virtio_blk.fj                 VirtIO block device\n|   +-- virtio_net.fj                 VirtIO network (Ethernet/ARP/IPv4/ICMP/TCP/UDP)\n|   +-- virtio_gpu.fj                 VirtIO-GPU (framebuffer 320x200)\n|   +-- xhci.fj                       USB 3.0 xHCI host controller\n|   +-- gpu.fj                        GPU detection (NVIDIA/Intel/AMD)\n|\n+-- fs/                               Filesystems\n|   +-- ramfs.fj                      RAM filesystem (64 entries)\n|   +-- fat32.fj                      FAT32 (BPB, cluster chain, R/W)\n|   +-- ext2_super.fj                 ext2 superblock + block groups\n|   +-- ext2_ops.fj                   ext2 inode + directory ops\n|   +-- vfs.fj                        Virtual filesystem layer\n|   +-- directory.fj                  Hierarchical directory support\n|   +-- links.fj                      Symlinks + hardlinks\n|   +-- journal.fj                    Write-ahead log journaling\n|   +-- fsck.fj                       Filesystem check + recovery\n|\n+-- services/                         Userspace services (IPC-based)\n|   +-- init/                         Init system (PID 1)\n|   |   +-- main.fj, service.fj       Service registry (16 slots)\n|   |   +-- runlevel.fj               Runlevel management\n|   |   +-- daemon.fj                 Daemon lifecycle\n|   |   +-- shutdown.fj               Graceful shutdown\n|   +-- blk/main.fj, journal.fj       Block device service\n|   +-- net/                          Network stack service\n|   |   +-- main.fj, socket.fj        Socket API\n|   |   +-- tcp.fj, tcp_v2.fj         TCP state machine (RFC 793)\n|   |   +-- udp.fj                    UDP send/receive\n|   |   +-- http.fj, httpd.fj         HTTP client + server\n|   |   +-- dns.fj                    DNS resolver\n|   |   +-- tls.fj                    TLS handshake\n|   |   +-- stats.fj                  Network statistics\n|   +-- vfs/main.fj                   VFS service\n|   +-- display/main.fj               Display service\n|   +-- input/main.fj                 Input service\n|   +-- gpu/main.fj                   GPU compute service\n|   +-- gui/main.fj                   GUI window manager\n|   +-- auth/main.fj                  Authentication service\n|   +-- shell/main.fj                 Shell service\n|   +-- pkg/                          Package manager\n|       +-- manager.fj                Install/remove/update\n|       +-- registry.fj               Package registry\n|\n+-- shell/                            Shell implementation\n|   +-- commands.fj                   240+ commands + dispatch\n|   +-- pipes.fj                      Pipe operator (|)\n|   +-- redirect.fj                   I/O redirection (\u003e \u003e\u003e \u003c)\n|   +-- vars.fj                       Environment variables ($VAR)\n|   +-- control.fj                    Control flow (if/for/while)\n|   +-- scripting.fj                  Shell script execution\n|\n+-- apps/                             User applications\n|   +-- user_programs.fj              Ring 3 programs (5 embedded)\n|   +-- mnist.fj                      MNIST digit classifier\n|   +-- editor/main.fj                Text editor\n|   +-- compiler/main.fj              In-OS compiler\n|   +-- pkgmgr/main.fj                Package manager UI\n|   +-- ring3_hello.fj                Ring 3 hello world\n|\n+-- lib/user_syscall.fj               Userspace syscall wrappers\n+-- arch/aarch64/                     ARM64 cross-platform stubs\n+-- tests/                            Test harnesses\n|   +-- kernel_tests.fj               Kernel unit tests\n|   +-- benchmarks.fj                 Performance benchmarks\n|   +-- context_enforcement.fj        @kernel/@safe violation tests\n|   +-- arm64_harness.fj              ARM64 cross-testing\n+-- tools/                            Build utilities\n|   +-- make_iso.sh                   ISO generation script\n|   +-- run_qemu.sh                   QEMU launch wrapper\n+-- Makefile                          Build system (concatenation)\n+-- fj.toml                           Project configuration\n+-- grub.cfg                          GRUB2 bootloader config\n```\n\n---\n\n## QEMU Targets\n\n| Target | Command | Description |\n|--------|---------|-------------|\n| Serial console | `make run` | Boot with serial I/O, no graphics |\n| KVM accelerated | `make run-kvm` | Native speed with KVM (requires `/dev/kvm`) |\n| VGA display | `make run-vga` | Boot with graphical VGA console |\n| SMP (4 cores) | `make run-smp` | Multi-core with AP trampoline |\n| NVMe storage | `make run-nvme` | Attach 64 MB NVMe disk image |\n| Networking | `make run-net` | VirtIO-Net with user-mode networking |\n| GDB debug | `make debug` | GDB server on `localhost:1234` |\n| ISO boot | `make run-iso` | Boot from GRUB2 ISO image |\n| Tests | `make test` | Automated tests with 10s timeout |\n| LOC count | `make loc` | Lines of code per module |\n| Microkernel | `make micro` | Build Ring 0 core only |\n\n---\n\n## Build Process\n\nFajarOS uses a **concatenation build model**: all 163 modular `.fj` source files are\nconcatenated in dependency order into a single `build/combined.fj`, which the Fajar Lang\ncompiler then compiles into a bare-metal ELF binary.\n\n```\n163 .fj files (dependency-ordered)\n        |\n        v\n    make build\n        |\n  [concatenate in Makefile order]\n        |\n        v\n  build/combined.fj (~47,821 lines)\n        |\n  [fj build --target x86_64-none]\n        |\n        v\n  build/fajaros.elf (bare-metal kernel)\n        |\n  [QEMU -kernel]\n        |\n        v\n  FajarOS Nova boots\n```\n\nThe concatenation order matters: constants and memory management come first,\ndrivers and filesystems in the middle, services and applications next,\nand `kernel/main.fj` must always be last.\n\n---\n\n## Comparison with Other Hobby OS Projects\n\n| Feature | FajarOS Nova | [Redox](https://redox-os.org) | [SerenityOS](https://serenityos.org) | [xv6](https://pdos.csail.mit.edu/6.828/xv6) |\n|---------|-------------|------|-----------|-----|\n| **Language** | Fajar Lang (100%) | Rust + asm | C++ + asm | C + asm |\n| **Compile-time safety** | `@kernel/@device/@safe` | Rust borrow checker | None | None |\n| **Privilege enforcement** | Compiler-level | OS-level only | OS-level only | OS-level only |\n| **GPU compute** | VirtIO-GPU + dispatch | Orbital display | LibGL | None |\n| **TCP/IP** | Full stack (RFC 793) | smoltcp | Full stack | None |\n| **ML inference** | MNIST classifier | None | None | None |\n| **ELF loader** | ELF64 + exec | ELF64 | ELF64 | ELF32 |\n| **SMP** | INIT-SIPI-SIPI | SMP | SMP | None (xv6-riscv has SMP) |\n| **Package manager** | Built-in (pkg) | pkgutils | Ports | None |\n| **GDB stub** | Built-in RSP | GDB support | GDB support | GDB support |\n| **Init system** | 16 services, runlevels | init | SystemServer | None |\n| **Lines of code** | 36K (single language) | ~400K (multi-language) | ~600K (multi-language) | ~6K |\n\nFajarOS Nova is unique in that **the compiler itself prevents privilege violations**.\nIn every other OS, a bug in a driver could accidentally access kernel memory or perform\nunauthorized I/O. In FajarOS, the `@kernel` annotation makes such bugs a compile error,\nnot a runtime crash.\n\n---\n\n## Sample Shell Session\n\n```\nnova\u003e uname -a\nFajarOS Nova v3.0.0 Nusantara x86_64 SMP(4) 512MB\n\nnova\u003e cat /proc/cpuinfo\ncpu0: x86_64 @ 2.0 GHz (QEMU)\ncpu1: x86_64 @ 2.0 GHz (AP)\ncpu2: x86_64 @ 2.0 GHz (AP)\ncpu3: x86_64 @ 2.0 GHz (AP)\n\nnova\u003e ls /\nbin  dev  etc  home  mnt  proc  tmp\n\nnova\u003e lspci\n00:00.0 Host bridge\n00:01.0 VGA controller\n00:02.0 Ethernet controller [VirtIO]\n00:03.0 NVMe controller\n\nnova\u003e ps\nPID  STATE   NAME\n  1  running init\n  2  ready   shell\n  3  blocked syslogd\n  4  blocked crond\n\nnova\u003e echo \"Hello from FajarOS!\" \u003e /tmp/hello.txt\nnova\u003e cat /tmp/hello.txt\nHello from FajarOS!\n\nnova\u003e ping 10.0.2.2\nPING 10.0.2.2: 64 bytes, seq=1 ttl=64 time=0.3ms\n\nnova\u003e help | head 5\nFajarOS Nova Shell -- 240+ commands available\nType 'help \u003ccommand\u003e' for details.\n  cat      -- display file contents\n  cd       -- change directory\n  chmod    -- change file permissions\n```\n\n---\n\n## Related Projects\n\n| Project | Description | Link |\n|---------|-------------|------|\n| **Fajar Lang** | The compiler (Rust + Cranelift backend) | [github.com/fajarkraton/fajar-lang](https://github.com/fajarkraton/fajar-lang) |\n| **FajarOS Surya** | ARM64 version for Radxa Dragon Q6A | [github.com/fajarkraton/fajar-os](https://github.com/fajarkraton/fajar-os) |\n\n---\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for development guidelines, module conventions,\nand the build process.\n\n## Security\n\nSee [SECURITY.md](SECURITY.md) for the security model, vulnerability reporting,\nand audit results.\n\n## Code of Conduct\n\nSee [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md). We follow the Contributor Covenant 2.1.\n\n## License\n\nMIT License -- Copyright (c) 2026 Fajar (TaxPrime / PrimeCore.id)\n\nSee [LICENSE](LICENSE) for details.\n\n---\n\n*FajarOS Nova v3.0.0 \"Nusantara\" -- 47,821 LOC | 163 modules | 119 commands (incl. 14 LLM) | 34 syscalls | LLM E2E (SmolLM-135M v5/v6 in kernel) | 100% Fajar Lang*\n*Compiler-enforced safety: if it compiles, it's safe to deploy.*\n*Built with [Fajar Lang](https://github.com/fajarkraton/fajar-lang) + Claude Opus 4.6*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffajarkraton%2Ffajaros-x86","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffajarkraton%2Ffajaros-x86","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffajarkraton%2Ffajaros-x86/lists"}