{"id":16168037,"url":"https://github.com/jasonbrave/panicos","last_synced_at":"2025-03-18T23:30:55.912Z","repository":{"id":49744589,"uuid":"275027916","full_name":"JasonBrave/PanicOS","owner":"JasonBrave","description":"A simple x86 operating system with graphical user space","archived":false,"fork":false,"pushed_at":"2024-01-28T18:57:03.000Z","size":619,"stargazers_count":58,"open_issues_count":0,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-28T13:17:52.466Z","etag":null,"topics":["c-standard-library","dynamic-linking","elf","elf-loader","fat32","kernel","mbr","multiboot","operating-system","osdev","pci","pci-express","pcie","stl","usb","vfs","virtio","virtio-gpu","widget-toolkit","x86"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JasonBrave.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-06-25T22:33:54.000Z","updated_at":"2025-02-24T03:54:34.000Z","dependencies_parsed_at":"2024-10-27T19:19:13.463Z","dependency_job_id":"6b53d021-41f5-4673-b776-d5818cd82368","html_url":"https://github.com/JasonBrave/PanicOS","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JasonBrave%2FPanicOS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JasonBrave%2FPanicOS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JasonBrave%2FPanicOS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JasonBrave%2FPanicOS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JasonBrave","download_url":"https://codeload.github.com/JasonBrave/PanicOS/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243955712,"owners_count":20374373,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["c-standard-library","dynamic-linking","elf","elf-loader","fat32","kernel","mbr","multiboot","operating-system","osdev","pci","pci-express","pcie","stl","usb","vfs","virtio","virtio-gpu","widget-toolkit","x86"],"created_at":"2024-10-10T03:10:13.078Z","updated_at":"2025-03-18T23:30:55.303Z","avatar_url":"https://github.com/JasonBrave.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PanicOS\nA simple operating system for 32-bits x86 PCs.\n\n![PanicOS](https://user-images.githubusercontent.com/40355221/144753051-f3bd442b-8f74-4bd6-b399-73bd82aa9b40.png)\n\n## Features\n\n### Kernel\n* 32-bits x86 support\n* Legacy BIOS and UEFI booting with GRUB2\n* SMP\n* PAE paging (see [pae](https://github.com/JasonBrave/PanicOS/tree/pae) branch)\n* ELF file loading\n* Loadable kernel modules\n* Parallel ATA IDE Controller and Disk driver\n* QEMU Bochs display driver\n* PCI Bus support\n* PCI Express ECAM support\n* PCI MSI and MSI-X interrupt support\n* PS/2 keyboard and mose driver\n* USB Bus support\n* USB Hub driver\n* UHCI USB controller driver\n* VirtIO block device and GPU device driver\n* PC platform RTC and UART driver\n* Virtual filesystem\n* FAT32 filesystem support\n* Master Boot Record partition table support\n* Hardware abstraction layer abstracts block device, display device and HID device\n* Reboot and shutdown\n\n### User Space\n* Dynamic linking\n* C++ global constructor and destructor\n* [C Standard Library](https://github.com/JasonBrave/PanicOS/tree/master/library/libc)\n* [C++ Standard Library including STL](https://github.com/JasonBrave/PanicOS/tree/master/library/libcpp)\n* [C++ object-oriented GUI widget toolkit](https://github.com/JasonBrave/PanicOS/tree/master/library/libgui)\n* POSIX emulation library\n* Window manager\n* Graphical desktop envoironment\n* Various user space programs\n\n## Build Instructions\n\nA build of gcc and binutils with `i686-elf` target triplet is required. `dosfstools` and `mtools` are also required for creating disk image. QEMU with target i686 or x86-64 is required for emulation\n\nRun `make` to create disk image and kernel image, run `make qemu` to start qemu emulation.\n\n## Directory Structure\n* `/boot` Disk image boot sector\n* `/ext` Utility for building out-of-tree kernel modules\n* `/kernel` Operating System Kernel\n* `/kernel/arch/x86` x86 architecture specific code\n* `/kernel/common` kernel common used code\n* `/kernel/core` Kernel core\n* `/kernel/drivers` Kernel built-in device drivers\n* `/kernel/filesystem` Kernel build-in filesystem drivers\n* `/kernel/hal` Kernel hardware abstraction layer\n* `/kernel/proc` Kernel process management\n* `/library` User space libraries\n* `/library/crt` C Runtime (crt0 and crt1)\n* `/library/ld` Dynamic linker\n* `/library/libc` C Standard Library\n* `/library/libcpp` C++ Standard Library\n* `/library/libcpu` CPU abstraction library\n* `/library/libgui` C++ GUI widget toolkit library\n* `/library/libposix` POSIX emulation library\n* `/library/libsys` System call library\n* `/library/libwm` Window manager library\n* `/module/edu` QEMU EDU device driver\n* `/module/hello` Hello World kernel module example\n* `/module/modlib` Kernel module support library\n* `/module/virtgpu` VirtIO GPU driver\n* `/programs/about` Graphical About program\n* `/programs/cat` A program to display context of a text file\n* `/programs/date` A command line utility to display date and time\n* `/programs/desktop` Graphical desktop environment\n* `/programs/devmgr` Device manager\n* `/programs/dir` A program to list files in a directory\n* `/programs/init` Init program\n* `/programs/kmod` A tool to load kernel modules\n* `/programs/lscpu` An utility to display CPU infomation\n* `/programs/lspci` An utility to list PCI (Express) devices\n* `/programs/mkdir` A program for creating directories\n* `/programs/reboot` A program to reboot computer\n* `/programs/rm` A program to delete files\n* `/programs/sh` Shell\n* `/programs/shutdown` A program to shut down computer\n* `/programs/termemu` Graphical terminal emulator\n* `/programs/wm` Graphical window manager\n* `/share` Non-code data\n* `/tools` Tools used in the compiling process\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjasonbrave%2Fpanicos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjasonbrave%2Fpanicos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjasonbrave%2Fpanicos/lists"}